mirror of
https://github.com/netbox-community/netbox.git
synced 2026-04-09 19:03:48 +02:00
Prevent duplicate action registration in register_model_actions()
This commit is contained in:
@@ -53,7 +53,8 @@ def register_model_actions(model: type[Model], actions: list[ModelAction | str])
|
|||||||
for action in actions:
|
for action in actions:
|
||||||
if isinstance(action, str):
|
if isinstance(action, str):
|
||||||
action = ModelAction(name=action)
|
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):
|
def get_permission_for_model(model, action):
|
||||||
|
|||||||
@@ -80,6 +80,12 @@ class RegisterModelActionsTest(TestCase):
|
|||||||
self.assertEqual(actions[0].name, 'first')
|
self.assertEqual(actions[0].name, 'first')
|
||||||
self.assertEqual(actions[1].name, 'second')
|
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):
|
class ObjectPermissionFormTest(TestCase):
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user