diff --git a/apps/hadis/serializers/hadis.py b/apps/hadis/serializers/hadis.py index aa2b36b..f74c4a4 100644 --- a/apps/hadis/serializers/hadis.py +++ b/apps/hadis/serializers/hadis.py @@ -1,7 +1,9 @@ from rest_framework import serializers from django.utils.translation import gettext_lazy as _ from rest_framework.fields import SerializerMethodField +from urllib3 import request from .category import LocalizedField +from .category import get_localized_text from ..models import ( Hadis, HadisStatus, HadisTag, HadisTransmitter, @@ -33,36 +35,23 @@ class HadisCollectionListSerializer(serializers.ModelSerializer): class HadisSyncSerializer(serializers.ModelSerializer): """Serializer for syncing all hadis data (grouped fields)""" - translations = serializers.SerializerMethodField() detail = serializers.SerializerMethodField() narrators = serializers.SerializerMethodField() explanations = serializers.SerializerMethodField() corrections = serializers.SerializerMethodField() title =LocalizedField() title_narrator = LocalizedField() + translation = LocalizedField() class Meta: model = Hadis fields = [ # header (no-extend) - 'id', 'number', 'category_id', 'title', 'title_narrator', 'text', 'translations', + 'id', 'number', 'category_id', 'title', 'title_narrator', 'text', 'translation', # grouped sections 'detail', 'narrators', 'explanations', 'corrections', ] - def get_translations(self, obj): - """Get all translations as {lang: text}""" - # translations_dict = {} - # if obj.translation and isinstance(obj.translation, list): - # for tr in obj.translation: - # if isinstance(tr, dict): - # lang_code = tr.get('language_code') - # title = tr.get('title') - # if lang_code: - # translations_dict[lang_code] = title - # return translations_dict - return obj.translation - def get_detail(self, obj): """Detail group: address, status, share, links, tags, references, reference_images""" request = self.context.get('request') @@ -72,12 +61,12 @@ class HadisSyncSerializer(serializers.ModelSerializer): if obj.hadis_status: status_block = { 'id': obj.hadis_status.id, - 'title': obj.hadis_status.title, + 'title': get_localized_text(obj.hadis_status.title,request), 'color': obj.hadis_status.color } # tags - tags_block = [{'id': tag.id, 'title': tag.title} for tag in obj.tags.all()] + tags_block = [{'id': tag.id, 'title': get_localized_text(tag.title,request)} for tag in obj.tags.all()] # references and reference images references_block = [] @@ -86,8 +75,8 @@ class HadisSyncSerializer(serializers.ModelSerializer): book = reference.book_reference references_block.append({ 'id': reference.id, - 'title': book.title if book else None, - 'authors': [{'id': a.id, 'name': a.name} for a in book.authors.all()] if book else [], + 'title': get_localized_text(book.title,request) if book else None, + 'authors': [{'id': a.id, 'name': get_localized_text(a.name,request)} for a in book.authors.all()] if book else [], 'description': book.description if book else None, }) for img in reference.images.all().order_by('priority'): @@ -101,9 +90,9 @@ class HadisSyncSerializer(serializers.ModelSerializer): }) return { - 'address': obj.address, + 'address': get_localized_text(obj.address,request), 'hadis_status': status_block, - 'status_text': obj.hadis_status_text, + 'status_text':get_localized_text(obj.hadis_status_text,request) , 'share_link': obj.share_link, 'links': obj.links, 'tags': tags_block, @@ -118,10 +107,10 @@ class HadisSyncSerializer(serializers.ModelSerializer): t = transmitter_rel.transmitter transmitters_data.append({ 'id': t.id, - 'name': t.full_name, + 'name': get_localized_text(t.full_name,request), 'reliability': t.reliability, 'layer_level': transmitter_rel.narrator_layer.number if transmitter_rel.narrator_layer else None, - 'layer_name': transmitter_rel.narrator_layer.name if transmitter_rel.narrator_layer else None, + 'layer_name': get_localized_text(transmitter_rel.narrator_layer.name,request) if transmitter_rel.narrator_layer else None, 'is_gap': transmitter_rel.is_gap, 'birth_year_hijri': t.birth_year_hijri, 'death_year_hijri': t.death_year_hijri, @@ -129,13 +118,13 @@ class HadisSyncSerializer(serializers.ModelSerializer): }) return { - 'description': getattr(obj, 'description', None), + 'description': get_localized_text(obj.description,request), 'transmitters': transmitters_data } def get_explanations(self, obj): """Explanations group""" - return obj.explanation + return get_localized_text(obj.explanation,request) def get_corrections(self, obj): """Corrections group""" @@ -143,9 +132,9 @@ class HadisSyncSerializer(serializers.ModelSerializer): for correction in obj.hadiscorrection_set.all(): corrections_data.append({ 'id': correction.id, - 'title': correction.title, - 'description': correction.description, - 'translation': correction.translation, + 'title': get_localized_text(correction.title,request), + 'description': get_localized_text(correction.description,request), + 'translation': get_localized_text(correction.translation,request), 'share_link': correction.share_link, }) return corrections_data