From 66355da04c87ab35b7b0a4f53039e5e542a871bd Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 2 Oct 2020 11:51:23 -0400 Subject: [PATCH] CablePath.origin should be unique --- netbox/dcim/migrations/0120_cablepath.py | 7 ++++++- netbox/dcim/models/devices.py | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/migrations/0120_cablepath.py b/netbox/dcim/migrations/0120_cablepath.py index 2cb8376b7..f3448e747 100644 --- a/netbox/dcim/migrations/0120_cablepath.py +++ b/netbox/dcim/migrations/0120_cablepath.py @@ -1,3 +1,5 @@ +# Generated by Django 3.1 on 2020-10-02 15:49 + import dcim.fields from django.db import migrations, models import django.db.models.deletion @@ -18,9 +20,12 @@ class Migration(migrations.Migration): ('origin_id', models.PositiveIntegerField()), ('destination_id', models.PositiveIntegerField(blank=True, null=True)), ('path', dcim.fields.PathField(base_field=models.CharField(max_length=40), size=None)), + ('is_connected', models.BooleanField(default=False)), ('destination_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='contenttypes.contenttype')), ('origin_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='contenttypes.contenttype')), - ('is_connected', models.BooleanField(default=False)), ], + options={ + 'unique_together': {('origin_type', 'origin_id')}, + }, ), ] diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 0cb1ea970..52627dc7d 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -1197,6 +1197,9 @@ class CablePath(models.Model): objects = CablePathManager() + class Meta: + unique_together = ('origin_type', 'origin_id') + def __str__(self): path = ', '.join([str(path_node_to_object(node)) for node in self.path]) return f"Path #{self.pk}: {self.origin} to {self.destination} via ({path})"