You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

51 lines
1.9 KiB

from django.db import models
from django.utils.translation import gettext_lazy as _
from django.core.exceptions import ValidationError
from mptt.models import MPTTModel, TreeForeignKey
class HadisSect(models.Model):
class SectType(models.TextChoices):
SHIA = 'shia', _('Shia')
SUNNI = 'sunni', _('Sunni')
sect_type = models.CharField(max_length=10, choices=SectType.choices, unique=True, verbose_name=_('Sect Name'))
title = models.CharField(max_length=256, verbose_name=_('Name'))
is_active = models.BooleanField(default=True, verbose_name=_('Is Active'))
order = models.IntegerField(default=0, verbose_name=_('order'))
def __str__(self):
return f"{self.sect_type}: {self.title}"
class Meta:
verbose_name = _('Hadis Sect')
verbose_name_plural = _('Hadis Sects')
ordering = ('order',)
class HadisCategory(MPTTModel):
class SourceType(models.TextChoices):
QURAN = 'quran', _('Quran')
HADITH = 'hadith', _('Hadith')
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
sect = models.ForeignKey(HadisSect, on_delete=models.PROTECT, verbose_name=_('Sect'), null=False, blank=False)
source_type = models.CharField(max_length=10, choices=SourceType.choices, verbose_name=_('Source Type'))
title = models.CharField(max_length=256, verbose_name=_('Title'))
order = models.IntegerField(default=0, verbose_name=_('order'))
xmind_file = models.FileField(upload_to='hadis/xmind_files/', verbose_name=_('xmind file'), null=True, blank=True)
slug = None
content_type = None
language = None
language_id = None
class Meta:
verbose_name = _('Hadis Category')
verbose_name_plural = _('Hadis Categories')
ordering = ('order',)
def __str__(self):
return f"{self.sect.sect_type}: {self.source_type} - {self.title}"