feat(itim): Change model to inherit from CenturionModel for Port model

ref: #824 #827 closes #589
This commit is contained in:
2025-06-13 13:20:32 +09:30
parent 6163b4ad2d
commit 00c3eff30e
3 changed files with 141 additions and 28 deletions

View File

@ -0,0 +1,133 @@
# Generated by Django 5.1.9 on 2025-06-13 03:36
import access.models.tenancy_abstract
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("access", "0016_remove_tenant_slug_alter_tenant_manager_and_more"),
("core", "0033_alter_ticketcommentcategory_parent_and_more"),
("itim", "0012_remove_clustertype_is_global_remove_clustertype_slug_and_more"),
]
operations = [
migrations.RemoveField(
model_name="port",
name="is_global",
),
migrations.AlterField(
model_name="port",
name="description",
field=models.CharField(
blank=True,
help_text="Short description of port",
max_length=80,
null=True,
verbose_name="Description",
),
),
migrations.AlterField(
model_name="port",
name="id",
field=models.AutoField(
help_text="ID of the item",
primary_key=True,
serialize=False,
unique=True,
verbose_name="ID",
),
),
migrations.AlterField(
model_name="port",
name="model_notes",
field=models.TextField(
blank=True,
help_text="Tid bits of information",
null=True,
verbose_name="Notes",
),
),
migrations.AlterField(
model_name="port",
name="organization",
field=models.ForeignKey(
help_text="Tenant this belongs to",
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to="access.tenant",
validators=[
access.models.tenancy_abstract.TenancyAbstractModel.validatate_organization_exists
],
verbose_name="Tenant",
),
),
migrations.CreateModel(
name="PortAuditHistory",
fields=[
(
"centurionaudit_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="core.centurionaudit",
),
),
(
"model",
models.ForeignKey(
help_text="Model this history belongs to",
on_delete=django.db.models.deletion.CASCADE,
related_name="audit_history",
to="itim.port",
verbose_name="Model",
),
),
],
options={
"verbose_name": "Port History",
"verbose_name_plural": "Port Histories",
"db_table": "itim_port_audithistory",
"managed": True,
},
bases=("core.centurionaudit",),
),
migrations.CreateModel(
name="PortCenturionModelNote",
fields=[
(
"centurionmodelnote_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="core.centurionmodelnote",
),
),
(
"model",
models.ForeignKey(
help_text="Model this note belongs to",
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to="itim.port",
verbose_name="Model",
),
),
],
options={
"verbose_name": "Port Note",
"verbose_name_plural": "Port Notes",
"db_table": "itim_port_centurionmodelnote",
"managed": True,
},
bases=("core.centurionmodelnote",),
),
]

View File

@ -10,13 +10,18 @@ from rest_framework.reverse import reverse
from access.fields import *
from access.models.tenancy import TenancyObject
from core.models.centurion import CenturionModel
from core.signal.ticket_linked_item_delete import TicketLinkedItem, deleted_model
from itam.models.device import Device
class Port(TenancyObject):
class Port(
CenturionModel
):
model_tag = 'port'
class Meta:
@ -35,21 +40,13 @@ class Port(TenancyObject):
TCP = 'TCP', 'TCP'
UDP = 'UDP', 'UDP'
def validation_port_number(number: int):
if number < 1 or number > 65535:
raise ValidationError('A Valid port number is between 1-65535')
id = models.AutoField(
blank=False,
help_text = 'ID of this port',
primary_key=True,
unique=True,
verbose_name = 'ID'
)
number = models.IntegerField(
blank = False,
help_text = 'The port number',
@ -60,7 +57,6 @@ class Port(TenancyObject):
description = models.CharField(
blank = True,
default = None,
help_text = 'Short description of port',
max_length = 80,
null = True,
@ -75,8 +71,6 @@ class Port(TenancyObject):
verbose_name = 'Protocol',
)
created = AutoCreatedField()
modified = AutoLastModifiedField()
@ -141,20 +135,6 @@ class Port(TenancyObject):
return str(self.protocol) + '/' + str(self.number)
def save_history(self, before: dict, after: dict) -> bool:
from itim.models.port_history import PortHistory
history = super().save_history(
before = before,
after = after,
history_model = PortHistory,
)
return history
class Service(TenancyObject):

View File

@ -93,7 +93,7 @@ A Model link is a reference to an item within the database. Supported model link
| operatingsystem| `$operating_system-<id>` |
| operatingsystemversion| `$operating_system_version-<id>` |
| organization| `$organization-<id>` |
| port| `$-<id>` |
| port| `$port-<id>` |
| project| `$-<id>` |
| projectmilestone| `$-<id>` |
| projectstate| `$project_state-<id>` |