From 7ff2cb75a8fe40a464c180547a495c887a3fdab1 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 27 Sep 2022 15:44:38 -0400 Subject: [PATCH] Use templated app & model names for all unique constraints --- .../migrations/0162_unique_constraints.py | 8 +++++++ netbox/dcim/models/cables.py | 2 +- netbox/dcim/models/devices.py | 14 +++++------ netbox/dcim/models/sites.py | 24 +++++++++---------- netbox/virtualization/models.py | 6 ++--- 5 files changed, 31 insertions(+), 23 deletions(-) diff --git a/netbox/dcim/migrations/0162_unique_constraints.py b/netbox/dcim/migrations/0162_unique_constraints.py index a2f471632..5dac7039c 100644 --- a/netbox/dcim/migrations/0162_unique_constraints.py +++ b/netbox/dcim/migrations/0162_unique_constraints.py @@ -8,6 +8,10 @@ class Migration(migrations.Migration): ] operations = [ + migrations.RemoveConstraint( + model_name='cabletermination', + name='dcim_cable_termination_unique_termination', + ), migrations.RemoveConstraint( model_name='location', name='dcim_location_name', @@ -136,6 +140,10 @@ class Migration(migrations.Migration): name='rearporttemplate', unique_together=set(), ), + migrations.AddConstraint( + model_name='cabletermination', + constraint=models.UniqueConstraint(fields=('termination_type', 'termination_id'), name='dcim_cabletermination_unique_termination'), + ), migrations.AddConstraint( model_name='consoleport', constraint=models.UniqueConstraint(fields=('device', 'name'), name='dcim_consoleport_unique_device_name'), diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py index e05eb6d51..fad3e8bd6 100644 --- a/netbox/dcim/models/cables.py +++ b/netbox/dcim/models/cables.py @@ -269,7 +269,7 @@ class CableTermination(models.Model): constraints = ( models.UniqueConstraint( fields=('termination_type', 'termination_id'), - name='dcim_cable_termination_unique_termination' + name='%(app_label)s_%(class)s_unique_termination' ), ) diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 491846c39..79cc8c86b 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -662,22 +662,22 @@ class Device(NetBoxModel, ConfigContextModel): ordering = ('_name', 'pk') # Name may be null constraints = ( models.UniqueConstraint( - name='dcim_device_unique_name_site_tenant', - fields=('name', 'site', 'tenant') + fields=('name', 'site', 'tenant'), + name='%(app_label)s_%(class)s_unique_name_site_tenant' ), models.UniqueConstraint( - name='dcim_device_unique_name_site', fields=('name', 'site'), + name='%(app_label)s_%(class)s_unique_name_site', condition=Q(tenant__isnull=True), violation_error_message="Device name must be unique per site." ), models.UniqueConstraint( - name='dcim_device_unique_rack_position_face', - fields=('rack', 'position', 'face') + fields=('rack', 'position', 'face'), + name='%(app_label)s_%(class)s_unique_rack_position_face' ), models.UniqueConstraint( - name='dcim_device_unique_virtual_chassis_vc_position', - fields=('virtual_chassis', 'vc_position') + fields=('virtual_chassis', 'vc_position'), + name='%(app_label)s_%(class)s_unique_virtual_chassis_vc_position' ), ) diff --git a/netbox/dcim/models/sites.py b/netbox/dcim/models/sites.py index 90f855741..9ddadace2 100644 --- a/netbox/dcim/models/sites.py +++ b/netbox/dcim/models/sites.py @@ -62,21 +62,21 @@ class Region(NestedGroupModel): constraints = ( models.UniqueConstraint( fields=('parent', 'name'), - name='dcim_region_parent_name' + name='%(app_label)s_%(class)s_parent_name' ), models.UniqueConstraint( fields=('name',), - name='dcim_region_name', + name='%(app_label)s_%(class)s_name', condition=Q(parent__isnull=True), violation_error_message="A top-level region with this name already exists." ), models.UniqueConstraint( fields=('parent', 'slug'), - name='dcim_region_parent_slug' + name='%(app_label)s_%(class)s_parent_slug' ), models.UniqueConstraint( fields=('slug',), - name='dcim_region_slug', + name='%(app_label)s_%(class)s_slug', condition=Q(parent__isnull=True), violation_error_message="A top-level region with this slug already exists." ), @@ -136,21 +136,21 @@ class SiteGroup(NestedGroupModel): constraints = ( models.UniqueConstraint( fields=('parent', 'name'), - name='dcim_sitegroup_parent_name' + name='%(app_label)s_%(class)s_parent_name' ), models.UniqueConstraint( fields=('name',), - name='dcim_sitegroup_name', + name='%(app_label)s_%(class)s_name', condition=Q(parent__isnull=True), violation_error_message="A top-level site group with this name already exists." ), models.UniqueConstraint( fields=('parent', 'slug'), - name='dcim_sitegroup_parent_slug' + name='%(app_label)s_%(class)s_parent_slug' ), models.UniqueConstraint( fields=('slug',), - name='dcim_sitegroup_slug', + name='%(app_label)s_%(class)s_slug', condition=Q(parent__isnull=True), violation_error_message="A top-level site group with this slug already exists." ), @@ -355,21 +355,21 @@ class Location(NestedGroupModel): constraints = ( models.UniqueConstraint( fields=('site', 'parent', 'name'), - name='dcim_location_parent_name' + name='%(app_label)s_%(class)s_parent_name' ), models.UniqueConstraint( fields=('site', 'name'), - name='dcim_location_name', + name='%(app_label)s_%(class)s_name', condition=Q(parent__isnull=True), violation_error_message="A location with this name already exists within the specified site." ), models.UniqueConstraint( fields=('site', 'parent', 'slug'), - name='dcim_location_parent_slug' + name='%(app_label)s_%(class)s_parent_slug' ), models.UniqueConstraint( fields=('site', 'slug'), - name='dcim_location_slug', + name='%(app_label)s_%(class)s_slug', condition=Q(parent__isnull=True), violation_error_message="A location with this slug already exists within the specified site." ), diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index b0e732188..5a1c361c2 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -318,12 +318,12 @@ class VirtualMachine(NetBoxModel, ConfigContextModel): ordering = ('_name', 'pk') # Name may be non-unique constraints = ( models.UniqueConstraint( - name='virtualization_virtualmachine_unique_name_cluster_tenant', - fields=('name', 'cluster', 'tenant') + fields=('name', 'cluster', 'tenant'), + name='%(app_label)s_%(class)s_unique_name_cluster_tenant' ), models.UniqueConstraint( - name='virtualization_virtualmachine_unique_name_cluster', fields=('name', 'cluster'), + name='%(app_label)s_%(class)s_unique_name_cluster', condition=Q(tenant__isnull=True), violation_error_message="Virtual machine name must be unique per site." ),