From 92db0071044fea151ffb30a77719baba79c47053 Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Mon, 13 Apr 2026 11:06:36 +0330 Subject: [PATCH] str enhancements fot hadith apps multilanguage fields. --- apps/hadis/models/category.py | 6 ++++-- apps/hadis/models/hadis.py | 19 +++++++++++-------- apps/hadis/models/reference.py | 14 ++++++++------ apps/hadis/models/transmitter.py | 20 ++++++++++++-------- 4 files changed, 35 insertions(+), 24 deletions(-) diff --git a/apps/hadis/models/category.py b/apps/hadis/models/category.py index 11e67f3..9dcf51c 100644 --- a/apps/hadis/models/category.py +++ b/apps/hadis/models/category.py @@ -18,7 +18,8 @@ class HadisSect(models.Model): order = models.IntegerField(default=0, verbose_name=_('order')) def __str__(self): - return f"{self.sect_type}: {self.title[0]['text']}" + title = self.title[0]['text'] if self.title else "Untitled Sect" + return f"{self.sect_type}: {title}" def get_title(self,lang): """ @@ -174,7 +175,8 @@ class HadisCategory(MPTTModel): ordering = ('order',) def __str__(self): - return f"{self.sect.sect_type}: {self.source_type} - {self.title[0]['text']}" + title = self.title[0]['text'] if self.title else "Untitled Category" + return f"{self.sect.sect_type}: {self.source_type} - {title}" def get_title(self,lang): """ diff --git a/apps/hadis/models/hadis.py b/apps/hadis/models/hadis.py index 69eff04..bf68b07 100644 --- a/apps/hadis/models/hadis.py +++ b/apps/hadis/models/hadis.py @@ -78,7 +78,7 @@ class HadisCollection(models.Model): super().save(*args, **kwargs) def __str__(self): - return self.title[0]['text'] + return self.title[0]['text'] if self.title else "Untitled Collection" def get_title(self,lang): """ @@ -133,7 +133,7 @@ class HadisInCollection(models.Model): unique_together = ('hadis', 'collection') def __str__(self): - return f"{self.collection.title[0]['text']} - {self.hadis.number}" + return f"{self.collection} - {self.hadis.number}" class HadisTag(models.Model): @@ -143,7 +143,7 @@ class HadisTag(models.Model): updated_at = models.DateTimeField(auto_now=True, verbose_name=_('updated at')) def __str__(self): - return f"{self.title[0]['text']}" + return self.title[0]['text'] if self.title else "Untagged" def get_title(self,lang): """ @@ -231,7 +231,7 @@ class HadisStatus(ColorPaletteMixin,models.Model): super().save(*args, **kwargs) def __str__(self): - return self.title[0]['text'] + return self.title[0]['text'] if self.title else str(self.id) def get_title(self,lang): """ @@ -286,7 +286,8 @@ class Hadis(models.Model): embedded_in = models.JSONField(default=list, blank=True) def __str__(self): - return f"{self.number} - {self.title[0]['text']}" if self.title else f"Hadis {self.number}" + title = self.title[0]['text'] if self.title else f"Hadis {self.number}" + return f"{self.number} - {title}" def save(self, *args, **kwargs): # Generate slug if not already set or if slug is empty @@ -449,7 +450,8 @@ class HadisReference(models.Model): return None def __str__(self): - return f'{self.hadis.number}-{self.book_reference.title[0]["text"] if self.book_reference else "No Book Reference"}' + book_title = str(self.book_reference) if self.book_reference else "No Book Reference" + return f'{self.hadis.number}-{book_title}' class ReferenceImage(models.Model): reference = models.ForeignKey(HadisReference,related_name = 'images', verbose_name="Hadis Reference", on_delete=models.CASCADE) @@ -470,7 +472,7 @@ class ReferenceImage(models.Model): verbose_name_plural = _('Reference Images') def __str__(self): - return f'{self.reference.book_reference.title[0]["text"]}-{self.id}' + return f'{self.reference}-{self.id}' def save(self, *args, **kwargs): if ReferenceImage.objects.filter(reference=self.reference, priority=self.priority).exists(): @@ -498,7 +500,8 @@ class HadisCorrection(models.Model): ordering = ("-created_at",) def __str__(self): - return f"{self.hadis.number} - {self.title[0]['text']}" + title = self.title[0]['text'] if self.title else "No Title" + return f"{self.hadis.number} - {title}" def save(self, *args, **kwargs): """ diff --git a/apps/hadis/models/reference.py b/apps/hadis/models/reference.py index 0981a5b..46e6bff 100644 --- a/apps/hadis/models/reference.py +++ b/apps/hadis/models/reference.py @@ -10,7 +10,7 @@ class BookSubjectArea(models.Model): updated_at = models.DateTimeField(auto_now=True, verbose_name=_('updated at')) def __str__(self): - return f"{self.title[0]['text']}" + return self.title[0]['text'] if self.title else str(self.id) def get_title(self,lang): """ @@ -36,7 +36,7 @@ class BookType(models.Model): updated_at = models.DateTimeField(auto_now=True, verbose_name=_('updated at')) def __str__(self): - return f"{self.title[0]['text']}" + return self.title[0]['text'] if self.title else str(self.id) def get_title(self,lang): """ @@ -92,7 +92,7 @@ class BookReference(models.Model): ordering = ('-created_at',) def __str__(self): - return self.title[0]['text'] + return self.title[0]['text'] if self.title else "Untitled Reference" def _get_json_field(self, field_name: str, lang: Optional[str]=None , fallback: str = "en"): """ @@ -239,7 +239,7 @@ class BookReferenceImage(models.Model): return None def __str__(self): - return f"{self.book_reference.title[0]['text']} - Image {self.order}" + return f"{self.book_reference} - Image {self.order}" class BookAuthor(models.Model): @@ -267,7 +267,7 @@ class BookAuthor(models.Model): ordering = ['name'] def __str__(self): - return self.name[0]['text'] + return self.name[0]['text'] if self.name else "Unknown Author" def get_name(self,lang): """ @@ -310,7 +310,9 @@ class BookAttribute(models.Model): ordering = ['title'] def __str__(self): - return f"{self.title[0]['text']}: {self.value[0]['text']}" + title = self.title[0]['text'] if self.title else "No Title" + value = self.value[0]['text'] if self.value else "No Value" + return f"{title}: {value}" def get_title(self,lang): """ diff --git a/apps/hadis/models/transmitter.py b/apps/hadis/models/transmitter.py index cf510fa..2ca3ece 100644 --- a/apps/hadis/models/transmitter.py +++ b/apps/hadis/models/transmitter.py @@ -30,7 +30,8 @@ class NarratorLayer(models.Model): ordering = ['number'] def __str__(self): - return f"{_('Layer')} {self.number} - {self.name[0]['text']}" + name = self.name[0]['text'] if self.name else f"Layer {self.number}" + return f"{_('Layer')} {self.number} - {name}" def get_description(self,lang): """ @@ -184,7 +185,7 @@ class TransmitterReliability(ColorPaletteMixin, models.Model): super().save(*args, **kwargs) def __str__(self): - return self.title[0]['text'] + return self.title[0]['text'] if self.title else str(self.id) def get_title(self,lang): """ @@ -403,8 +404,9 @@ class Transmitters(models.Model): def __str__(self): - name = self.full_name[0] - return name.get('text') + if self.full_name and len(self.full_name) > 0: + return self.full_name[0].get('text', str(self.id)) + return str(self.id) @@ -460,7 +462,7 @@ class HadisTransmitter(models.Model): def __str__(self): layer_info = f" - {self.narrator_layer}" if self.narrator_layer else "" - return f'{self.hadis.number} - {self.transmitter.full_name} ({self.order}){layer_info}' + return f'{self.hadis.number} - {self.transmitter} ({self.order}){layer_info}' class OpinionStatus(ColorPaletteMixin, models.Model): @@ -525,7 +527,7 @@ class OpinionStatus(ColorPaletteMixin, models.Model): super().save(*args, **kwargs) def __str__(self): - return self.title[0]['text'] + return self.title[0]['text'] if self.title else str(self.id) def get_title(self,lang): """ @@ -588,7 +590,8 @@ class TransmitterOpinion(models.Model): ordering = ('-created_at',) def __str__(self): - return f"{self.scholar_name[0]['text']}'s opinion on {self.transmitter.full_name[0]['text']} ({self.status})" + scholar = self.scholar_name[0]['text'] if self.scholar_name else "Unknown Scholar" + return f"{scholar}'s opinion on {self.transmitter} ({self.status})" def get_scholar_name(self,lang): """ @@ -647,7 +650,8 @@ class TransmitterOriginalText(models.Model): verbose_name_plural = _('Transmitter Original Text') def __str__(self): - return f"{self.title[0]['text']} by {self.transmitter.full_name[0]['text']}" + title = self.title[0]['text'] if self.title else "Untitled" + return f"{title} by {self.transmitter}" def save(self, *args, **kwargs): """