From de178d661a8f45258bd3a435fff3e0ac0a77688d Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Sun, 21 Dec 2025 12:57:50 +0330 Subject: [PATCH] hadis api endpoints degub. --- apps/hadis/docs.py | 14 ++--------- apps/hadis/serializers/hadis.py | 42 +++++++-------------------------- 2 files changed, 11 insertions(+), 45 deletions(-) diff --git a/apps/hadis/docs.py b/apps/hadis/docs.py index 1568d8d..3f7f9ab 100644 --- a/apps/hadis/docs.py +++ b/apps/hadis/docs.py @@ -647,23 +647,13 @@ hadis_corrections_swagger = swagger_auto_schema( "id": 1, "title": "Translation Correction", "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, "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.", - "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", } ] } diff --git a/apps/hadis/serializers/hadis.py b/apps/hadis/serializers/hadis.py index 14171f4..c3b3cbc 100644 --- a/apps/hadis/serializers/hadis.py +++ b/apps/hadis/serializers/hadis.py @@ -362,10 +362,7 @@ class HadisTransmitterSerializer(serializers.ModelSerializer): """Get narrator layer description""" # ✅ Get language from 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): @@ -380,6 +377,7 @@ class HadisTransmitterListSerializer(serializers.ModelSerializer): It takes a HADIS object and returns the count + the list of transmitters. """ layer_count = serializers.SerializerMethodField() + layer_names = serializers.SerializerMethodField() results = HadisTransmitterSerializer( source='transmitters', # Access the 'transmitters' reverse relation many=True, @@ -388,11 +386,14 @@ class HadisTransmitterListSerializer(serializers.ModelSerializer): class Meta: model = Hadis - fields = ['id', 'layer_count', 'results'] + fields = ['id', 'layer_count','layer_names', 'results'] def get_layer_count(self, obj): # Calculate distinct layers efficiently 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): """Serializer for ReferenceImage""" @@ -473,24 +474,10 @@ class HadisCorrectionSerializer(serializers.ModelSerializer): model = HadisCorrection 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): """Basic serializer for Hadis with minimal information""" - translation = serializers.SerializerMethodField() + translation = LocalizedField() category = serializers.SerializerMethodField() title = LocalizedField() @@ -505,26 +492,15 @@ class HadisBasicSerializer(serializers.ModelSerializer): '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): """Get category id and title""" if obj.category: 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 { 'id': obj.category.id, - 'title': out, + 'title': get_localized_text(obj.title,request), 'slug':obj.category.slug, 'source_type':obj.category.source_type, 'sect_type':obj.category.sect.sect_type