From 3b5673ae4b1e2721f8fe300ccf27333da72bfe06 Mon Sep 17 00:00:00 2001 From: Jon Date: Thu, 10 Jul 2025 19:50:53 +0930 Subject: [PATCH] feat(itam): Add Notes Serializer for ITAMAssetBase model ref: #862 #858 --- .../centurionmodelnote_itamassetbase.py | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 app/itam/serializers/centurionmodelnote_itamassetbase.py diff --git a/app/itam/serializers/centurionmodelnote_itamassetbase.py b/app/itam/serializers/centurionmodelnote_itamassetbase.py new file mode 100644 index 00000000..f1b6adac --- /dev/null +++ b/app/itam/serializers/centurionmodelnote_itamassetbase.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 ITAMAssetBaseCenturionModelNote # 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 = 'ITAMAssetBaseModelNoteModelSerializer') +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 = ITAMAssetBaseCenturionModelNote + + 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 = 'ITAMAssetBaseModelNoteViewSerializer') +class ViewSerializer( + ModelSerializer, + BaseModelViewSerializer, +): + + organization = TenantBaseSerializer( many = False, read_only = True )