feat(accounting): Add Notes Serializer for AssetBase model

ref: #862 #857
This commit is contained in:
2025-07-10 19:32:57 +09:30
parent 2482148466
commit 46b4df5dc1
3 changed files with 106 additions and 47 deletions

View File

@ -0,0 +1,19 @@
# Generated by Django 5.1.10 on 2025-07-10 09:31
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("accounting", "0002_alter_assetbase_id_alter_assetbase_model_notes_and_more"),
]
operations = [
migrations.DeleteModel(
name="AssetBaseHistory",
),
migrations.DeleteModel(
name="AssetBaseNotes",
),
]

View File

@ -1,47 +0,0 @@
from django.db import models
from accounting.models.asset_base import AssetBase
from core.models.model_notes import ModelNotes
class AssetBaseNotes(
ModelNotes
):
class Meta:
db_table = 'accounting_assetbase_notes'
ordering = ModelNotes._meta.ordering
verbose_name = 'Asset Note'
verbose_name_plural = 'Asset Notes'
model = models.ForeignKey(
AssetBase,
blank = False,
help_text = 'Model this note belongs to',
null = False,
on_delete = models.CASCADE,
related_name = 'notes',
verbose_name = 'Model',
)
app_namespace = 'accounting'
table_fields: list = []
page_layout: dict = []
def get_url_kwargs(self) -> dict:
return {
'model_id': self.model.pk,
'pk': self.pk
}

View File

@ -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 AssetBaseCenturionModelNote # 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 = 'AssetBaseModelNoteModelSerializer')
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 = AssetBaseCenturionModelNote
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 = 'AssetBaseModelNoteViewSerializer')
class ViewSerializer(
ModelSerializer,
BaseModelViewSerializer,
):
organization = TenantBaseSerializer( many = False, read_only = True )