From 32ffe34cf3f62ac6111326786f2f3e2749a5154e Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 11 Jun 2025 18:34:05 +0930 Subject: [PATCH] refactor(itam): Migration for updating model inheritance for DeviceDeviceOperatingSystem model ref:#817 #801 --- ...eviceoperatingsystem_is_global_and_more.py | 69 +++++++++++++++++++ app/itam/models/device.py | 43 +++++------- 2 files changed, 85 insertions(+), 27 deletions(-) create mode 100644 app/itam/migrations/0017_remove_deviceoperatingsystem_is_global_and_more.py diff --git a/app/itam/migrations/0017_remove_deviceoperatingsystem_is_global_and_more.py b/app/itam/migrations/0017_remove_deviceoperatingsystem_is_global_and_more.py new file mode 100644 index 00000000..1bc1bb4d --- /dev/null +++ b/app/itam/migrations/0017_remove_deviceoperatingsystem_is_global_and_more.py @@ -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", + ), + ), + ] diff --git a/app/itam/models/device.py b/app/itam/models/device.py index 23ad6837..6cfa1c88 100644 --- a/app/itam/models/device.py +++ b/app/itam/models/device.py @@ -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