mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-09 01:49:35 -06:00
20738 update vc_position in delete not signal handler
This commit is contained in:
parent
0b61d69e05
commit
264b40a269
@ -1154,7 +1154,6 @@ class VirtualChassis(PrimaryModel):
|
|||||||
})
|
})
|
||||||
|
|
||||||
def delete(self, *args, **kwargs):
|
def delete(self, *args, **kwargs):
|
||||||
|
|
||||||
# Check for LAG interfaces split across member chassis
|
# Check for LAG interfaces split across member chassis
|
||||||
interfaces = Interface.objects.filter(
|
interfaces = Interface.objects.filter(
|
||||||
device__in=self.members.all(),
|
device__in=self.members.all(),
|
||||||
@ -1168,6 +1167,13 @@ class VirtualChassis(PrimaryModel):
|
|||||||
"interfaces."
|
"interfaces."
|
||||||
).format(self=self, interfaces=InterfaceSpeedChoices))
|
).format(self=self, interfaces=InterfaceSpeedChoices))
|
||||||
|
|
||||||
|
# Clear vc_position and vc_priority on member devices BEFORE calling super().delete()
|
||||||
|
# This must be done here because on_delete=SET_NULL executes before pre_delete signal
|
||||||
|
for device in members_list:
|
||||||
|
device.vc_position = None
|
||||||
|
device.vc_priority = None
|
||||||
|
device.save()
|
||||||
|
|
||||||
return super().delete(*args, **kwargs)
|
return super().delete(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.db.models.signals import post_save, post_delete, pre_delete
|
from django.db.models.signals import post_save, post_delete
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
|
|
||||||
from dcim.choices import CableEndChoices, LinkStatusChoices
|
from dcim.choices import CableEndChoices, LinkStatusChoices
|
||||||
@ -85,18 +85,6 @@ def assign_virtualchassis_master(instance, created, **kwargs):
|
|||||||
master.save()
|
master.save()
|
||||||
|
|
||||||
|
|
||||||
@receiver(pre_delete, sender=VirtualChassis)
|
|
||||||
def clear_virtualchassis_members(instance, **kwargs):
|
|
||||||
"""
|
|
||||||
When a VirtualChassis is deleted, nullify the vc_position and vc_priority fields of its prior members.
|
|
||||||
"""
|
|
||||||
devices = Device.objects.filter(virtual_chassis=instance.pk)
|
|
||||||
for device in devices:
|
|
||||||
device.vc_position = None
|
|
||||||
device.vc_priority = None
|
|
||||||
device.save()
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Cables
|
# Cables
|
||||||
#
|
#
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user