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.
61 lines
6.3 KiB
61 lines
6.3 KiB
# backend/apps/hadis/management/commands/seed_missing_interpretations.py
|
|
|
|
from django.core.management.base import BaseCommand
|
|
from django.db import transaction
|
|
from apps.hadis.models import HadisCategory, HadisInterpretation
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Seeds a default interpretation for all categories that have hadiths but no interpretation.'
|
|
|
|
def handle(self, *args, **options):
|
|
self.stdout.write(self.style.WARNING("Scanning for categories without interpretations..."))
|
|
|
|
# پیدا کردن کتگوریهایی که حدیث دارند اما هنوز تفسیری ندارند
|
|
target_categories = HadisCategory.objects.filter(
|
|
hadis__isnull=False, # حداقل یک حدیث دارد
|
|
interpretations__isnull=True # تفسیری برایش ثبت نشده
|
|
).distinct()
|
|
|
|
count = target_categories.count()
|
|
|
|
if count == 0:
|
|
self.stdout.write(self.style.SUCCESS("✅ All populated categories already have an interpretation."))
|
|
return
|
|
|
|
self.stdout.write(self.style.WARNING(f"Found {count} categories. Creating default interpretations..."))
|
|
|
|
# متون ثابت
|
|
ARABIC_TEXT = """<p dir="rtl"><span style="color: #e65050;">الْمَسْأَلَةُ الثَّامِنَةُ : قَوْلُهُ : { أَهْلَ الْبَيْتِ }</span></p>
|
|
|
|
<p dir="rtl">رُوِيَ عَنْ عُمَرَ بْنِ أَبِي سَلَمَةَ أَنَّهُ قَالَ : { لَمَّا نَزَلَتْ هَذِهِ الْآيَةُ عَلَى النَّبِيِّ صَلَّى اللَّهُ عَلَيْهِ وَسَلَّمَ : { إنَّمَا يُرِيدُ اللَّهُ لِيُذْهِبَ عَنْكُمْ الرِّجْسَ أَهْلَ الْبَيْتِ وَيُطَهِّرَكُمْ تَطْهِيرًا } فِي بَيْتِ أُمِّ سَلَمَةَ دَعَا النَّبِيُّ صَلَّى اللَّهُ عَلَيْهِ وَسَلَّمَ <span style="color: #e65050;">فَاطِمَةَ وَحَسَنًا وَحُسَيْنًا</span> ، وَجَعَلَ <span style="color: #e65050;">عَلِيًّا</span> خَلْفَ ظَهْرِهِ ، وَجَلَّلَهُمْ بِكِسَاءٍ ، ثُمَّ قَالَ : اللَّهُمَّ إنَّ هَؤُلَاءِ أَهْلَ بَيْتِي ، فَأَذْهِبْ عَنْهُمْ الرِّجْسَ وَطَهِّرْهُمْ تَطْهِيرًا . قَالَتْ أُمُّ سَلَمَةَ : وَأَنَا مَعَهُمْ يَا نَبِيَّ اللَّهِ . قَالَ : أَنْتِ عَلَى مَكَانِك وَأَنْتِ عَلَى خَيْرٍ } .</p>
|
|
|
|
<p dir="rtl">وَرَوَى أَنَسُ بْنُ مَالِكٍ { أَنَّ رَسُولَ اللَّهِ صَلَّى اللَّهُ عَلَيْهِ وَسَلَّمَ كَانَ يَمُرُّ بِبَابِ فَاطِمَةَ سِتَّةَ أَشْهُرٍ إذَا خَرَجَ إلَى صَلَاةِ الْفَجْرِ يَقُولُ : الصَّلَاةَ يَا أَهْلَ الْبَيْتِ ، إنَّمَا يُرِيدُ اللَّهُ لِيُذْهِبَ عَنْكُمْ الرِّجْسَ أَهْلَ الْبَيْتِ وَيُطَهِّرَكُمْ تَطْهِيرًا } . خَرَّجَ هَذَيْنِ الْحَدِيثَيْنِ التِّرْمِذِيُّ وَغَيْرُهُ .</p>"""
|
|
|
|
RUSSIAN_TRANSLATION = """<p><span style="color: #e65050;">Вопрос восьмой: (что означают) слова: Ахл аль-бейт</span></p>
|
|
|
|
<p>Передают от Умар ибн Аби Саламе, что когда был ниспослан аят «Аллах хочет удалить скверну от вас, о Люди дома (Ахл аль-бейт), и очистить вас наилучшим очищением» (Сура 33, аят 33) в доме Ум Саламы, Посланник Аллаха (с) позвал к себе <span style="color: #e65050;">Фатиму, Хасана и Хусейна</span>, затем накрыл их своей накидкой, а <span style="color: #e65050;">Али</span> был за Пророком, Пророк и его накрыл. После того, как Пророк накрыл их всех накидкой, он изволил сказать следующее: «О, Аллах, они люди моего дома, очисти же их наилучшим очищением!». Ум Салама говорит: «Я сказала: «О, Пророк Аллаха! Я тоже с ними?» Посланник Аллаха изволил сказать: «Ты оставайся при своем положении, и ты в добре».</p>
|
|
|
|
<p>Передают от Анас Ибн Малика: Поистине посланник Аллах (мир ему и благословение Аллаха!) шесть месяцев проходил мимо <span style="color: #e65050;">двери Фатимы</span>, когда выходил на утреннюю молитву, и говорил: время молитвы, о Ахл аль бейт! "Аллах хочет удалить скверну от вас, о Люди дома (Ахл аль-бейт), и очистить вас наилучшим очищением" (Сура 33, аят 33).</p>
|
|
|
|
<p>Эти два хадиса привели Тирмизи и другие.</p>"""
|
|
|
|
new_interpretations = []
|
|
for cat in target_categories:
|
|
new_interpretations.append(
|
|
HadisInterpretation(
|
|
category=cat,
|
|
slug=cat.slug, # به صورت دستی اسلاگ کتگوری را جایگذاری میکنیم (چون bulk_create متد save را صدا نمیزند)
|
|
title=[],
|
|
text=ARABIC_TEXT,
|
|
translation=[{"language_code": "ru", "text": RUSSIAN_TRANSLATION}],
|
|
priority=0
|
|
)
|
|
)
|
|
|
|
# ساخت گروهی در دیتابیس (بسیار سریع)
|
|
with transaction.atomic():
|
|
HadisInterpretation.objects.bulk_create(new_interpretations, batch_size=500)
|
|
|
|
self.stdout.write(
|
|
self.style.SUCCESS(f"🎉 Successfully created {len(new_interpretations)} default interpretations!")
|
|
)
|