Browse Source

hadis api endpoints degub.

master
Mohsen Taba 5 months ago
parent
commit
de178d661a
  1. 14
      apps/hadis/docs.py
  2. 42
      apps/hadis/serializers/hadis.py

14
apps/hadis/docs.py

@ -647,23 +647,13 @@ hadis_corrections_swagger = swagger_auto_schema(
"id": 1, "id": 1,
"title": "Translation Correction", "title": "Translation Correction",
"description": "Updated translation for better accuracy and clarity. The previous translation was slightly ambiguous in the context of intention and action.", "description": "Updated translation for better accuracy and clarity. The previous translation was slightly ambiguous in the context of intention and action.",
"translation": {
"en": "Actions are judged by intentions, and every person will have what they intended",
"ar": "إنما الأعمال بالنيات وإنما لكل امرئ ما نوى",
"fa": "اعمال به نیت ها قضاوت می شود و هر کس آنچه را که قصد کرده است خواهد داشت",
"ur": "اعمال نیتوں کے مطابق ہیں اور ہر شخص کو وہی ملے گا جس کا اس نے ارادہ کیا"
}
"translation":"Actions are judged by intentions, and every person will have what they intended",
}, },
{ {
"id": 2, "id": 2,
"title": "Authenticity Clarification", "title": "Authenticity Clarification",
"description": "Additional scholarly notes on the authenticity and grading of this hadith. This hadith is considered authentic (sahih) by consensus of scholars.", "description": "Additional scholarly notes on the authenticity and grading of this hadith. This hadith is considered authentic (sahih) by consensus of scholars.",
"translation": {
"en": "This hadith is authentic (sahih) according to the consensus of scholars including Imam Bukhari and Imam Muslim",
"ar": "هذا الحديث صحيح حسب إجماع العلماء بما في ذلك الإمام البخاري والإمام مسلم",
"fa": "این حدیث طبق اجماع علماء از جمله امام بخاری و امام مسلم صحیح است",
"ur": "یہ حدیث علماء کے اجماع کے مطابق صحیح ہے جن میں امام بخاری اور امام مسلم شامل ہیں"
}
"translation":"Actions are judged by intentions, and every person will have what they intended",
} }
] ]
} }

42
apps/hadis/serializers/hadis.py

@ -362,10 +362,7 @@ class HadisTransmitterSerializer(serializers.ModelSerializer):
"""Get narrator layer description""" """Get narrator layer description"""
# ✅ Get language from request # ✅ Get language from request
request = self.context.get('request') request = self.context.get('request')
lang = request.query_params.get('lang', 'ru') if request else 'ru'
# ✅ CALL THE MODEL METHOD!
return obj.narrator_layer.description(lang)
return get_localized_text(obj.narrator_layer.description,request)
def get_layer(self, obj): def get_layer(self, obj):
@ -380,6 +377,7 @@ class HadisTransmitterListSerializer(serializers.ModelSerializer):
It takes a HADIS object and returns the count + the list of transmitters. It takes a HADIS object and returns the count + the list of transmitters.
""" """
layer_count = serializers.SerializerMethodField() layer_count = serializers.SerializerMethodField()
layer_names = serializers.SerializerMethodField()
results = HadisTransmitterSerializer( results = HadisTransmitterSerializer(
source='transmitters', # Access the 'transmitters' reverse relation source='transmitters', # Access the 'transmitters' reverse relation
many=True, many=True,
@ -388,11 +386,14 @@ class HadisTransmitterListSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Hadis model = Hadis
fields = ['id', 'layer_count', 'results']
fields = ['id', 'layer_count','layer_names', 'results']
def get_layer_count(self, obj): def get_layer_count(self, obj):
# Calculate distinct layers efficiently # Calculate distinct layers efficiently
return obj.transmitters.values('narrator_layer').distinct().count() return obj.transmitters.values('narrator_layer').distinct().count()
def get_layer_names(self, obj):
# Calculate distinct layers efficiently
return obj.transmitters.values('narrator_layer').distinct()
class ReferenceImageSerializer(serializers.ModelSerializer): class ReferenceImageSerializer(serializers.ModelSerializer):
"""Serializer for ReferenceImage""" """Serializer for ReferenceImage"""
@ -473,24 +474,10 @@ class HadisCorrectionSerializer(serializers.ModelSerializer):
model = HadisCorrection model = HadisCorrection
fields = ['id', 'title', 'description', 'translation','share_link', 'created_at', 'updated_at'] fields = ['id', 'title', 'description', 'translation','share_link', 'created_at', 'updated_at']
def get_hadis_translation(self, obj):
"""Get translation based on request language"""
return obj.translation
# request = self.context.get('request')
# language_code = getattr(request, 'LANGUAGE_CODE', 'en')
# out = None
# for i in obj.translation:
# print(type(i))
# l = i.get('lang')
# if l == language_code:
# out = i.get('text')
# print(out)
# return out
class HadisBasicSerializer(serializers.ModelSerializer): class HadisBasicSerializer(serializers.ModelSerializer):
"""Basic serializer for Hadis with minimal information""" """Basic serializer for Hadis with minimal information"""
translation = serializers.SerializerMethodField()
translation = LocalizedField()
category = serializers.SerializerMethodField() category = serializers.SerializerMethodField()
title = LocalizedField() title = LocalizedField()
@ -505,26 +492,15 @@ class HadisBasicSerializer(serializers.ModelSerializer):
'translation', 'share_link','explanation','category' 'translation', 'share_link','explanation','category'
] ]
def get_translation(self, obj):
"""Get translation based on request language"""
request = self.context.get('request')
language_code = getattr(request, 'LANGUAGE_CODE', 'en')
return obj.translation.get(language_code)
def get_category(self, obj): def get_category(self, obj):
"""Get category id and title""" """Get category id and title"""
if obj.category: if obj.category:
request = self.context.get('request') request = self.context.get('request')
lang = request.query_params.get('lang', 'ru') if request else 'ru'
out = None
for i in obj.category.title:
if i['language_code']== lang:
out = i['text']
if not out :
out = ''
return { return {
'id': obj.category.id, 'id': obj.category.id,
'title': out,
'title': get_localized_text(obj.title,request),
'slug':obj.category.slug, 'slug':obj.category.slug,
'source_type':obj.category.source_type, 'source_type':obj.category.source_type,
'sect_type':obj.category.sect.sect_type 'sect_type':obj.category.sect.sect_type

Loading…
Cancel
Save