|
|
|
@ -525,7 +525,29 @@ class HadisCorrection(models.Model): |
|
|
|
title = self.title[0]['text'] if self.title else "No 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): |
|
|
|
if not self._has_localized_value(self.title): |
|
|
|
self.auto_populate_title() |
|
|
|
# Generate smart slug |
|
|
|
from utils.slug import build_slug_for_instance |
|
|
|
build_slug_for_instance(self, source_field='title') |
|
|
|
@ -605,7 +627,32 @@ class HadisInterpretation(models.Model): |
|
|
|
verbose_name = _("Hadis Interpretation") |
|
|
|
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): |
|
|
|
|
|
|
|
# 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: |
|
|
|
self.slug = self.category.slug |
|
|
|
|