diff --git a/apps/hadis/management/commands/seed_complete_hadis_data.py b/apps/hadis/management/commands/seed_complete_hadis_data.py index 45a75c4..8a5978e 100644 --- a/apps/hadis/management/commands/seed_complete_hadis_data.py +++ b/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)