Files
Aerbim/DocsApp/admin.py
2024-07-11 15:06:06 +03:00

148 lines
3.6 KiB
Python

from django.contrib import admin
from sets.admin import *
from .models import *
from BaseModels.admin_utils import Admin_BaseIconModel
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
from django.utils.translation import gettext as _
from django import forms
from django.utils.text import slugify
class DocArtForm(forms.ModelForm):
class Meta:
model = DocArt
fields = '__all__'
def __init__(self, *args, **kwargs):
super(DocArtForm, self).__init__(*args, **kwargs)
self.fields['parent'].queryset = DocArt.objects.exclude(id__exact=self.instance.id)
class Admin_DocArt(SuperModelAdmin, Admin_Trans_BaseModelViewPage):
form = DocArtForm
def show_versions(self, obj):
versions = obj.versions.filter(enable=True).values_list('name', flat=True)
if versions:
return ' - '.join(versions)
return '-'
show_versions.short_description = _('Версии')
fieldsets = [
(None, {
'classes': ['wide'],
'fields': (
'name', 'url',
'enable',
'parent',
'versions',
'order',
# 'title',
# 'description',
'text',
# 'picture',
)
}),
# ('SEO', {
# 'classes': ['wide', 'collapse'],
# 'fields': (
# 'seo_title', 'seo_description', 'seo_keywords', 'seo_text',
# )
# }),
]
list_display = [
'id', 'enable',
'name', 'url',
'show_versions', 'parent',
'order', 'modifiedDT', 'createDT'
]
ordering = ['versions', 'order', 'name']
prepopulated_fields = {"url": ("name_en",)}
list_display_links = ['id', 'name']
list_editable = ['enable', 'order']
filter_horizontal = ['versions']
list_filter = [
'versions',
'modifiedDT', 'createDT',
]
search_fields = ['name', 'title']
# filter_horizontal = ['options']
# inlines = [Admin_StackedInline_Block]
actions = ["create_copy_arts"]
@admin.action(description=_("Создать копии выбранных статей"))
def create_copy_arts(self, request, queryset):
from BaseModels.functions import create_url
for obj in queryset:
obj.name += '-копия'
obj.url = create_url({'name': obj.name}, DocArt)
obj.pk = None
obj.save()
self.message_user(
request,
_('Копии успешно созданы')
)
admin.site.register(DocArt, Admin_DocArt)
class Admin_DocVersion(Admin_BaseIconModel):
fieldsets = [
(None, {
'classes': ['wide'],
'fields': (
'name', 'url', 'enable', 'order',
)
}),
# ('SEO', {
# 'classes': ['wide', 'collapse'],
# 'fields': (
# 'seo_title', 'seo_description', 'seo_keywords', 'seo_text',
# )
# }),
]
list_display = [
'id', 'enable',
'name', 'url',
# 'title',
'order', 'modifiedDT', 'createDT'
]
# ordering = ['section', 'parent_service', 'order']
# prepopulated_fields = {"url": ("name",)}
list_display_links = ['id', 'name']
list_editable = ['enable', 'order']
list_filter = [
# 'section', 'parent_service',
'modifiedDT', 'createDT',
]
search_fields = ['name']
# filter_horizontal = ['options']
# inlines = [Admin_StackedInline_Block]
admin.site.register(DocVersion, Admin_DocVersion)