1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Added views for editing/deleting VCMemberships

This commit is contained in:
Jeremy Stretch
2017-12-08 12:51:52 -05:00
parent a85b3aa69f
commit da2bff691b
5 changed files with 80 additions and 12 deletions

View File

@@ -1507,7 +1507,7 @@ class VirtualChassis(models.Model):
return self.master.name
def get_absolute_url(self):
return "{}?virtual_chassis={}".format(reverse('dcim:device_list'), self.pk)
return self.master.get_absolute_url()
@property
def master(self):
@@ -1547,13 +1547,21 @@ class VCMembership(models.Model):
unique_together = ['virtual_chassis', 'position']
verbose_name = 'VC membership'
def __str__(self):
return self.device.name
def clean(self):
# We have to call this here because it won't be called by VCMembershipForm
self.validate_unique()
# Check for master conflicts
if getattr(self, 'virtual_chassis', None) and self.is_master:
master_conflict = VCMembership.objects.filter(virtual_chassis=self.virtual_chassis).first()
master_conflict = VCMembership.objects.filter(
virtual_chassis=self.virtual_chassis, is_master=True
).exclude(pk=self.pk).first()
if master_conflict:
raise ValidationError({
'virtual_chassis': "{} has already been designated as the master for this virtual chassis. It must "
"be demoted before a new master can be assigned.".format(master_conflict.device)
})
raise ValidationError(
"{} has already been designated as the master for this virtual chassis. It must be demoted before "
"a new master can be assigned.".format(master_conflict.device)
)