348 lines
9.4 KiB
Python
348 lines
9.4 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):
|
|
from urllib.parse import unquote_plus
|
|
res = unquote_plus(obj.file.url, encoding="utf-8")
|
|
return res
|
|
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']
|
|
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)
|