Prevent duplicate action registration in register_model_actions()

This commit is contained in:
Jason Novinger
2026-03-03 15:44:40 -06:00
parent 8a72b3c61c
commit a117cc7526
2 changed files with 8 additions and 1 deletions

View File

@@ -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):

View File

@@ -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):