Browse Source

str enhancements fot hadith apps multilanguage fields.

master
Mohsen Taba 1 month ago
parent
commit
92db007104
  1. 6
      apps/hadis/models/category.py
  2. 19
      apps/hadis/models/hadis.py
  3. 14
      apps/hadis/models/reference.py
  4. 20
      apps/hadis/models/transmitter.py

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

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

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

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

Loading…
Cancel
Save