@ -293,7 +293,7 @@ class TransmitterShortSerializer(serializers.ModelSerializer):
class Meta :
model = Transmitters
fields = [
' id ' , ' full_name ' , ' birth_year_hijri ' , ' death_year_hijri ' ,
' id ' , ' full_name ' , ' slug ' , ' birth_year_hijri' , ' death_year_hijri ' ,
" known_as " , ' nickname ' , ' reliability '
]
class TransmitterOpinionSerializer ( serializers . ModelSerializer ) :
@ -453,20 +453,14 @@ class HadisTransmitterSerializer(serializers.ModelSerializer):
""" Serializer for HadisTransmitter with transmitter details """
transmitter = TransmitterShortSerializer ( read_only = True )
narrator_layer_description = serializers . SerializerMethodField ( )
layer = serializers . SerializerMethodField ( )
status = serializers . SerializerMethodField ( )
class Meta :
model = HadisTransmitter
fields = [
' id ' , ' order ' , ' is_gap ' , ' narrator_layer_description ' , ' layer' , ' transmitter ' , ' status '
' id ' , ' order ' , ' is_gap ' , ' layer ' , ' transmitter ' , ' status '
]
def get_narrator_layer_description ( self , obj ) :
""" Get narrator layer description """
# ✅ Get language from request
request = self . context . get ( ' request ' )
return get_localized_text ( obj . narrator_layer . description , request )
def get_layer ( self , obj ) :
@ -526,10 +520,12 @@ class HadisTransmitterListSerializer(serializers.ModelSerializer):
layer_names = [ ]
for layer in layer_objects :
name = get_localized_text ( layer . name , request = request )
description = get_localized_text ( layer . description , request = request )
slug = layer . slug
layer_names . append ( {
' name ' : name ,
' slug ' : slug
' slug ' : slug ,
' description ' : description
} )
return layer_names
@ -557,12 +553,42 @@ class HadisReferenceSerializer(serializers.ModelSerializer):
book_title = serializers . SerializerMethodField ( )
book_authors = serializers . SerializerMethodField ( )
book_description = serializers . SerializerMethodField ( )
book_english_name = serializers . SerializerMethodField ( )
book_language = serializers . SerializerMethodField ( )
type_name = serializers . SerializerMethodField ( )
subject_area = serializers . SerializerMethodField ( )
class Meta :
model = HadisReference
fields = [
' id ' , ' book_title ' , ' book_authors ' , ' book_description '
' id ' , ' book_title ' , ' book_description ' , ' book_english_name ' ,
' book_language ' , ' type_name ' , ' subject_area ' , ' book_authors '
]
def get_type_name ( self , obj ) :
return " Comperhensive Shia ' s Hadith Encyclopedia "
def get_subject_area ( self , obj ) :
return [ " Hadith " ,
" Islamic History " ,
" Theology " ,
" Philosophy " ,
" Tafsir "
]
def get_book_english_name ( self , obj ) :
english_name_data = obj . book_reference . title
for item in english_name_data :
if item . get ( ' language_code ' ) == ' en ' :
return item . get ( ' text ' )
return None
def get_book_language ( self , obj ) :
language_data = obj . book_reference . language
field = LocalizedField ( )
field . _context = self . context
return field . to_representation ( language_data )
def get_book_title ( self , obj ) :
title_data = obj . book_reference . title
field = LocalizedField ( )
@ -585,7 +611,16 @@ class HadisReferenceSerializer(serializers.ModelSerializer):
# 3. Loop through authors and convert each object to a string (name)
# Result will be like: ["Al-Bukhari", "Muslim"]
return [ field . to_representation ( author . name ) for author in authors ]
out = [ ]
for author in authors :
name = field . to_representation ( author . name )
out . append ( {
' name ' : name ,
' birth ' : ' 1037AH/1627CE ' ,
' death ' : ' 1105AH/1694CE ' ,
} )
return out
except Exception :
return [ ]
@ -743,3 +778,20 @@ class HadisDetailSerializer(serializers.ModelSerializer):
request = self . context . get ( ' request ' )
language_code = getattr ( request , ' LANGUAGE_CODE ' , ' en ' )
return obj . translation . get ( language_code )
class NarratorLayerSerializer ( serializers . Serializer ) :
""" Serializer for narrator layers information """
name = serializers . SerializerMethodField ( )
slug = serializers . CharField ( read_only = True )
description = serializers . SerializerMethodField ( )
def get_name ( self , obj ) :
""" Get localized name """
request = self . context . get ( ' request ' )
return get_localized_text ( obj . name , request = request )
def get_description ( self , obj ) :
""" Get localized description """
request = self . context . get ( ' request ' )
return get_localized_text ( obj . description , request = request )