Files
Aerbim/GeneralApp/admin.py
2024-07-15 02:22:53 +03:00

346 lines
9.3 KiB
Python

from django import forms
from sets.admin import *
from .models import *
from django.contrib import admin
from django.utils.translation import gettext_lazy as _
# from nested_inline.admin import NestedStackedInline, NestedTabularInline, NestedModelAdmin, NestedInline
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
from django.contrib.admin.models import LogEntry
class LogEntryAdmin(admin.ModelAdmin):
list_display = (
'__str__', 'action_time', 'user', 'content_type', 'object_id', 'object_repr', 'action_flag', 'change_message'
)
list_filter = ('content_type', 'action_flag')
search_fields = ['user__username', 'change_message', 'object_id']
date_hierarchy = 'action_time'
def has_delete_permission(self, request, obj=None):
return False
admin.site.register(LogEntry, LogEntryAdmin)
class Admin_FileUnit(Admin_Trans_BaseModelViewPage):
def fn(self, obj):
return obj.file.filename
fn.short_description = 'Файл'
def fn_full_path(self, obj):
return obj.file.url
fn_full_path.short_description = 'Линк для использования в HTML'
fieldsets = [
(None, {
'classes': [],
'fields': [
# ('name',),
('file',),
# 'image'
'order'
]
})
]
list_display = [
'image_thumb',
'id',
'fn',
'fn_full_path',
# 'title',
'order', 'modifiedDT', 'createDT'
]
list_display_links = ['id', 'image_thumb']
list_editable = ['order']
list_filter = ['modifiedDT', 'createDT']
search_fields = ['file']
admin.site.register(FileUnit, Admin_FileUnit)
class Admin_Inline_WidgetForBlock(SuperInlineModelAdmin, Admin_Trans_BaseIconStackedInline):
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',
'name', 'description', 'text',
'picture',
# 'image'
),
'video_url',
('bg_color', ),
('but_title', 'but_color', 'but_icon'),
('url', 'order'),
]
})
]
class Admin_StackedInline_Block(Admin_Trans_GenericBaseIconStackedInline, SuperInlineModelAdmin):
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',
'name', 'description'),
('picture', ),
('video_url',),
('bg_color', 'bg_image',),
# ('bg_video_url',),
('but_title', 'but_color', 'but_icon'),
('url',),
(
# 'child_in_row_count',
'order',
),
]
})
]
inlines = [Admin_Inline_WidgetForBlock]
class Admin_StaticPage(SuperModelAdmin, Admin_Trans_BaseModelViewPage):
from ServicesApp.admin import Admin_StackedInline_BlockPluginPresentation
from SlidesApp.admin import Admin_StackedInline_Slide
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 = [
'image_thumb',
'id',
'name', 'url',
# 'title',
'order', 'modifiedDT', 'createDT'
]
list_display_links = ['id', 'image_thumb', 'name']
list_editable = ['order']
list_filter = ['modifiedDT', 'createDT']
search_fields = ['name', 'title']
# filter_horizontal = ['options']
inlines = [
Admin_StackedInline_Slide,
Admin_StackedInline_BlockPluginPresentation,
Admin_StackedInline_Block,
# AdminStacked_FAQitem,
]
def has_delete_permission(self, request, obj=None):
if request.user.is_superuser:
return True
if not obj or obj.url in ['main', 'contacts']:
return False
admin.site.register(StaticPage,Admin_StaticPage)
class Admin_Block(Admin_Trans_BaseModelViewPage):
def formfield_for_dbfield(self, db_field, request, **kwargs):
field = super(Admin_Block, self).formfield_for_dbfield(db_field, request, **kwargs)
return sets_for_formfield_for_dbfield(field, db_field)
def obj_name(self, obj):
try:
return obj.content_object
except Exception as e:
return obj.content_object.id
obj_name.short_description = _('Название')
obj_name.allow_tags = True
fieldsets = [
(None, {
'classes': [],
'fields': [
('block_type',
# 'title',
'name', 'description'),
('picture',),
('video_url',),
('bg_color', 'bg_image'),
# ('bg_video_url', ),
('but_title', 'but_color', 'but_icon'),
('url',),
(
# 'child_in_row_count',
'order',
),
]
})
]
inlines = [Admin_Inline_WidgetForBlock]
list_display = [
'name', 'block_type', 'enable', 'content_type', 'content_object', 'order',
'object_id', 'createDT', 'modifiedDT'
]
list_editable = ['enable', 'order']
search_fields = ['name']
list_filter = ['enable', 'content_type', 'block_type']
ordering = ['content_type', 'object_id', 'order']
def has_delete_permission(self, request, obj=None):
if request.user.is_superuser:
return True
if not obj or obj.url in ['main', 'contacts']:
return False
def has_add_permission(self, request):
return False
admin.site.register(Block, Admin_Block)
class Admin_Option(Admin_Trans_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
fieldsets = [
(_('Контент'), {
'classes': ['wide'],
'fields': (
'name', 'opt_type', 'order', 'prefix', 'value', 'picture'
)
}),
]
list_display = ['image_thumb', 'opt_type', 'name', 'order', 'value', 'prefix']
list_editable = ['value', 'prefix', 'order']
list_filter = ['opt_type']
admin.site.register(Option,Admin_Option)
class AdminTabular_ContactModel(Admin_Trans_BaseIconTabularInline):
fields = [
'name', 'contact_type', 'contact_label', 'contact_prefix', 'contact_data', 'order'
]
model = Contact
extra = 1
ordering = ['order','contact_type', 'contact_label']
class Admin_Office(Admin_Trans_BaseModelViewPage):
fieldsets = [
(None, {
'classes': ['wide'],
'fields': (
# 'main_office',
'city',
'address',
'picture',
(
'work_time_from', 'work_time_to',
'workTime',
),
# ('legal_name', 'unp', 'legal_address', 'urInfo'),
# 'fullContactInfo',
# 'footer_info',
# 'gps_longitude',
# 'gps_latitude',
# 'map_code'
)
}),
]
save_on_top = True
# prepopulated_fields = {"url": ("name",)}
list_display = [
'image_thumb', 'id', 'enable', 'order', 'city', 'address', 'work_time_from', 'work_time_to',
# 'main_office',
'modifiedDT', 'createDT'
]
list_editable = [
# 'work_time_from', 'work_time_to',
# 'main_office',
'enable',
'order'
]
list_display_links = ['id', 'city', 'address']
search_fields = ['city', 'address', 'id']
list_filter = [
'enable',
# 'main_office',
'modifiedDT', 'createDT'
]
inlines = [AdminTabular_ContactModel]
# def has_delete_permission(self, request, obj=None):
# return not Office.objects.all().count() < 2
admin.site.register(Office, Admin_Office)