Browse Source

feat: implement dynamic localization fields and category serializers for Hadis models

master
H.shokhmgar86 2 weeks ago
parent
commit
ee1e9d830e
  1. 4
      apps/hadis/serializers/category.py
  2. 4
      apps/hadis/serializers/hadis.py

4
apps/hadis/serializers/category.py

@ -8,14 +8,14 @@ from django.utils.translation import get_language
def _get_localized_item_value(item):
"""
Prefer `title`, but fall back to `text` or `name` for older/mis-shaped localized entries.
Prefer `title`, but fall back to `text`, `name`, or `description` for localized entries.
"""
if not item:
return None
if isinstance(item, str):
return item
if isinstance(item, dict):
return item.get("title") or item.get("text") or item.get("name")
return item.get("title") or item.get("text") or item.get("name") or item.get("description")
return str(item)
def get_localized_text(json_list, request=None, fallback_lang="en", language_code=None):

4
apps/hadis/serializers/hadis.py

@ -1288,6 +1288,7 @@ class HadisShortSerializer(serializers.ModelSerializer):
class HadisDetailSerializer(serializers.ModelSerializer):
"""Detailed serializer for Hadis with core information (transmitters and corrections moved to separate endpoints)"""
hadis_status = HadisStatusSerializer(read_only=True)
status_text = LocalizedField(source='hadis_status_text')
tags = HadisTagSerializer(many=True, read_only=True)
references = HadisReferenceSerializer(
many=True,
@ -1296,12 +1297,11 @@ class HadisDetailSerializer(serializers.ModelSerializer):
reference_images = SerializerMethodField()
address = LocalizedField()
category_slug = serializers.CharField(source='category.slug', read_only=True)
# address_details = serializers.SerializerMethodField()
class Meta:
model = Hadis
fields = [
'id', 'number', 'slug', 'category_id', 'category_slug', 'hadis_status','links','share_link',
'id', 'number', 'slug', 'category_id', 'category_slug', 'hadis_status', 'status_text', 'links', 'share_link',
'tags', 'references', 'reference_images', 'address'
]

Loading…
Cancel
Save