diff --git a/apps/hadis/admin/category.py b/apps/hadis/admin/category.py index e26b131..ed4ea3f 100644 --- a/apps/hadis/admin/category.py +++ b/apps/hadis/admin/category.py @@ -11,7 +11,7 @@ from ..models import HadisSect, HadisCategory class HadisSectAdmin(ModelAdmin): """Admin for HadisSect model""" - list_display = ('sect_type', 'title', 'is_active', 'order') + list_display = ('sect_type', 'display_title', 'is_active', 'order') list_filter = ('sect_type', 'is_active') search_fields = ('title',) ordering = ('order',) @@ -22,6 +22,15 @@ class HadisSectAdmin(ModelAdmin): }), ) + def display_title(self, obj): + """Extracts text from the title JSON list""" + try: + return obj.title[0]['text'] + except (IndexError, KeyError, TypeError, AttributeError): + return "No Title" + + display_title.short_description = _('Title') + class HadisCategoryAdmin(DraggableMPTTAdmin, ModelAdmin): """Admin for HadisCategory model with MPTT tree support""" @@ -43,8 +52,17 @@ class HadisCategoryAdmin(DraggableMPTTAdmin, ModelAdmin): ) def indented_title(self, instance): - """Display indented title for tree structure""" - return f"{'—' * instance.level} {instance.title}" + """Display indented title for tree structure using JSON text""" + try: + # Extract text from the first element of the title list + title_text = instance.title[0]['text'] + except (IndexError, KeyError, TypeError, AttributeError): + title_text = "No Title" + + # DraggableMPTTAdmin works best if you don't mess with the HTML too much, + # but here is your requested dash indentation style combined with clean text: + return f"{'—' * instance.level} {title_text}" + indented_title.short_description = _('Title') diff --git a/apps/hadis/admin/reference.py b/apps/hadis/admin/reference.py index 3cc9bf4..f85d9aa 100644 --- a/apps/hadis/admin/reference.py +++ b/apps/hadis/admin/reference.py @@ -115,8 +115,8 @@ class BookAuthorAdmin(ModelAdmin): return first.get('text', '-') return '-' -@admin.register(BookReferenceImage) -class BookReferenceImageAdmin(admin.ModelAdmin): + +class BookReferenceImageAdmin(ModelAdmin): # Display the custom string, plus the raw order and book link for convenience list_display = ("display_name", "order", "book_reference") diff --git a/apps/hadis/models/category.py b/apps/hadis/models/category.py index 9ba3d1e..202ad4d 100644 --- a/apps/hadis/models/category.py +++ b/apps/hadis/models/category.py @@ -17,7 +17,7 @@ class HadisSect(models.Model): order = models.IntegerField(default=0, verbose_name=_('order')) def __str__(self): - return f"{self.sect_type}: {self.title}" + return f"{self.sect_type}: {self.title[0]['text']}" def get_title(self,lang): """ @@ -93,7 +93,8 @@ class HadisCategory(MPTTModel): def save(self, *args, **kwargs): self.full_clean() if not self.slug: - base_slug = slugify(self.title, allow_unicode=True) + title = self.title[0]['text'] + base_slug = slugify(title, allow_unicode=True) slug = base_slug while HadisCategory.objects.filter(slug=slug).exclude(pk=self.pk).exists(): slug = f"{base_slug}" @@ -108,7 +109,7 @@ class HadisCategory(MPTTModel): ordering = ('order',) def __str__(self): - return f"{self.sect.sect_type}: {self.source_type} - {self.title}" + return f"{self.sect.sect_type}: {self.source_type} - {self.title[0]['text']}" def get_title(self,lang): """ diff --git a/apps/hadis/serializers/category.py b/apps/hadis/serializers/category.py index 3ce4b7e..5d32c1a 100644 --- a/apps/hadis/serializers/category.py +++ b/apps/hadis/serializers/category.py @@ -1,8 +1,6 @@ -from dataclasses import fields -from turtle import title from rest_framework import serializers from django.utils.translation import gettext_lazy as _ -from django.db.models import Count +# from django.db.models import Count from ..models import HadisSect, HadisCategory, Hadis , HadisCategory diff --git a/apps/hadis/serializers/hadis.py b/apps/hadis/serializers/hadis.py index ac649de..8a1bc9c 100644 --- a/apps/hadis/serializers/hadis.py +++ b/apps/hadis/serializers/hadis.py @@ -1,7 +1,6 @@ from rest_framework import serializers from django.utils.translation import gettext_lazy as _ from rest_framework.fields import SerializerMethodField -from urllib3 import fields from .category import LocalizedField from ..models import ( @@ -9,7 +8,6 @@ from ..models import ( HadisReference, ReferenceImage, Transmitters, HadisCollection, TransmitterOpinion, TransmitterOriginalText, BookReference, BookReferenceImage, BookAuthor, HadisCorrection ) -from apps.library.serializers import BookSerializer