Files
qlockify-backend-deployment/apps/projects/api/serializers.py

57 lines
1.9 KiB
Python

from rest_framework import serializers
from core.serializers.base import BaseModelSerializer
from apps.projects.models import Project
class ProjectSerializer(BaseModelSerializer):
class Meta:
model = Project
fields = BaseModelSerializer.Meta.fields + (
"workspace",
"name",
"client",
"description",
"is_archived",
"color",
)
read_only_fields = fields
def to_representation(self, instance):
representation = super().to_representation(instance)
if instance.client:
representation['client'] = {
'id': instance.client.id,
'name': instance.client.name
}
return representation
class ProjectCreateSerializer(serializers.Serializer):
workspace = serializers.UUIDField()
name = serializers.CharField(max_length=255)
client = serializers.UUIDField(required=False, allow_null=True)
description = serializers.CharField(required=False, allow_blank=True, default="")
color = serializers.CharField(max_length=7, required=False, allow_blank=True, default="")
class ProjectUpdateSerializer(serializers.Serializer):
name = serializers.CharField(max_length=255, required=False)
client = serializers.UUIDField(required=False, allow_null=True)
description = serializers.CharField(required=False, allow_blank=True)
color = serializers.CharField(max_length=7, required=False, allow_blank=True)
is_archived = serializers.BooleanField(required=False)
class ProjectAccessQuerySerializer(serializers.Serializer):
workspace = serializers.UUIDField()
user = serializers.UUIDField()
class ProjectAccessMutationSerializer(serializers.Serializer):
workspace = serializers.UUIDField()
user = serializers.UUIDField()
project_ids = serializers.ListField(
child=serializers.UUIDField(),
allow_empty=False,
)