You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.6 KiB
53 lines
1.6 KiB
from django.contrib import admin
|
|
from django.utils.translation import gettext_lazy as _
|
|
from django.utils.html import format_html
|
|
from unfold.admin import ModelAdmin
|
|
from unfold.decorators import display, action
|
|
from mptt.admin import DraggableMPTTAdmin
|
|
|
|
from utils.admin import project_admin_site
|
|
from ..models import HadisSect, HadisCategory
|
|
|
|
|
|
class HadisSectAdmin(ModelAdmin):
|
|
"""Admin for HadisSect model"""
|
|
list_display = ('sect_type', 'title', 'is_active', 'order')
|
|
list_filter = ('sect_type', 'is_active')
|
|
search_fields = ('title',)
|
|
ordering = ('order',)
|
|
|
|
fieldsets = (
|
|
(None, {
|
|
'fields': ('sect_type', 'title', 'is_active', 'order')
|
|
}),
|
|
)
|
|
|
|
|
|
class HadisCategoryAdmin(DraggableMPTTAdmin, ModelAdmin):
|
|
"""Admin for HadisCategory model with MPTT tree support"""
|
|
list_display = ('indented_title', 'sect', 'source_type', 'order')
|
|
list_display_links = ('indented_title',)
|
|
list_filter = ('sect', 'source_type')
|
|
search_fields = ('title',)
|
|
ordering = ('tree_id', 'lft')
|
|
|
|
|
|
fieldsets = (
|
|
(None, {
|
|
'fields': ('parent', 'sect', 'source_type', 'title', 'order')
|
|
}),
|
|
(_('Files'), {
|
|
'fields': ('xmind_file',),
|
|
'classes': ('collapse',)
|
|
}),
|
|
)
|
|
|
|
def indented_title(self, instance):
|
|
"""Display indented title for tree structure"""
|
|
return f"{'—' * instance.level} {instance.title}"
|
|
indented_title.short_description = _('Title')
|
|
|
|
|
|
# Register models with the custom admin site
|
|
project_admin_site.register(HadisSect, HadisSectAdmin)
|
|
project_admin_site.register(HadisCategory, HadisCategoryAdmin)
|