Files
Aerbim/GeneralApp/admin.py
2023-11-26 18:29:37 +03:00

148 lines
4.3 KiB
Python

from sets.admin import *
from .models import *
from django.contrib import admin
from django.forms import widgets
# from nested_inline.admin import NestedStackedInline, NestedTabularInline, NestedModelAdmin, NestedInline
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
def sets_for_formfield_for_dbfield(field, db_field):
if db_field.name == 'url' or db_field.name == 'name' or db_field.name == 'title' or db_field.name == 'name_plural':
field.widget = widgets.TextInput(attrs={'style': 'width: 30%; height: 20px;'})
if db_field.name == 'description':
field.widget = widgets.Textarea(attrs={'style': 'width: 30%; height: 100px;'})
return field
class Admin_Inline_WidgetForBlock(SuperInlineModelAdmin, Admin_Trans_BaseIconStackedInline):
# class Admin_Inline_WidgetForBlock(Admin_Trans_BaseIconTabularInline, SuperInlineModelAdmin):
def formfield_for_dbfield(self, db_field, request, **kwargs):
field = super(Admin_Inline_WidgetForBlock, self).formfield_for_dbfield(db_field, request, **kwargs)
return sets_for_formfield_for_dbfield(field, db_field)
# return field
model = WidgetForBlock
extra = 0
# fields = ['title', 'description', 'picture', 'bg_color', 'but_title', 'but_color', 'url']
fieldsets = [
(None, {
'classes': [],
'fields': [
('title', 'description', 'picture'),
('bg_color', ),
('but_title', 'but_color'),
('url', 'order'),
]
})
]
class Admin_StackedInline_Block(Admin_Trans_GenericBaseIconStackedInline, SuperInlineModelAdmin):
# class Admin_StackedInline_Block(Admin_Trans_GenericBaseIconStackedInline):
def formfield_for_dbfield(self, db_field, request, **kwargs):
field = super(Admin_StackedInline_Block, self).formfield_for_dbfield(db_field, request, **kwargs)
return sets_for_formfield_for_dbfield(field, db_field)
model = Block
extra = 0
fieldsets = [
(None, {
'classes': [],
'fields': [
('block_type', 'title', 'description', 'picture'),
('bg_color', ),
('but_title', 'but_color'),
('url',),
('child_in_row_count', 'order'),
]
})
]
inlines = [Admin_Inline_WidgetForBlock]
# class Admin_StaticPage(NestedModelAdmin, Admin_Trans_BaseModelViewPage):
class Admin_StaticPage(SuperModelAdmin, Admin_Trans_BaseModelViewPage):
fieldsets = [
(None, {
'classes': ['wide'],
'fields': ('name',
'url',
'title', 'description', 'text',
'picture',
'order',
)
}),
('SEO', {
'classes': ['wide', 'collapse'],
'fields': (
'seo_title', 'seo_description', 'seo_keywords', 'seo_text',
)
}),
]
list_display = [
'id',
'name', 'url', 'title',
'order', 'modifiedDT', 'createDT'
]
list_display_links = ['id']
list_editable = ['order']
list_filter = ['modifiedDT', 'createDT']
search_fields = ['name', 'title']
# filter_horizontal = ['options']
inlines = [Admin_StackedInline_Block]
def has_delete_permission(self, request, obj=None):
if request.user.is_superuser:
return True
if obj.url in ('main', 'spec_technics', 'works'):
return False
admin.site.register(StaticPage,Admin_StaticPage)
class Admin_Block(Admin_Trans_BaseModelViewPage):
inlines = [Admin_StackedInline_Block]
def has_delete_permission(self, request, obj=None):
if request.user.is_superuser:
return True
if obj.name in ('About US', 'machines', 'works'):
return False
admin.site.register(Block,Admin_Block)
class Admin_Option(Admin_BaseModel):
def get_fieldsets(self, request, obj=None):
fieldsets = super(type(self), self).get_fieldsets(request, obj)
fieldsets.insert(
1, ('Контент', {
'classes': ['wide'],
'fields': (
'opt_type', 'prefix', 'value', 'picture'
)
})
)
return fieldsets
admin.site.register(Option,Admin_Option)