|
|
|
@ -88,6 +88,7 @@ class HadisSyncSerializer(serializers.ModelSerializer): |
|
|
|
explanations = serializers.SerializerMethodField() |
|
|
|
corrections = serializers.SerializerMethodField() |
|
|
|
category_slug = serializers.CharField(source='category.slug', read_only=True) |
|
|
|
interpretations = serializers.SerializerMethodField() |
|
|
|
title =LocalizedField() |
|
|
|
title_narrator = LocalizedField() |
|
|
|
translation = LocalizedField() |
|
|
|
@ -98,7 +99,7 @@ class HadisSyncSerializer(serializers.ModelSerializer): |
|
|
|
# header (no-extend) |
|
|
|
'id', 'number', 'slug', 'category_id', 'category_slug', 'title', 'title_narrator', 'text', 'translation', |
|
|
|
# grouped sections |
|
|
|
'detail', 'narrators', 'explanations', 'corrections', |
|
|
|
'detail', 'narrators', 'explanations', 'corrections', 'interpretations' |
|
|
|
] |
|
|
|
|
|
|
|
def get_detail(self, obj): |
|
|
|
@ -230,17 +231,23 @@ class HadisSyncSerializer(serializers.ModelSerializer): |
|
|
|
return explanations_list if explanations_list else None |
|
|
|
|
|
|
|
def get_corrections(self, obj): |
|
|
|
request = self.context.get('request') |
|
|
|
corrections_data = [] |
|
|
|
for correction in obj.hadiscorrection_set.all(): |
|
|
|
corrections_data.append({ |
|
|
|
'id': correction.id, |
|
|
|
'title': get_localized_text(correction.title, request), |
|
|
|
'description': get_localized_correction_text(correction.text, request=request), |
|
|
|
'translation': get_localized_text(correction.translation, request), |
|
|
|
'share_link': correction.share_link, |
|
|
|
}) |
|
|
|
return corrections_data |
|
|
|
"""گرفتن لیست کامل تصحیحات با تمام جزئیات و رفرنسها""" |
|
|
|
# استفاده از سریالایزر Detail که در مرحله قبل ساختیم |
|
|
|
return HadisCorrectionDetailSerializer( |
|
|
|
obj.hadiscorrection_set.all(), |
|
|
|
many=True, |
|
|
|
context=self.context |
|
|
|
).data |
|
|
|
|
|
|
|
def get_interpretations(self, obj): |
|
|
|
"""گرفتن لیست کامل تفاسیر متصل به دستهبندی این حدیث با جزئیات کامل""" |
|
|
|
if obj.category: |
|
|
|
return HadisInterpretationDetailSerializer( |
|
|
|
obj.category.interpretations.all(), |
|
|
|
many=True, |
|
|
|
context=self.context |
|
|
|
).data |
|
|
|
return [] |
|
|
|
|
|
|
|
class HadisListSerializer(serializers.ModelSerializer): |
|
|
|
"""Serializer for Hadis list""" |
|
|
|
@ -524,19 +531,14 @@ class TransmitterSyncSerializer(serializers.ModelSerializer): |
|
|
|
] |
|
|
|
|
|
|
|
def get_original_texts(self, obj): |
|
|
|
"""Get original texts of the transmitter""" |
|
|
|
request = self.context.get('request') # ← FIX: Define request |
|
|
|
"""گرفتن متون اصلی راوی با جزئیات کامل و رفرنسها""" |
|
|
|
# استفاده از سریالایزر Detail که در مرحله قبل ساختیم |
|
|
|
return TransmitterOriginalTextDetailSerializer( |
|
|
|
obj.originaltexts.all(), |
|
|
|
many=True, |
|
|
|
context=self.context |
|
|
|
).data |
|
|
|
|
|
|
|
return [ |
|
|
|
{ |
|
|
|
'id': t.id, |
|
|
|
'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, |
|
|
|
} |
|
|
|
for t in obj.originaltexts.all() # Already prefetched |
|
|
|
] |
|
|
|
def get_hadis(self, obj): |
|
|
|
# چون از related_name='hadises' در مدل HadisTransmitter استفاده شده، |
|
|
|
# لیست تمام رکوردهای واسط را میگیریم. |
|
|
|
|