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)