You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

165 lines
4.6 KiB

from rest_framework import serializers
from ..models import Hadis, HadisCategory, HadisStatus, HadisTag, HadisCorrection, HadisInterpretation, HadisSect
from .category import LocalizedField
class AdminHadisCategorySerializer(serializers.ModelSerializer):
sect_type = serializers.CharField(source='sect.sect_type', read_only=True)
title = LocalizedField()
description = LocalizedField()
class Meta:
model = HadisCategory
fields = [
"id",
"title",
"slug",
"source_type",
"order",
"sect",
"sect_type",
"description",
]
class AdminHadisStatusSerializer(serializers.ModelSerializer):
title = LocalizedField()
description = LocalizedField()
class Meta:
model = HadisStatus
fields = ["id", "title", "slug", "color", "order", "description"]
class AdminHadisTagSerializer(serializers.ModelSerializer):
title = LocalizedField()
class Meta:
model = HadisTag
fields = ["id", "title", "status"]
class AdminHadisListSerializer(serializers.ModelSerializer):
category_detail = AdminHadisCategorySerializer(source="category", read_only=True)
hadis_status_detail = AdminHadisStatusSerializer(source="hadis_status", read_only=True)
title = LocalizedField()
title_narrator = LocalizedField()
translation = LocalizedField()
class Meta:
model = Hadis
fields = [
"id",
"number",
"slug",
"title",
"title_narrator",
"text",
"translation",
"status",
"category",
"category_detail",
"hadis_status",
"hadis_status_detail",
"created_at",
"updated_at",
]
read_only_fields = ["id", "slug", "created_at", "updated_at"]
class AdminHadisDetailSerializer(serializers.ModelSerializer):
category_detail = AdminHadisCategorySerializer(source="category", read_only=True)
hadis_status_detail = AdminHadisStatusSerializer(source="hadis_status", read_only=True)
tags_detail = AdminHadisTagSerializer(source="tags", many=True, read_only=True)
category = serializers.PrimaryKeyRelatedField(
queryset=HadisCategory.objects.all(),
required=False,
allow_null=True,
)
hadis_status = serializers.PrimaryKeyRelatedField(
queryset=HadisStatus.objects.all(),
required=False,
allow_null=True,
)
tags = serializers.PrimaryKeyRelatedField(
queryset=HadisTag.objects.all(),
many=True,
required=False,
)
class Meta:
model = Hadis
fields = [
"id",
"number",
"slug",
"category",
"category_detail",
"title_narrator",
"title",
"description",
"text",
"translation",
"status",
"hadis_status",
"hadis_status_detail",
"hadis_status_text",
"address",
"links",
"tags",
"tags_detail",
"share_link",
"explanation",
"created_at",
"updated_at",
"embedded_in",
]
read_only_fields = ["id", "slug", "share_link", "created_at", "updated_at"]
def create(self, validated_data):
tags = validated_data.pop("tags", [])
hadis = super().create(validated_data)
if tags:
hadis.tags.set(tags)
return hadis
def update(self, instance, validated_data):
tags = validated_data.pop("tags", None)
hadis = super().update(instance, validated_data)
if tags is not None:
hadis.tags.set(tags)
return hadis
class AdminHadisCorrectionSerializer(serializers.ModelSerializer):
class Meta:
model = HadisCorrection
fields = [
"id",
"hadis",
"title",
"slug",
"text",
"translation",
"priority",
"created_at",
"updated_at",
]
read_only_fields = ["id", "slug", "created_at", "updated_at"]
class AdminHadisInterpretationSerializer(serializers.ModelSerializer):
class Meta:
model = HadisInterpretation
fields = [
"id",
"category",
"title",
"text",
"translation",
"priority",
"created_at",
"updated_at",
]
read_only_fields = ["id", "created_at", "updated_at"]