@ -296,13 +296,18 @@ class Command(BaseCommand):
# Create tags
# Create tags
for i , tag_name in enumerate ( RUSSIAN_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 :
if created :
self . tags . append ( tag )
self . tags . append ( tag )
@ -367,8 +372,12 @@ class Command(BaseCommand):
death_year = birth_year + random . randint ( 40 , 90 )
death_year = birth_year + random . randint ( 40 , 90 )
age = death_year - birth_year
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 (
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 } ] ,
kunya = [ { ' language_code ' : ' ru ' , ' text ' : kunya } ] ,
known_as = [ { ' language_code ' : ' ru ' , ' text ' : f " {name} {origin}ский " } ] ,
known_as = [ { ' language_code ' : ' ru ' , ' text ' : f " {name} {origin}ский " } ] ,
nickname = [ { ' language_code ' : ' ru ' , ' text ' : f " {random.choice([ ' аль-Муфассир ' , ' аль-Хафиз ' , ' аль-Факих ' , ' аль-Мухаддис ' ])} " } ] ,
nickname = [ { ' language_code ' : ' ru ' , ' text ' : f " {random.choice([ ' аль-Муфассир ' , ' аль-Хафиз ' , ' аль-Факих ' , ' аль-Мухаддис ' ])} " } ] ,
@ -379,7 +388,7 @@ class Command(BaseCommand):
death_year_hijri = death_year ,
death_year_hijri = death_year ,
age_at_death = age ,
age_at_death = age ,
generation = random . randint ( 1 , 8 ) ,
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 ' ] ) ,
madhhab = random . choice ( [ ' shia ' , ' sunni ' , ' hanafi ' , ' maliki ' , ' shafii ' ] ) ,
in_sahih_muslim = random . choice ( [ True , False ] ) ,
in_sahih_muslim = random . choice ( [ True , False ] ) ,
in_sahih_bukhari = random . choice ( [ True , False ] ) ,
in_sahih_bukhari = random . choice ( [ True , False ] ) ,
@ -505,7 +514,9 @@ class Command(BaseCommand):
)
)
# Add tags
# 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
# Populate relations
self . _populate_hadis_relations ( hadis )
self . _populate_hadis_relations ( hadis )