|
|
@ -323,16 +323,10 @@ class TransmitterDetailSerializer(serializers.ModelSerializer): |
|
|
class TransmitterSyncSerializer(serializers.ModelSerializer): |
|
|
class TransmitterSyncSerializer(serializers.ModelSerializer): |
|
|
"""Serializer for syncing all transmitter data for offline mode""" |
|
|
"""Serializer for syncing all transmitter data for offline mode""" |
|
|
|
|
|
|
|
|
# Biographical data group (flattened) |
|
|
|
|
|
biographical = serializers.SerializerMethodField() |
|
|
biographical = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
|
# Scholar's opinions group |
|
|
|
|
|
scholars_opinions = serializers.SerializerMethodField() |
|
|
scholars_opinions = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
|
# Original texts group |
|
|
|
|
|
original_texts = serializers.SerializerMethodField() |
|
|
original_texts = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
|
full_name =LocalizedField() |
|
|
|
|
|
|
|
|
full_name = LocalizedField() |
|
|
|
|
|
|
|
|
class Meta: |
|
|
class Meta: |
|
|
model = Transmitters |
|
|
model = Transmitters |
|
|
@ -342,15 +336,16 @@ class TransmitterSyncSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
|
def get_biographical(self, obj): |
|
|
def get_biographical(self, obj): |
|
|
"""Get biographical information (flattened)""" |
|
|
"""Get biographical information (flattened)""" |
|
|
request = self.context.get('request') |
|
|
|
|
|
|
|
|
request = self.context.get('request') # ← FIX: Define request |
|
|
|
|
|
|
|
|
return { |
|
|
return { |
|
|
'full_name': get_localized_text(obj.full_name,request), |
|
|
|
|
|
'kunya': get_localized_text(obj.kunya,request), |
|
|
|
|
|
'known_as':get_localized_text(obj.known_as,request) , |
|
|
|
|
|
'nickname':get_localized_text( obj.nickname,request), |
|
|
|
|
|
'origin': get_localized_text(obj.origin,request), |
|
|
|
|
|
'lived_in':get_localized_text(obj.lived_in,request) , |
|
|
|
|
|
'died_in': get_localized_text(obj.died_in,request), |
|
|
|
|
|
|
|
|
'full_name': get_localized_text(obj.full_name, request), |
|
|
|
|
|
'kunya': get_localized_text(obj.kunya, request), |
|
|
|
|
|
'known_as': get_localized_text(obj.known_as, request), |
|
|
|
|
|
'nickname': get_localized_text(obj.nickname, request), |
|
|
|
|
|
'origin': get_localized_text(obj.origin, request), |
|
|
|
|
|
'lived_in': get_localized_text(obj.lived_in, request), |
|
|
|
|
|
'died_in': get_localized_text(obj.died_in, request), |
|
|
'birth_year_hijri': obj.birth_year_hijri, |
|
|
'birth_year_hijri': obj.birth_year_hijri, |
|
|
'death_year_hijri': obj.death_year_hijri, |
|
|
'death_year_hijri': obj.death_year_hijri, |
|
|
'age_at_death': obj.age_at_death, |
|
|
'age_at_death': obj.age_at_death, |
|
|
@ -359,38 +354,40 @@ class TransmitterSyncSerializer(serializers.ModelSerializer): |
|
|
'madhhab': obj.madhhab, |
|
|
'madhhab': obj.madhhab, |
|
|
'in_sahih_muslim': obj.in_sahih_muslim, |
|
|
'in_sahih_muslim': obj.in_sahih_muslim, |
|
|
'in_sahih_bukhari': obj.in_sahih_bukhari, |
|
|
'in_sahih_bukhari': obj.in_sahih_bukhari, |
|
|
'description': get_localized_text(obj.description,request), |
|
|
|
|
|
|
|
|
'description': get_localized_text(obj.description, request), |
|
|
'thumbnail': obj.thumbnail.url if obj.thumbnail else None, |
|
|
'thumbnail': obj.thumbnail.url if obj.thumbnail else None, |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
def get_scholars_opinions(self, obj): |
|
|
def get_scholars_opinions(self, obj): |
|
|
"""Get all scholarly opinions about this transmitter""" |
|
|
"""Get all scholarly opinions about this transmitter""" |
|
|
request = self.context.get('request') |
|
|
|
|
|
opinions = [] |
|
|
|
|
|
for opinion in obj.opinions.all(): |
|
|
|
|
|
opinions.append({ |
|
|
|
|
|
|
|
|
request = self.context.get('request') # ← FIX: Define request |
|
|
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
|
|
{ |
|
|
'id': opinion.id, |
|
|
'id': opinion.id, |
|
|
'scholar_name': get_localized_text(opinion.scholar_name,request), |
|
|
|
|
|
'opinion_text': get_localized_text(opinion.opinion_text,request), |
|
|
|
|
|
|
|
|
'scholar_name': get_localized_text(opinion.scholar_name, request), |
|
|
|
|
|
'opinion_text': get_localized_text(opinion.opinion_text, request), |
|
|
'status': opinion.status, |
|
|
'status': opinion.status, |
|
|
'created_at': opinion.created_at.isoformat() if opinion.created_at else None, |
|
|
'created_at': opinion.created_at.isoformat() if opinion.created_at else None, |
|
|
'updated_at': opinion.updated_at.isoformat() if opinion.updated_at else None, |
|
|
'updated_at': opinion.updated_at.isoformat() if opinion.updated_at else None, |
|
|
}) |
|
|
|
|
|
return opinions |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
for opinion in obj.opinions.all() # Already prefetched |
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
def get_original_texts(self, obj): |
|
|
def get_original_texts(self, obj): |
|
|
"""Get original texts of the transmitter""" |
|
|
"""Get original texts of the transmitter""" |
|
|
request = self.context.get('request') |
|
|
|
|
|
texts = [] |
|
|
|
|
|
for t in obj.originaltexts.all(): |
|
|
|
|
|
texts.append({ |
|
|
|
|
|
|
|
|
request = self.context.get('request') # ← FIX: Define request |
|
|
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
|
|
{ |
|
|
'id': t.id, |
|
|
'id': t.id, |
|
|
'title': get_localized_text(t.title,request), |
|
|
|
|
|
'text': get_localized_text(t.text,request), |
|
|
|
|
|
'translation': get_localized_text(t.translation,request), |
|
|
|
|
|
|
|
|
'title': get_localized_text(t.title, request), |
|
|
|
|
|
'text': get_localized_text(t.text, request), |
|
|
|
|
|
'translation': get_localized_text(t.translation, request), |
|
|
'share_link': t.share_link, |
|
|
'share_link': t.share_link, |
|
|
}) |
|
|
|
|
|
return texts |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
for t in obj.originaltexts.all() # Already prefetched |
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|