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

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)