From d86f05ea4fbd2603cc2e1713acdfb73522c22936 Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Mon, 31 Aug 2026 11:44:29 +0330 Subject: [PATCH] feat(hadis): expose address, images, and links in correction serializers --- apps/hadis/serializers/hadis.py | 47 +++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/apps/hadis/serializers/hadis.py b/apps/hadis/serializers/hadis.py index 8b632be..64205df 100644 --- a/apps/hadis/serializers/hadis.py +++ b/apps/hadis/serializers/hadis.py @@ -908,9 +908,14 @@ class HadisCorrectionSerializer(serializers.ModelSerializer): description = serializers.SerializerMethodField() translation = LocalizedField() bookmark = serializers.SerializerMethodField() + address = serializers.SerializerMethodField() + images = serializers.SerializerMethodField() + links = serializers.JSONField(read_only=True) + class Meta: model = HadisCorrection - fields = ['id', 'title','slug','narrator','description', 'translation','share_link','bookmark'] + fields = ['id', 'title', 'slug', 'narrator', 'description', 'translation', 'share_link', 'bookmark', 'address', 'images', 'links'] + def get_description(self, obj): request = self.context.get('request') return get_localized_correction_text(obj.text, request=request) @@ -925,6 +930,24 @@ class HadisCorrectionSerializer(serializers.ModelSerializer): service='hadith_correction' ) return book_mark.get('is_bookmarked', False) + + def get_address(self, obj): + ref = obj.references.first() + return ref.address if ref and ref.address else "" + + def get_images(self, obj): + request = self.context.get('request') + images_list = [] + for ref in obj.references.all(): + for img in ref.images.all(): + if img.image: + url = absolute_https_url(img.image.url, request) if request else absolute_https_url(img.image.url) + images_list.append({ + "id": img.id, + "image": url, + "thumbnail": url, + }) + return images_list class HadisBasicSerializer(serializers.ModelSerializer): @@ -1189,10 +1212,12 @@ class HadisCorrectionDetailSerializer(serializers.ModelSerializer): translation = LocalizedField() references = DetailedCorrectionReferenceSerializer(many=True, read_only=True) hadis_info = serializers.SerializerMethodField() + address = serializers.SerializerMethodField() + images = serializers.SerializerMethodField() class Meta: model = HadisCorrection - fields = ['id', 'title', 'slug', 'narrator', 'description', 'translation', 'share_link', 'hadis_info', 'references','links'] + fields = ['id', 'title', 'slug', 'narrator', 'description', 'translation', 'share_link', 'hadis_info', 'address', 'images', 'references', 'links'] def get_description(self, obj): return get_localized_correction_text(obj.text, request=self.context.get('request')) @@ -1200,6 +1225,24 @@ class HadisCorrectionDetailSerializer(serializers.ModelSerializer): def get_hadis_info(self, obj): return {"id": obj.hadis.id, "number": obj.hadis.number, "slug": obj.hadis.slug} + def get_address(self, obj): + ref = obj.references.first() + return ref.address if ref and ref.address else "" + + def get_images(self, obj): + request = self.context.get('request') + images_list = [] + for ref in obj.references.all(): + for img in ref.images.all(): + if img.image: + url = absolute_https_url(img.image.url, request) if request else absolute_https_url(img.image.url) + images_list.append({ + "id": img.id, + "image": url, + "thumbnail": url, + }) + return images_list + class HadisInterpretationDetailSerializer(serializers.ModelSerializer): title = LocalizedField()