58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
from rest_framework import serializers
|
|
|
|
from core.apps.evaluation.models import ReferenceitemModel
|
|
|
|
|
|
class BaseReferenceitemSerializer(serializers.ModelSerializer):
|
|
type_display = serializers.CharField(source="get_type_display", read_only=True)
|
|
parent_name = serializers.CharField(source="parent.name", read_only=True, default=None)
|
|
|
|
class Meta:
|
|
model = ReferenceitemModel
|
|
fields = [
|
|
"id",
|
|
"type",
|
|
"type_display",
|
|
"name",
|
|
"parent",
|
|
"parent_name",
|
|
"order",
|
|
"is_active",
|
|
]
|
|
|
|
|
|
class ListReferenceitemSerializer(BaseReferenceitemSerializer):
|
|
class Meta(BaseReferenceitemSerializer.Meta):
|
|
pass
|
|
|
|
|
|
class RetrieveReferenceitemSerializer(BaseReferenceitemSerializer):
|
|
children = serializers.SerializerMethodField()
|
|
|
|
class Meta(BaseReferenceitemSerializer.Meta):
|
|
fields = BaseReferenceitemSerializer.Meta.fields + ["children"]
|
|
|
|
def get_children(self, obj):
|
|
children = obj.children.filter(is_active=True).order_by("order", "name")
|
|
return ListReferenceitemSerializer(children, many=True).data
|
|
|
|
|
|
class CreateReferenceitemSerializer(BaseReferenceitemSerializer):
|
|
class Meta(BaseReferenceitemSerializer.Meta):
|
|
fields = [
|
|
"type",
|
|
"name",
|
|
"parent",
|
|
"order",
|
|
"is_active",
|
|
]
|
|
|
|
|
|
class EvaluationPurposeSerializer(serializers.ModelSerializer):
|
|
label = serializers.CharField(source="name")
|
|
value = serializers.IntegerField(source="id")
|
|
|
|
class Meta:
|
|
model = ReferenceitemModel
|
|
fields = ["label", "value"]
|