from django.db import models from django.utils.translation import gettext_lazy as _ from filer.fields.image import FilerImageField class Transmitters(models.Model): full_name = models.CharField(max_length=255, verbose_name=_('full name')) birth_year_hijri = models.IntegerField(verbose_name=_("Birth Year (Hijri)"), null=True, blank=True) death_year_hijri = models.IntegerField(verbose_name=_("Death Year (Hijri)"), null=True, blank=True) description = models.TextField(blank=True, null=True, verbose_name=_("Description")) thumbnail = FilerImageField( related_name="+", on_delete=models.CASCADE, help_text=_('image allowed'), null=True, blank=True ) created_at = models.DateTimeField(auto_now_add=True, verbose_name=_('created at')) updated_at = models.DateTimeField(auto_now=True, verbose_name=_('updated at')) class Meta: verbose_name = _('Transmitter') verbose_name_plural = _('Transmitters') ordering = ('full_name',) def __str__(self): return self.full_name class HadisTransmitter(models.Model): hadis = models.ForeignKey( "hadis.Hadis", on_delete=models.CASCADE, verbose_name=_('hadis'), related_name='transmitters' ) transmitter = models.ForeignKey( Transmitters, on_delete=models.CASCADE, verbose_name=_('transmitter'), related_name='hadises', null=True, blank=True, help_text=_('Leave empty if this represents a gap in the chain') ) status = models.ForeignKey( "hadis.HadisStatus", on_delete=models.SET_NULL, verbose_name=_('status'), related_name='transmitters', null=True, blank=True ) order = models.PositiveIntegerField( default=0, verbose_name=_('Order'), help_text=_('Order in the chain of transmission') ) is_gap = models.BooleanField( default=False, verbose_name=_('Is Gap'), help_text=_('Check this if this represents a gap in the transmission chain') ) created_at = models.DateTimeField(auto_now_add=True, verbose_name=_('created at')) class Meta: verbose_name = _('Hadis Transmitter') verbose_name_plural = _('Hadis Transmitters') ordering = ('hadis', 'order') unique_together = ('hadis', 'transmitter', 'order') def __str__(self): return f'{self.hadis.number} - {self.transmitter.full_name if self.transmitter else "Gap"} ({self.order})'