Browse Source

delete junk models , admin category fixed

master
Mohsen Taba 5 months ago
parent
commit
7daae69f7a
  1. 24
      apps/hadis/admin/category.py
  2. 4
      apps/hadis/admin/reference.py
  3. 7
      apps/hadis/models/category.py
  4. 4
      apps/hadis/serializers/category.py
  5. 2
      apps/hadis/serializers/hadis.py

24
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')

4
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")

7
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):
"""

4
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

2
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

Loading…
Cancel
Save