Browse Source

feat(hadis):corrections and interpretations auto complete title logic added and enhanced.

master
Mohsen Taba 1 week ago
parent
commit
610d3c69c6
  1. 47
      apps/hadis/models/hadis.py
  2. 3915
      apps/hadis/serializers/serializers_admin.py

47
apps/hadis/models/hadis.py

@ -525,7 +525,29 @@ class HadisCorrection(models.Model):
title = self.title[0]['text'] if self.title else "No Title" title = self.title[0]['text'] if self.title else "No Title"
return f"{self.hadis.number} - {title}" return f"{self.hadis.number} - {title}"
@staticmethod
def _has_localized_value(value):
return isinstance(value, list) and any(
isinstance(x, dict) and str(x.get('text', '') or x.get('title', '')).strip()
for x in value
)
def auto_populate_title(self):
"""
Auto-fills self.title if empty, using the title of the first linked BookReference (source).
"""
if self._has_localized_value(self.title):
return False
if self.pk:
ref = self.references.filter(book_reference__isnull=False).select_related('book_reference').order_by('id').first()
if ref and ref.book_reference and self._has_localized_value(ref.book_reference.title):
self.title = ref.book_reference.title
return True
return False
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
if not self._has_localized_value(self.title):
self.auto_populate_title()
# Generate smart slug # Generate smart slug
from utils.slug import build_slug_for_instance from utils.slug import build_slug_for_instance
build_slug_for_instance(self, source_field='title') build_slug_for_instance(self, source_field='title')
@ -605,7 +627,32 @@ class HadisInterpretation(models.Model):
verbose_name = _("Hadis Interpretation") verbose_name = _("Hadis Interpretation")
verbose_name_plural = _("Hadis Interpretations") verbose_name_plural = _("Hadis Interpretations")
@staticmethod
def _has_localized_value(value):
return isinstance(value, list) and any(
isinstance(x, dict) and str(x.get('text', '') or x.get('title', '')).strip()
for x in value
)
def auto_populate_title(self):
"""
Auto-fills self.title if empty, using the title of the first linked BookReference (source).
"""
if self._has_localized_value(self.title):
return False
if self.pk:
ref = self.references.filter(book_reference__isnull=False).select_related('book_reference').order_by('id').first()
if ref and ref.book_reference and self._has_localized_value(ref.book_reference.title):
self.title = ref.book_reference.title
return True
return False
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
# Auto-fill title from the first source (book reference) if empty
if not self._has_localized_value(self.title):
self.auto_populate_title()
# 👈 ست کردن اسلاگ تفسیر برابر با اسلاگ کتگوری # 👈 ست کردن اسلاگ تفسیر برابر با اسلاگ کتگوری
if self.category and self.category.slug: if self.category and self.category.slug:
self.slug = self.category.slug self.slug = self.category.slug

3915
apps/hadis/serializers/serializers_admin.py
File diff suppressed because it is too large
View File

Loading…
Cancel
Save