Browse Source

Refactor hadis data seeding logic for improved tag handling and transmitter name generation

- Updated tag creation to check for existing tags before creating new ones, enhancing efficiency.
- Improved transmitter name generation by deriving the father's name from a random selection of names.
- Added safeguards to ensure reliability status is only assigned if available.
- Adjusted tag assignment to ensure a valid number of tags is added to each hadis entry.
master
mortezaei 4 months ago
parent
commit
252bb9325c
  1. 31
      apps/hadis/management/commands/seed_complete_hadis_data.py

31
apps/hadis/management/commands/seed_complete_hadis_data.py

@ -296,13 +296,18 @@ class Command(BaseCommand):
# Create tags
for i, tag_name in enumerate(RUSSIAN_TAGS):
tag, created = HadisTag.objects.get_or_create(
title__0__text=tag_name,
defaults={
'title': [{'language_code': 'ru', 'text': tag_name}],
'status': True
}
)
# Check if tag already exists
existing_tags = HadisTag.objects.filter(title__contains=[{'language_code': 'ru', 'text': tag_name}])
if existing_tags.exists():
tag = existing_tags.first()
created = False
else:
tag = HadisTag.objects.create(
title=[{'language_code': 'ru', 'text': tag_name}],
status=True
)
created = True
if created:
self.tags.append(tag)
@ -367,8 +372,12 @@ class Command(BaseCommand):
death_year = birth_year + random.randint(40, 90)
age = death_year - birth_year
# Generate father name from first word of a random name
random_father_full_name = random.choice(RUSSIAN_TRANSMITTER_NAMES)
father_name = random_father_full_name.split()[0] if ' ' in random_father_full_name else 'Абдуллах'
transmitter = Transmitters.objects.create(
full_name=[{'language_code': 'ru', 'text': f"{name} ибн {random.choice(RUSSIAN_TRANSMITTER_NAMES.split()[0] if ' ' in random.choice(RUSSIAN_TRANSMITTER_NAMES) else 'Абдуллах')}"}],
full_name=[{'language_code': 'ru', 'text': f"{name} ибн {father_name}"}],
kunya=[{'language_code': 'ru', 'text': kunya}],
known_as=[{'language_code': 'ru', 'text': f"{name} {origin}ский"}],
nickname=[{'language_code': 'ru', 'text': f"{random.choice(['аль-Муфассир', 'аль-Хафиз', 'аль-Факих', 'аль-Мухаддис'])}"}],
@ -379,7 +388,7 @@ class Command(BaseCommand):
death_year_hijri=death_year,
age_at_death=age,
generation=random.randint(1, 8),
reliability=random.choice(self.reliability_statuses),
reliability=random.choice(self.reliability_statuses) if self.reliability_statuses else None,
madhhab=random.choice(['shia', 'sunni', 'hanafi', 'maliki', 'shafii']),
in_sahih_muslim=random.choice([True, False]),
in_sahih_bukhari=random.choice([True, False]),
@ -505,7 +514,9 @@ class Command(BaseCommand):
)
# Add tags
hadis.tags.add(*random.sample(self.tags, random.randint(2, 5)))
if self.tags:
num_tags = min(random.randint(2, 5), len(self.tags))
hadis.tags.add(*random.sample(self.tags, num_tags))
# Populate relations
self._populate_hadis_relations(hadis)

Loading…
Cancel
Save