Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class FilesAdminInline(admin.TabularInline):
- model = Files
- extra = 0
- """
- Available presets:
- TEMPLATE_NAMES.template_name: [],
- TEMPLATE_NAMES.template_name: ['', ['field1', 'field2']],
- TEMPLATE_NAMES.template_name: ['', [], [inline1, inline2]],
- TEMPLATE_NAMES.template_name: ['', ['field1', 'field2'], [inline1, inline2]],
- TEMPLATE_NAMES.template_name: ['tab_name', ['field1', 'field2'], [inline1, inline2]],
- """
- presets = {
- TEMPLATE_NAMES.base: ['', ['html']],
- TEMPLATE_NAMES.about: ['', ['html'], [FilesAdminInline]],
- TEMPLATE_NAMES.proprietors: [],
- TEMPLATE_NAMES.often_questions: ['', [], []],
- TEMPLATE_NAMES.contacts: [],
- }
- @admin.register(BaseTemplateModel)
- class BaseTemplateModelAdmin(admin.ModelAdmin):
- list_display = ['title', 'slug', 'template_name', 'get_href']
- def update_fieldsets(self, _fieldsets, _preset):
- names = [tab[0] for tab in _fieldsets if len(tab)]
- _name = _preset[0] if len(_preset) else ''
- _fields = _preset[1] if len(_preset) > 1 else []
- self.inlines = _preset[2] if len(_preset) > 2 else []
- if _name not in names:
- return _fieldsets.append([_name, {'fields': _fields}])
- if _fields:
- _fieldsets[names.index(_name)][1]['fields'].extend(_fields)
- return _fieldsets
- def get_fieldsets(self, request, obj=None):
- fieldsets = [['', {'fields': ['template_name', 'slug', 'background', 'title']}]]
- if obj:
- fieldsets[0][1]['fields'].append('get_link')
- self.readonly_fields += ('get_link',)
- self.update_fieldsets(fieldsets, presets[obj.template_name])
- return fieldsets
- def get_link(self, obj):
- return mark_safe(f'<a href="{obj.get_absolute_url()}">{_("Перейти")}</a>')
- get_link.short_description = 'Ссылка'
- get_link.allow_tags = True
- def get_href(self, obj):
- return obj.get_absolute_url()
- get_href.short_description = 'Ссылки'
- get_href.allow_tags = True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement