|
|
|
@ -254,10 +254,33 @@ class Hadis(LowercaseSlugMixin, models.Model): |
|
|
|
|
|
|
|
return False |
|
|
|
|
|
|
|
@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): |
|
|
|
self.clean() |
|
|
|
|
|
|
|
# Auto-fill title from the first source (book reference) if empty |
|
|
|
if not self._has_localized_value(self.title): |
|
|
|
self.auto_populate_title() |
|
|
|
|
|
|
|
# Automatically generate or update smart slug when title changes |
|
|
|
from utils.slug import build_slug_for_instance |
|
|
|
build_slug_for_instance(self, source_field='title') |
|
|
|
|