Browse Source

feat(hadis): expose address, images, and links in correction serializers

master
Mohsen Taba 3 weeks ago
parent
commit
d86f05ea4f
  1. 47
      apps/hadis/serializers/hadis.py

47
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()

Loading…
Cancel
Save