|
|
|
@ -2,6 +2,7 @@ from rest_framework import serializers |
|
|
|
from django.utils.translation import gettext_lazy as _ |
|
|
|
from rest_framework.fields import SerializerMethodField |
|
|
|
from urllib3 import fields |
|
|
|
from .category import LocalizedField |
|
|
|
|
|
|
|
from ..models import ( |
|
|
|
Hadis, HadisStatus, HadisTag, HadisTransmitter, |
|
|
|
@ -11,12 +12,16 @@ from ..models import ( |
|
|
|
from apps.library.serializers import BookSerializer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HadisCollectionListSerializer(serializers.ModelSerializer): |
|
|
|
thumbnail = serializers.SerializerMethodField() |
|
|
|
title = LocalizedField() |
|
|
|
summary = LocalizedField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = HadisCollection |
|
|
|
fields = ['id', 'title', 'slug', 'thumbnail'] |
|
|
|
fields = ['id', 'title', 'summary','slug', 'thumbnail'] |
|
|
|
|
|
|
|
def get_thumbnail(self, obj): |
|
|
|
if obj.thumbnail: |
|
|
|
@ -35,6 +40,8 @@ class HadisSyncSerializer(serializers.ModelSerializer): |
|
|
|
narrators = serializers.SerializerMethodField() |
|
|
|
explanations = serializers.SerializerMethodField() |
|
|
|
corrections = serializers.SerializerMethodField() |
|
|
|
title =LocalizedField() |
|
|
|
title_narrator = LocalizedField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = Hadis |
|
|
|
@ -149,7 +156,10 @@ class HadisListSerializer(serializers.ModelSerializer): |
|
|
|
"""Serializer for Hadis list""" |
|
|
|
category = serializers.SerializerMethodField() |
|
|
|
translation = serializers.SerializerMethodField() |
|
|
|
title = serializers.SerializerMethodField() |
|
|
|
title = LocalizedField() |
|
|
|
title_narrator = LocalizedField() |
|
|
|
text = LocalizedField() |
|
|
|
title_narrator = LocalizedField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = Hadis |
|
|
|
@ -159,9 +169,17 @@ class HadisListSerializer(serializers.ModelSerializer): |
|
|
|
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': obj.category.title, |
|
|
|
'title': out, |
|
|
|
'slug':obj.category.slug, |
|
|
|
'source_type':obj.category.source_type, |
|
|
|
'sect_type':obj.category.sect.sect_type |
|
|
|
@ -174,18 +192,18 @@ class HadisListSerializer(serializers.ModelSerializer): |
|
|
|
language_code = getattr(request, 'LANGUAGE_CODE', 'en') |
|
|
|
return obj.translation.get(language_code) |
|
|
|
|
|
|
|
def get_title(self,obj): |
|
|
|
# ✅ Get language from request |
|
|
|
# def get_title(self,obj): |
|
|
|
# # ✅ 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.get_title(lang) |
|
|
|
# # ✅ CALL THE MODEL METHOD! |
|
|
|
# return obj.get_title(lang) |
|
|
|
|
|
|
|
|
|
|
|
class HadisStatusSerializer(serializers.ModelSerializer): |
|
|
|
"""Serializer for HadisStatus""" |
|
|
|
|
|
|
|
title = LocalizedField() |
|
|
|
class Meta: |
|
|
|
model = HadisStatus |
|
|
|
fields = ['id', 'title', 'color'] |
|
|
|
@ -193,6 +211,7 @@ class HadisStatusSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
class HadisTagSerializer(serializers.ModelSerializer): |
|
|
|
"""Serializer for HadisTag""" |
|
|
|
title = LocalizedField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = HadisTag |
|
|
|
@ -201,6 +220,9 @@ class HadisTagSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
class TransmitterSerializer(serializers.ModelSerializer): |
|
|
|
"""Serializer for Transmitters""" |
|
|
|
full_name = LocalizedField() |
|
|
|
known_as = LocalizedField() |
|
|
|
nickname = LocalizedField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = Transmitters |
|
|
|
@ -211,6 +233,9 @@ class TransmitterSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
class TransmitterShortSerializer(serializers.ModelSerializer): |
|
|
|
"""Serializer for Transmitters""" |
|
|
|
full_name = LocalizedField() |
|
|
|
known_as = LocalizedField() |
|
|
|
nickname = LocalizedField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = Transmitters |
|
|
|
@ -220,6 +245,8 @@ class TransmitterShortSerializer(serializers.ModelSerializer): |
|
|
|
] |
|
|
|
class TransmitterOpinionSerializer(serializers.ModelSerializer): |
|
|
|
""" Serializer for TransmitterOpinions """ |
|
|
|
scholar_name = LocalizedField() |
|
|
|
opinion_text = LocalizedField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = TransmitterOpinion |
|
|
|
@ -227,6 +254,8 @@ class TransmitterOpinionSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
class TransmitterOriginalTextSerializer(serializers.ModelSerializer): |
|
|
|
""" Serializer for TransmitterOriginalText """ |
|
|
|
title = LocalizedField() |
|
|
|
text = LocalizedField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = TransmitterOriginalText |
|
|
|
@ -235,6 +264,16 @@ class TransmitterOriginalTextSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
class TransmitterDetailSerializer(serializers.ModelSerializer): |
|
|
|
""" Serializer for Details of Transmitters """ |
|
|
|
|
|
|
|
full_name = LocalizedField() |
|
|
|
known_as = LocalizedField() |
|
|
|
nickname = LocalizedField() |
|
|
|
kunya = LocalizedField() |
|
|
|
origin = LocalizedField() |
|
|
|
lived_in = LocalizedField() |
|
|
|
died_in = LocalizedField() |
|
|
|
description = LocalizedField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = Transmitters |
|
|
|
fields = [ |
|
|
|
@ -316,6 +355,7 @@ class TransmitterSyncSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
|
|
|
|
class HadisTransmitterSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
"""Serializer for HadisTransmitter with transmitter details""" |
|
|
|
transmitter = TransmitterShortSerializer(read_only=True) |
|
|
|
narrator_layer_description = serializers.SerializerMethodField() |
|
|
|
@ -328,7 +368,13 @@ class HadisTransmitterSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
def get_narrator_layer_description(self, obj): |
|
|
|
"""Get narrator layer description""" |
|
|
|
return obj.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) |
|
|
|
|
|
|
|
|
|
|
|
def get_layer(self, obj): |
|
|
|
"""Get narrator layer slug""" |
|
|
|
@ -387,12 +433,17 @@ class HadisReferenceSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
def get_book_title(self, obj): |
|
|
|
"""Get book title""" |
|
|
|
# ✅ Get language from request |
|
|
|
request = self.context.get('request') |
|
|
|
lang = request.query_params.get('lang', 'ru') if request else 'ru' |
|
|
|
# ✅ CALL THE MODEL METHOD! |
|
|
|
try : |
|
|
|
title = obj.book_reference.title |
|
|
|
title = obj.book_reference.title.get(lang) |
|
|
|
return title |
|
|
|
except: |
|
|
|
return None |
|
|
|
|
|
|
|
|
|
|
|
# def get_book_images(self, obj): |
|
|
|
# """Get book images""" |
|
|
|
# try : |
|
|
|
@ -408,11 +459,15 @@ class HadisReferenceSerializer(serializers.ModelSerializer): |
|
|
|
return authors |
|
|
|
except: |
|
|
|
return None |
|
|
|
|
|
|
|
|
|
|
|
def get_book_description(self, obj): |
|
|
|
"""Get book description""" |
|
|
|
# ✅ Get language from request |
|
|
|
request = self.context.get('request') |
|
|
|
lang = request.query_params.get('lang', 'ru') if request else 'ru' |
|
|
|
try : |
|
|
|
description = obj.book_reference.description |
|
|
|
description = obj.book_reference.description.get(lang) |
|
|
|
return description |
|
|
|
except: |
|
|
|
return None |
|
|
|
@ -420,21 +475,36 @@ class HadisReferenceSerializer(serializers.ModelSerializer): |
|
|
|
class HadisCorrectionSerializer(serializers.ModelSerializer): |
|
|
|
"""Serializer for HadisCorrection""" |
|
|
|
hadis_translation = serializers.SerializerMethodField() |
|
|
|
title = LocalizedField() |
|
|
|
description = LocalizedField() |
|
|
|
class Meta: |
|
|
|
model = HadisCorrection |
|
|
|
fields = ['id', 'title', 'description', 'hadis_translation','share_link', 'created_at', 'updated_at'] |
|
|
|
|
|
|
|
def get_hadis_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) |
|
|
|
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() |
|
|
|
category = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
title = LocalizedField() |
|
|
|
title_narrator = LocalizedField() |
|
|
|
text = LocalizedField() |
|
|
|
explanation = LocalizedField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = Hadis |
|
|
|
@ -448,12 +518,21 @@ class HadisBasicSerializer(serializers.ModelSerializer): |
|
|
|
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': obj.category.title, |
|
|
|
'title': out, |
|
|
|
'slug':obj.category.slug, |
|
|
|
'source_type':obj.category.source_type, |
|
|
|
'sect_type':obj.category.sect.sect_type |
|
|
|
@ -470,6 +549,8 @@ class HadisDetailSerializer(serializers.ModelSerializer): |
|
|
|
read_only=True |
|
|
|
) |
|
|
|
reference_images = SerializerMethodField() |
|
|
|
hadis_status_text = LocalizedField() |
|
|
|
address = LocalizedField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = Hadis |
|
|
|
|