from django.db import models from django.utils.translation import gettext_lazy as _ from django.core.exceptions import ValidationError from filer.fields.image import FilerImageField class Transmitters(models.Model): full_name = models.CharField(max_length=255) birth_year_hijri = models.IntegerField(verbose_name="Birth Year (Hijri)") death_year_hijri = models.IntegerField(verbose_name="Death Year (Hijri)") description = models.TextField(blank=True, null=True, verbose_name="Description") status = models.CharField(max_length=50, verbose_name=_('status')) status_color = models.CharField(max_length=25, verbose_name=_('Display Status Color')) thumbnail = FilerImageField(related_name="+", on_delete=models.CASCADE, help_text=_( 'image allowed' ), null=True, blank=True) 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' ) description = models.TextField(verbose_name=_('description'), blank=True, null=True) order = models.PositiveIntegerField( default=0, verbose_name=_('Order'), help_text=_('Order in the chain of transmission') ) 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} ({self.order})'