fix(projects): add client's name to the project's response to display in frontend
This commit is contained in:
@@ -24,6 +24,16 @@ class ProjectSerializer(BaseModelSerializer):
|
|||||||
)
|
)
|
||||||
read_only_fields = fields
|
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):
|
class ProjectCreateSerializer(serializers.Serializer):
|
||||||
"""
|
"""
|
||||||
@@ -31,9 +41,9 @@ class ProjectCreateSerializer(serializers.Serializer):
|
|||||||
We use a standard Serializer here to decouple validation from the model,
|
We use a standard Serializer here to decouple validation from the model,
|
||||||
keeping business logic in the service layer.
|
keeping business logic in the service layer.
|
||||||
"""
|
"""
|
||||||
workspace_id = serializers.UUIDField()
|
workspace = serializers.UUIDField()
|
||||||
name = serializers.CharField(max_length=255)
|
name = serializers.CharField(max_length=255)
|
||||||
client_id = serializers.UUIDField(required=False, allow_null=True)
|
client = serializers.UUIDField(required=False, allow_null=True)
|
||||||
description = serializers.CharField(required=False, allow_blank=True, default="")
|
description = serializers.CharField(required=False, allow_blank=True, default="")
|
||||||
color = serializers.CharField(max_length=7, required=False, allow_blank=True, default="")
|
color = serializers.CharField(max_length=7, required=False, allow_blank=True, default="")
|
||||||
|
|
||||||
@@ -43,7 +53,7 @@ class ProjectUpdateSerializer(serializers.Serializer):
|
|||||||
Serializer for validating input data during project updates.
|
Serializer for validating input data during project updates.
|
||||||
"""
|
"""
|
||||||
name = serializers.CharField(max_length=255, required=False)
|
name = serializers.CharField(max_length=255, required=False)
|
||||||
client_id = serializers.UUIDField(required=False, allow_null=True)
|
clien = serializers.UUIDField(required=False, allow_null=True)
|
||||||
description = serializers.CharField(required=False, allow_blank=True)
|
description = serializers.CharField(required=False, allow_blank=True)
|
||||||
color = serializers.CharField(max_length=7, required=False, allow_blank=True)
|
color = serializers.CharField(max_length=7, required=False, allow_blank=True)
|
||||||
is_archived = serializers.BooleanField(required=False)
|
is_archived = serializers.BooleanField(required=False)
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ from django_filters.rest_framework import DjangoFilterBackend
|
|||||||
|
|
||||||
from core.paginations.limit_offset import CustomLimitOffsetPagination
|
from core.paginations.limit_offset import CustomLimitOffsetPagination
|
||||||
|
|
||||||
|
from apps.workspaces.models import Workspace
|
||||||
|
from apps.clients.models import Client
|
||||||
from apps.projects.models import (
|
from apps.projects.models import (
|
||||||
Project,
|
Project,
|
||||||
ProjectMembership,
|
ProjectMembership,
|
||||||
@@ -94,11 +96,13 @@ class ProjectViewSet(ModelViewSet):
|
|||||||
serializer = self.get_serializer(data=request.data)
|
serializer = self.get_serializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
|
|
||||||
|
workspace = get_object_or_404(Workspace, id=serializer.validated_data["workspace"], is_deleted=False)
|
||||||
|
client = get_object_or_404(Client, id=serializer.validated_data.get("client"), is_deleted=False)
|
||||||
project = create_project(
|
project = create_project(
|
||||||
user=request.user,
|
user=request.user,
|
||||||
workspace_id=serializer.validated_data["workspace_id"],
|
workspace=workspace,
|
||||||
name=serializer.validated_data["name"],
|
name=serializer.validated_data["name"],
|
||||||
client_id=serializer.validated_data.get("client_id"),
|
client=client,
|
||||||
description=serializer.validated_data.get("description", ""),
|
description=serializer.validated_data.get("description", ""),
|
||||||
color=serializer.validated_data.get("color", "")
|
color=serializer.validated_data.get("color", "")
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user