2
0
Эх сурвалжийг харах

Prevent duplicate action registration in register_model_actions()

Jason Novinger 1 өдөр өмнө
parent
commit
a117cc7526

+ 2 - 1
netbox/utilities/permissions.py

@@ -53,7 +53,8 @@ def register_model_actions(model: type[Model], actions: list[ModelAction | str])
     for action in actions:
         if isinstance(action, str):
             action = ModelAction(name=action)
-        registry['model_actions'][label].append(action)
+        if action not in registry['model_actions'][label]:
+            registry['model_actions'][label].append(action)
 
 
 def get_permission_for_model(model, action):

+ 6 - 0
netbox/utilities/tests/test_permissions.py

@@ -80,6 +80,12 @@ class RegisterModelActionsTest(TestCase):
         self.assertEqual(actions[0].name, 'first')
         self.assertEqual(actions[1].name, 'second')
 
+    def test_duplicate_registration_ignored(self):
+        register_model_actions(Site, [ModelAction('sync')])
+        register_model_actions(Site, [ModelAction('sync', help_text='Different help')])
+        actions = registry['model_actions']['dcim.site']
+        self.assertEqual(len(actions), 1)
+
 
 class ObjectPermissionFormTest(TestCase):