|
|
@ -1,14 +1,19 @@ |
|
|
|
|
|
from turtle import title |
|
|
from rest_framework import serializers |
|
|
from rest_framework import serializers |
|
|
|
|
|
from django.utils.translation import get_language |
|
|
|
|
|
|
|
|
from ..serializers import HadisListSerializer,HadisBasicSerializer |
|
|
|
|
|
|
|
|
from ..serializers import HadisListSerializer,HadisBasicSerializer,LocalizedField |
|
|
from ..models import BookReference , BookAuthor , BookReferenceImage, HadisReference , BookAttribute |
|
|
from ..models import BookReference , BookAuthor , BookReferenceImage, HadisReference , BookAttribute |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BookAuthorSerializer(serializers.ModelSerializer): |
|
|
class BookAuthorSerializer(serializers.ModelSerializer): |
|
|
|
|
|
name = LocalizedField() |
|
|
class Meta: |
|
|
class Meta: |
|
|
model = BookAuthor |
|
|
model = BookAuthor |
|
|
fields = ['id','name'] |
|
|
fields = ['id','name'] |
|
|
|
|
|
|
|
|
class BookReferenceImageSerializer(serializers.ModelSerializer): |
|
|
class BookReferenceImageSerializer(serializers.ModelSerializer): |
|
|
|
|
|
description = LocalizedField() |
|
|
class Meta: |
|
|
class Meta: |
|
|
model = BookReferenceImage |
|
|
model = BookReferenceImage |
|
|
fields = ['id','image','description','order'] |
|
|
fields = ['id','image','description','order'] |
|
|
@ -19,21 +24,55 @@ class BookReferenceSerializer(serializers.ModelSerializer): |
|
|
read_only = True , |
|
|
read_only = True , |
|
|
source = 'bookreference_set' |
|
|
source = 'bookreference_set' |
|
|
) |
|
|
) |
|
|
|
|
|
title = LocalizedField() |
|
|
|
|
|
description = LocalizedField() |
|
|
author = serializers.SerializerMethodField() |
|
|
author = serializers.SerializerMethodField() |
|
|
class Meta: |
|
|
class Meta: |
|
|
model = BookReference |
|
|
model = BookReference |
|
|
fields = ['id','title','slug','rate','author','description','image','volume'] |
|
|
fields = ['id','title','slug','rate','author','description','image','volume'] |
|
|
def get_author (self,obj): |
|
|
|
|
|
author = obj.authors.all() |
|
|
|
|
|
return [ |
|
|
|
|
|
|
|
|
def get_author(self, obj): |
|
|
|
|
|
request = self.context.get("request") |
|
|
|
|
|
# Prefer request.LANGUAGE_CODE if you use LocaleMiddleware |
|
|
|
|
|
language_code = getattr(request, "LANGUAGE_CODE", None) if request else None |
|
|
|
|
|
print(language_code,1) |
|
|
|
|
|
if not language_code: |
|
|
|
|
|
language_code =get_language() or "en" # fallback [web:164][web:165] |
|
|
|
|
|
|
|
|
|
|
|
print(language_code,2) |
|
|
|
|
|
|
|
|
|
|
|
authors = obj.authors.all() |
|
|
|
|
|
result = [] |
|
|
|
|
|
|
|
|
|
|
|
for author in authors: |
|
|
|
|
|
# author.name is your list of dicts |
|
|
|
|
|
name_items = author.name or [] |
|
|
|
|
|
# find item with matching language_code |
|
|
|
|
|
text = None |
|
|
|
|
|
for item in name_items: |
|
|
|
|
|
if item.get("language_code") == language_code: |
|
|
|
|
|
print(f'we got language-code{language_code}') |
|
|
|
|
|
text = item.get("text") |
|
|
|
|
|
break |
|
|
|
|
|
|
|
|
|
|
|
# fallback: if not found, use first item or None |
|
|
|
|
|
print(text,'this is text') |
|
|
|
|
|
if text is None and name_items: |
|
|
|
|
|
print('no we didnt') |
|
|
|
|
|
|
|
|
|
|
|
text = name_items[0].get("text") |
|
|
|
|
|
|
|
|
|
|
|
result.append( |
|
|
{ |
|
|
{ |
|
|
'id': author.id, |
|
|
|
|
|
'name': author.name |
|
|
|
|
|
|
|
|
"id": author.id, |
|
|
|
|
|
"name": text, |
|
|
} |
|
|
} |
|
|
for author in author |
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
return result |
|
|
|
|
|
|
|
|
class BookAttributeSerializer(serializers.ModelSerializer): |
|
|
class BookAttributeSerializer(serializers.ModelSerializer): |
|
|
|
|
|
title = LocalizedField() |
|
|
|
|
|
value = LocalizedField() |
|
|
class Meta: |
|
|
class Meta: |
|
|
model = BookAttribute |
|
|
model = BookAttribute |
|
|
fields = ['id', 'title', 'value','book_reference'] |
|
|
fields = ['id', 'title', 'value','book_reference'] |
|
|
@ -63,6 +102,10 @@ class BookDetailSerializer(serializers.ModelSerializer): |
|
|
# ) |
|
|
# ) |
|
|
|
|
|
|
|
|
hadis = serializers.SerializerMethodField() |
|
|
hadis = serializers.SerializerMethodField() |
|
|
|
|
|
title = LocalizedField() |
|
|
|
|
|
language = LocalizedField() |
|
|
|
|
|
publisher = LocalizedField() |
|
|
|
|
|
description = LocalizedField() |
|
|
|
|
|
|
|
|
class Meta: |
|
|
class Meta: |
|
|
model = BookReference |
|
|
model = BookReference |
|
|
|