From ce69379f34f2da77e0e2bcd46305162b45583201 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Wed, 31 Jul 2024 22:23:28 +0700 Subject: [PATCH] 10500 add nested validation to Module --- netbox/dcim/models/devices.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 4c386fca4..9cf1fbd1d 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -1203,6 +1203,20 @@ class Module(PrimaryModel, ConfigContextModel): ) ) + # Check for recursion of moduleX -> module bay -> modulex + module = self + all_module_bays = self.device.modulebays.all().select_related('module') + found = [] + while module: + if module.id in found: + raise ValidationError(_("Cannot have a recursion in Module Bay -> Module relationships.")) + + found.append(module.id) + if module.module_bay: + module = module.module_bay.module + else: + module = None + def save(self, *args, **kwargs): is_new = self.pk is None