From ba26a18682ea0fb266115ad50ac7d7ccf06ddcfb Mon Sep 17 00:00:00 2001 From: Jon Date: Sat, 14 Jun 2025 12:58:48 +0930 Subject: [PATCH] feat(project_management): Add Notes Serializer for ProjectMilestone model ref: #833 #830 --- .../centurionmodelnote_projectmilestone.py | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 app/project_management/serializers/centurionmodelnote_projectmilestone.py diff --git a/app/project_management/serializers/centurionmodelnote_projectmilestone.py b/app/project_management/serializers/centurionmodelnote_projectmilestone.py new file mode 100644 index 00000000..56de7dd5 --- /dev/null +++ b/app/project_management/serializers/centurionmodelnote_projectmilestone.py @@ -0,0 +1,87 @@ +from rest_framework import serializers + +from drf_spectacular.utils import extend_schema_serializer + +from access.serializers.organization import (TenantBaseSerializer) + +from centurion.models.meta import ProjectMilestoneCenturionModelNote # pylint: disable=E0401:import-error disable=E0611:no-name-in-module + +from core.serializers.centurionmodelnote import ( # pylint: disable=W0611:unused-import + BaseSerializer, + ModelSerializer as BaseModelModelSerializer, + ViewSerializer as BaseModelViewSerializer +) + + + +@extend_schema_serializer(component_name = 'ProjectMilestoneModelNoteModelSerializer') +class ModelSerializer( + BaseModelModelSerializer, +): + + + _urls = serializers.SerializerMethodField('get_url') + + def get_url(self, item) -> dict: + + return { + '_self': item.get_url( request = self._context['view'].request ), + } + + + class Meta: + + model = ProjectMilestoneCenturionModelNote + + fields = [ + 'id', + 'organization', + 'display_name', + 'body', + 'created_by', + 'modified_by', + 'content_type', + 'model', + 'created', + 'modified', + '_urls', + ] + + read_only_fields = [ + 'id', + 'display_name', + 'organization', + 'created_by', + 'modified_by', + 'content_type', + 'model', + 'created', + 'modified', + '_urls', + ] + + + + def validate(self, attrs): + + is_valid = False + + note_model = self.Meta.model.model.field.related_model + + attrs['model'] = note_model.objects.get( + id = int( self.context['view'].kwargs['model_id'] ) + ) + + + is_valid = super().validate(attrs) + + return is_valid + + +@extend_schema_serializer(component_name = 'ProjectMilestoneModelNoteViewSerializer') +class ViewSerializer( + ModelSerializer, + BaseModelViewSerializer, +): + + organization = TenantBaseSerializer( many = False, read_only = True )