|
|
|
@ -171,9 +171,29 @@ class ArabicLocalizedField(serializers.Field): |
|
|
|
class SimpleCategory(serializers.ModelSerializer): |
|
|
|
title = LocalizedField() |
|
|
|
description = LocalizedField() |
|
|
|
sect_type = serializers.CharField(source='sect.sect_type', read_only=True) |
|
|
|
ancestors = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = HadisCategory |
|
|
|
fields = ['id', 'title','description'] |
|
|
|
fields = ['id', 'title', 'slug', 'source_type', 'sect_type', 'description', 'ancestors'] |
|
|
|
|
|
|
|
def get_ancestors(self, obj): |
|
|
|
if not obj: |
|
|
|
return [] |
|
|
|
request = self.context.get('request') |
|
|
|
ancestors_qs = obj.get_ancestors(include_self=False).select_related('sect') |
|
|
|
result = [] |
|
|
|
for a in ancestors_qs: |
|
|
|
result.append({ |
|
|
|
"id": a.id, |
|
|
|
"title": get_localized_text(a.title, request=request) or a.slug, |
|
|
|
"slug": a.slug, |
|
|
|
"source_type": a.source_type, |
|
|
|
"sect_type": a.sect.sect_type if a.sect else None, |
|
|
|
"has_hadis": False, |
|
|
|
}) |
|
|
|
return result |
|
|
|
|
|
|
|
class HadisCategorySectListSerializer(serializers.ModelSerializer): |
|
|
|
"""Serializer for HadisSect list with grouped response""" |
|
|
|
|