From 278b9e5c0836ac289e59d6f5e7ed8eff9e9c8a1c Mon Sep 17 00:00:00 2001 From: Jon Date: Mon, 16 Jun 2025 13:37:59 +0930 Subject: [PATCH] feat(settings): Change model to inherit from `CenturionModel` for ExternalSettings model ref: #833 #835 --- ..._remove_externallink_is_global_and_more.py | 133 ++++++++++++++++++ app/settings/models/external_link.py | 45 ++---- 2 files changed, 145 insertions(+), 33 deletions(-) create mode 100644 app/settings/migrations/0014_remove_externallink_is_global_and_more.py diff --git a/app/settings/migrations/0014_remove_externallink_is_global_and_more.py b/app/settings/migrations/0014_remove_externallink_is_global_and_more.py new file mode 100644 index 00000000..973902c9 --- /dev/null +++ b/app/settings/migrations/0014_remove_externallink_is_global_and_more.py @@ -0,0 +1,133 @@ +# Generated by Django 5.1.9 on 2025-06-16 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"), + ("settings", "0013_alter_appsettings_global_organization_and_more"), + ] + + operations = [ + migrations.RemoveField( + model_name="externallink", + name="is_global", + ), + migrations.AlterField( + model_name="externallink", + name="colour", + field=models.CharField( + blank=True, + help_text="Colour to render the link button. Use HTML colour code", + max_length=80, + null=True, + verbose_name="Button Colour", + ), + ), + migrations.AlterField( + model_name="externallink", + 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="externallink", + name="model_notes", + field=models.TextField( + blank=True, + help_text="Tid bits of information", + null=True, + verbose_name="Notes", + ), + ), + migrations.AlterField( + model_name="externallink", + 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="ExternalLinkAuditHistory", + 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="settings.externallink", + verbose_name="Model", + ), + ), + ], + options={ + "verbose_name": "External Link History", + "verbose_name_plural": "External Link Histories", + "db_table": "settings_externallink_audithistory", + "managed": True, + }, + bases=("core.centurionaudit",), + ), + migrations.CreateModel( + name="ExternalLinkCenturionModelNote", + 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="settings.externallink", + verbose_name="Model", + ), + ), + ], + options={ + "verbose_name": "External Link Note", + "verbose_name_plural": "External Link Notes", + "db_table": "settings_externallink_centurionmodelnote", + "managed": True, + }, + bases=("core.centurionmodelnote",), + ), + ] diff --git a/app/settings/models/external_link.py b/app/settings/models/external_link.py index 1883da8d..d779c1b4 100644 --- a/app/settings/models/external_link.py +++ b/app/settings/models/external_link.py @@ -1,9 +1,14 @@ -from access.fields import * -from access.models.tenancy import TenancyObject +from django.db import models + +from access.fields import AutoLastModifiedField + +from core.models.centurion import CenturionModel -class ExternalLink(TenancyObject): +class ExternalLink( + CenturionModel +): class Meta: @@ -18,14 +23,6 @@ class ExternalLink(TenancyObject): verbose_name_plural = 'External Links' - id = models.AutoField( - blank=False, - help_text = 'ID for this external link', - primary_key=True, - unique=True, - verbose_name = 'ID' - ) - name = models.CharField( blank = False, help_text = 'Name to display on link button', @@ -34,8 +31,6 @@ class ExternalLink(TenancyObject): verbose_name = 'Friendly Name', ) - slug = None - button_text = models.CharField( blank = True, help_text = 'Name to display on link button', @@ -55,7 +50,6 @@ class ExternalLink(TenancyObject): colour = models.CharField( blank = True, - default = None, help_text = 'Colour to render the link button. Use HTML colour code', max_length = 80, null = True, @@ -64,35 +58,33 @@ class ExternalLink(TenancyObject): ) cluster = models.BooleanField( - default = False, blank = False, + default = False, help_text = 'Render link for clusters', verbose_name = 'Clusters', ) devices = models.BooleanField( - default = False, blank = False, + default = False, help_text = 'Render link for devices', verbose_name = 'Devices', ) service = models.BooleanField( - default = False, blank = False, + default = False, help_text = 'Render link for service', verbose_name = 'Service', ) software = models.BooleanField( - default = False, blank = False, + default = False, help_text = 'Render link for software', verbose_name = 'Software', ) - created = AutoCreatedField() - modified = AutoLastModifiedField() @@ -160,16 +152,3 @@ class ExternalLink(TenancyObject): """ Return the Template to render """ return str(self.template) - - def save_history(self, before: dict, after: dict) -> bool: - - from settings.models.external_link_history import ExternalLinkHistory - - history = super().save_history( - before = before, - after = after, - history_model = ExternalLinkHistory, - ) - - - return history