feat(access): New model Entity History

ref: #707 #706
This commit is contained in:
2025-04-03 16:30:26 +09:30
parent 44ec81c3ae
commit 8c0b9bf182
4 changed files with 103 additions and 3 deletions

View File

@ -0,0 +1,29 @@
# Generated by Django 5.1.5 on 2025-04-03 06:26
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0007_contact'),
('core', '0020_alter_ticketlinkeditem_item_type'),
]
operations = [
migrations.CreateModel(
name='EntityHistory',
fields=[
('modelhistory_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.modelhistory')),
('model', models.ForeignKey(help_text='Model this note belongs to', on_delete=django.db.models.deletion.CASCADE, related_name='history', to='access.entity', verbose_name='Model')),
],
options={
'verbose_name': 'Entity History',
'verbose_name_plural': 'Entity History',
'db_table': 'access_entity_history',
'ordering': ['-created'],
},
bases=('core.modelhistory',),
),
]

View File

@ -87,8 +87,10 @@ class Entity(
if getattr(self, related_object.name, None):
return related_object.name
break
if not str(related_object.name).endswith('history'):
return related_object.name
break
return ''
@ -209,3 +211,16 @@ class Entity(
self.entity_type = str(related_model._meta.verbose_name).lower().replace(' ', '_')
super().save(force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields)
def save_history(self, before: dict, after: dict) -> bool:
from access.models.entity_history import EntityHistory
history = super().save_history(
before = before,
after = after,
history_model = EntityHistory
)
return history

View File

@ -0,0 +1,55 @@
from django.db import models
from access.models.entity import Entity
from core.models.model_history import ModelHistory
from devops.models.feature_flag import FeatureFlag
class EntityHistory(
ModelHistory
):
class Meta:
db_table = 'access_entity_history'
ordering = ModelHistory._meta.ordering
verbose_name = 'Entity History'
verbose_name_plural = 'Entity History'
model = models.ForeignKey(
Entity,
blank = False,
help_text = 'Model this note belongs to',
null = False,
on_delete = models.CASCADE,
related_name = 'history',
verbose_name = 'Model',
)
table_fields: list = []
page_layout: dict = []
def get_object(self):
return self
def get_serialized_model(self, serializer_context):
model = None
from access.serializers.entity import BaseSerializer
model = BaseSerializer(self.model, context = serializer_context)
return model

View File

@ -10,7 +10,8 @@ from drf_spectacular.utils import (
PolymorphicProxySerializer
)
from access.models.team_history import TeamHistory # pylint: disable=W0611:unused-import
# THis import only exists so that the migrations can be created
from access.models.entity_history import EntityHistory # pylint: disable=W0611:unused-import
from access.models.entity import (
Entity,
)