|
|
@ -175,6 +175,7 @@ class Hadis(LowercaseSlugMixin, models.Model): |
|
|
links = models.JSONField(verbose_name=_('links'), null=True, blank=True, default=dict) |
|
|
links = models.JSONField(verbose_name=_('links'), null=True, blank=True, default=dict) |
|
|
tags = models.ManyToManyField("HadisTag", related_name="hadis_overview", verbose_name=_('tags'), blank=True) |
|
|
tags = models.ManyToManyField("HadisTag", related_name="hadis_overview", verbose_name=_('tags'), blank=True) |
|
|
|
|
|
|
|
|
|
|
|
#فیلد شر لینک رو بعد حذف باید کنیم تا ای پی ای کرش نکنه. |
|
|
share_link = models.CharField(max_length=255, verbose_name=_('share link'), null=True, blank=True) |
|
|
share_link = models.CharField(max_length=255, verbose_name=_('share link'), null=True, blank=True) |
|
|
explanation = models.JSONField(default = list , verbose_name=_('Explanation')) |
|
|
explanation = models.JSONField(default = list , verbose_name=_('Explanation')) |
|
|
# explanations = models.JSONField(default = list , verbose_name=_('Explanations')) |
|
|
# explanations = models.JSONField(default = list , verbose_name=_('Explanations')) |
|
|
@ -197,6 +198,12 @@ class Hadis(LowercaseSlugMixin, models.Model): |
|
|
title = f"Hadis {self.number}" |
|
|
title = f"Hadis {self.number}" |
|
|
return f"{self.number} - {title}" |
|
|
return f"{self.number} - {title}" |
|
|
|
|
|
|
|
|
|
|
|
@property |
|
|
|
|
|
def share_link(self): |
|
|
|
|
|
if self.slug: |
|
|
|
|
|
return f"{settings.DOVODI_DOMAIN}/arguments/hadith/{self.slug}" |
|
|
|
|
|
return None |
|
|
|
|
|
|
|
|
def clean(self): |
|
|
def clean(self): |
|
|
super().clean() |
|
|
super().clean() |
|
|
if self.category: |
|
|
if self.category: |
|
|
@ -299,7 +306,7 @@ class Hadis(LowercaseSlugMixin, models.Model): |
|
|
# Lowercase the slug and generate/update share_link before saving |
|
|
# Lowercase the slug and generate/update share_link before saving |
|
|
if self.slug: |
|
|
if self.slug: |
|
|
self.slug = self.slug.lower() |
|
|
self.slug = self.slug.lower() |
|
|
self.share_link = f"{settings.DOVODI_DOMAIN}/arguments/hadith/{self.slug}" |
|
|
|
|
|
|
|
|
# self.share_link = f"{settings.DOVODI_DOMAIN}/arguments/hadith/{self.slug}" |
|
|
|
|
|
|
|
|
# Reset embedded_in if text or translation changes |
|
|
# Reset embedded_in if text or translation changes |
|
|
if self.pk: |
|
|
if self.pk: |
|
|
@ -504,6 +511,7 @@ class HadisCorrection(models.Model): |
|
|
priority = models.IntegerField(default=0, verbose_name=_('priority')) |
|
|
priority = models.IntegerField(default=0, verbose_name=_('priority')) |
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name=_("created at")) |
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name=_("created at")) |
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name=_("updated at")) |
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name=_("updated at")) |
|
|
|
|
|
#حذف شه بعد |
|
|
share_link = models.CharField(max_length=255, verbose_name=_('share link'), null=True, blank=True) |
|
|
share_link = models.CharField(max_length=255, verbose_name=_('share link'), null=True, blank=True) |
|
|
embedded_in = models.JSONField(default=list, blank=True) |
|
|
embedded_in = models.JSONField(default=list, blank=True) |
|
|
normalized_text = models.TextField(blank=True, null=True, verbose_name=_('normalized text for search')) |
|
|
normalized_text = models.TextField(blank=True, null=True, verbose_name=_('normalized text for search')) |
|
|
@ -522,8 +530,8 @@ class HadisCorrection(models.Model): |
|
|
from utils.slug import build_slug_for_instance |
|
|
from utils.slug import build_slug_for_instance |
|
|
build_slug_for_instance(self, source_field='title') |
|
|
build_slug_for_instance(self, source_field='title') |
|
|
|
|
|
|
|
|
if self.slug and self.hadis and self.hadis.slug: |
|
|
|
|
|
self.share_link = f"{settings.DOVODI_DOMAIN}/arguments/hadith/{self.hadis.slug}/corrections/{self.slug}" |
|
|
|
|
|
|
|
|
# if self.slug and self.hadis and self.hadis.slug: |
|
|
|
|
|
# self.share_link = f"{settings.DOVODI_DOMAIN}/arguments/hadith/{self.hadis.slug}/corrections/{self.slug}" |
|
|
|
|
|
|
|
|
# Track 'text' instead of 'description' |
|
|
# Track 'text' instead of 'description' |
|
|
if self.pk: |
|
|
if self.pk: |
|
|
@ -543,6 +551,13 @@ class HadisCorrection(models.Model): |
|
|
|
|
|
|
|
|
super().save(*args, **kwargs) |
|
|
super().save(*args, **kwargs) |
|
|
|
|
|
|
|
|
|
|
|
@property |
|
|
|
|
|
def share_link(self): |
|
|
|
|
|
if self.slug and self.hadis_id and self.hadis and self.hadis.slug: |
|
|
|
|
|
#https://dovodi.newhorizonco.uk/arguments/hadith/excellence-of-character-56?tab=text-corrections |
|
|
|
|
|
return f"{settings.DOVODI_DOMAIN}/arguments/hadith/{self.hadis.slug}?tab=text-corrections" |
|
|
|
|
|
return None |
|
|
|
|
|
|
|
|
def get_title(self, lang): |
|
|
def get_title(self, lang): |
|
|
if not self.title or not isinstance(self.title, list): return None |
|
|
if not self.title or not isinstance(self.title, list): return None |
|
|
for tr in self.title: |
|
|
for tr in self.title: |
|
|
@ -578,6 +593,14 @@ class HadisInterpretation(models.Model): |
|
|
created_at = models.DateTimeField(auto_now_add=True) |
|
|
created_at = models.DateTimeField(auto_now_add=True) |
|
|
updated_at = models.DateTimeField(auto_now=True) |
|
|
updated_at = models.DateTimeField(auto_now=True) |
|
|
|
|
|
|
|
|
|
|
|
@property |
|
|
|
|
|
def share_link(self): |
|
|
|
|
|
cat_slug = self.category.slug if (self.category_id and self.category) else self.slug |
|
|
|
|
|
if cat_slug: |
|
|
|
|
|
#https://dovodi.newhorizonco.uk/arguments/hadith/excellence-of-character-56?tab=explanation |
|
|
|
|
|
return f"{settings.DOVODI_DOMAIN}/arguments/hadith/{self.slug}?tab=explanation"i |
|
|
|
|
|
return None |
|
|
|
|
|
|
|
|
class Meta: |
|
|
class Meta: |
|
|
verbose_name = _("Hadis Interpretation") |
|
|
verbose_name = _("Hadis Interpretation") |
|
|
verbose_name_plural = _("Hadis Interpretations") |
|
|
verbose_name_plural = _("Hadis Interpretations") |
|
|
|