refactor(itam): Migration for updating model inheritance for DeviceDeviceOperatingSystem model

ref:#817 #801
This commit is contained in:
2025-06-11 18:34:05 +09:30
parent 281e233a7a
commit 32ffe34cf3
2 changed files with 85 additions and 27 deletions

View File

@ -0,0 +1,69 @@
# Generated by Django 5.1.9 on 2025-06-11 08:24
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"),
("itam", "0016_alter_devicemodel_manufacturer"),
]
operations = [
migrations.RemoveField(
model_name="deviceoperatingsystem",
name="is_global",
),
migrations.RemoveField(
model_name="deviceoperatingsystem",
name="model_notes",
),
migrations.AlterField(
model_name="deviceoperatingsystem",
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="deviceoperatingsystem",
name="installdate",
field=models.DateTimeField(
blank=True,
help_text="Date and time detected as installed",
null=True,
verbose_name="Install Date",
),
),
migrations.AlterField(
model_name="deviceoperatingsystem",
name="operating_system_version",
field=models.ForeignKey(
help_text="Operating system version",
on_delete=django.db.models.deletion.PROTECT,
to="itam.operatingsystemversion",
verbose_name="Operating System/Version",
),
),
migrations.AlterField(
model_name="deviceoperatingsystem",
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",
),
),
]

View File

@ -685,8 +685,13 @@ class DeviceSoftware(DeviceCommonFields, SaveHistory):
return history
class DeviceOperatingSystem(DeviceCommonFields, SaveHistory):
class DeviceOperatingSystem(
CenturionModel,
):
_audit_enabled = False
_notes_enabled = False
class Meta:
@ -698,6 +703,7 @@ class DeviceOperatingSystem(DeviceCommonFields, SaveHistory):
verbose_name_plural = 'Device Operating Systems'
model_notes = None
device = models.OneToOneField(
Device,
@ -714,9 +720,9 @@ class DeviceOperatingSystem(DeviceCommonFields, SaveHistory):
blank = False,
help_text = 'Operating system version',
null = False,
on_delete = models.CASCADE,
on_delete = models.PROTECT,
verbose_name = 'Operating System/Version',
)
version = models.CharField(
@ -729,7 +735,6 @@ class DeviceOperatingSystem(DeviceCommonFields, SaveHistory):
installdate = models.DateTimeField(
blank = True,
default = None,
help_text = 'Date and time detected as installed',
null = True,
verbose_name = 'Install Date',
@ -762,35 +767,19 @@ class DeviceOperatingSystem(DeviceCommonFields, SaveHistory):
]
def get_url_kwargs(self) -> dict:
def get_url_kwargs(self, many = False) -> dict:
return {
kwargs = super().get_url_kwargs( many = many )
kwargs.update({
'device_id': self.device.id,
'pk': self.pk
}
})
def get_url_kwargs_notes(self):
return FeatureNotUsed
return kwargs
@property
def parent_object(self):
""" Fetch the parent object """
return self.device
def save_history(self, before: dict, after: dict) -> bool:
from itam.models.device_operating_system_history import DeviceOperatingSystemHistory
history = super().save_history(
before = before,
after = after,
history_model = DeviceOperatingSystemHistory,
)
return history