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.
40 lines
2.5 KiB
40 lines
2.5 KiB
import random
|
|
from django.core.management.base import BaseCommand
|
|
from django.db import transaction
|
|
from apps.hadis.models import Hadis
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Replaces the text field of all Hadiths with authentic Arabic Hadith texts.'
|
|
|
|
def handle(self, *args, **options):
|
|
# A collection of authentic Arabic Hadith texts
|
|
arabic_hadiths = [
|
|
"إِنَّمَا الْأَعْمَالُ بِالنِّيَّاتِ، وَإِنَّمَا لِكُلِّ امْرِئٍ مَا نَوَى.",
|
|
"الدِّينُ النَّصِيحَةُ.",
|
|
"مَنْ كَانَ يُؤْمِنُ بِاللَّهِ وَالْيَوْمِ الْآخِرِ فَلْيَقُلْ خَيْرًا أَوْ لِيَصْمُتْ.",
|
|
"لَا يُؤْمِنُ أَحَدُكُمْ حَتَّى يُحِبَّ لِأَخِيهِ مَا يُحِبُّ لِنَفْسِهِ.",
|
|
"خَيْرُكُمْ مَنْ تَعَلَّمَ الْقُرْآنَ وَعَلَّمَهُ.",
|
|
"الْمُسْلِمُ مَنْ سَلِمَ الْمُسْلِمُونَ مِنْ لِسَانِهِ وَيَدِهِ.",
|
|
"اتَّقِ اللَّهَ حَيْثُمَا كُنْتَ، وَأَتْبِعِ السَّيِّئَةَ الْحَسَنَةَ تَمْحُهَا.",
|
|
"بُنِيَ الْإِسْلَامُ عَلَى خَمْسٍ: شَهَادَةِ أَنْ لَا إِلَهَ إِلَّا اللَّهُ وَأَنَّ مُحَمَّدًا رَسُولُ اللَّهِ...",
|
|
"كُلُّ مَعْرُوفٍ صَدَقَةٌ.",
|
|
"الْبِرُّ حُسْنُ الْخُلُقِ، وَالْإِثْمُ مَا حَاكَ فِي نَفْسِكَ وَكَرِهْتَ أَنْ يَطَّلِعَ عَلَيْهِ النَّاسُ."
|
|
]
|
|
|
|
hadis_qs = Hadis.objects.all()
|
|
total = hadis_qs.count()
|
|
|
|
if total == 0:
|
|
self.stdout.write(self.style.ERROR('No Hadiths found in database.'))
|
|
return
|
|
|
|
self.stdout.write(self.style.WARNING(f'Replacing text for {total} Hadiths...'))
|
|
|
|
with transaction.atomic():
|
|
for hadis in hadis_qs:
|
|
# Randomly select an Arabic text from the pool
|
|
hadis.text = random.choice(arabic_hadiths)
|
|
# We use update_fields for performance and to bypass full_clean if slug errors exist
|
|
hadis.save(update_fields=['text'])
|
|
|
|
self.stdout.write(self.style.SUCCESS(f'Successfully updated {total} Hadiths with Arabic text.'))
|