diff --git a/netbox/users/forms/model_forms.py b/netbox/users/forms/model_forms.py index 3c4cfd77c..348c8b6da 100644 --- a/netbox/users/forms/model_forms.py +++ b/netbox/users/forms/model_forms.py @@ -377,9 +377,10 @@ class ObjectPermissionForm(forms.ModelForm): fieldsets = ( FieldSet('name', 'description', 'enabled'), FieldSet('object_types', name=_('Objects')), - FieldSet('can_view', 'can_add', 'can_change', 'can_delete', name=_('Standard Actions')), - FieldSet('registered_actions', name=_('Custom Actions')), - FieldSet('actions', name=_('Additional Actions')), + FieldSet( + 'can_view', 'can_add', 'can_change', 'can_delete', 'registered_actions', 'actions', + name=_('Actions') + ), FieldSet('groups', 'users', name=_('Assignment')), FieldSet('constraints', name=_('Constraints')), ) diff --git a/netbox/utilities/forms/widgets/actions.py b/netbox/utilities/forms/widgets/actions.py index 781da5ec6..d37f42d79 100644 --- a/netbox/utilities/forms/widgets/actions.py +++ b/netbox/utilities/forms/widgets/actions.py @@ -1,4 +1,5 @@ from django import forms +from django.apps import apps __all__ = ( 'RegisteredActionsWidget', @@ -18,6 +19,22 @@ class RegisteredActionsWidget(forms.CheckboxSelectMultiple): def get_context(self, name, value, attrs): context = super().get_context(name, value, attrs) - context['widget']['model_actions'] = self.model_actions + + # Build model_actions with labels for v2 template + model_actions_with_labels = {} + for model_key, actions in self.model_actions.items(): + app_label, model_name = model_key.split('.') + try: + model = apps.get_model(app_label, model_name) + app_config = apps.get_app_config(app_label) + label = f"{app_config.verbose_name} | {model._meta.verbose_name.title()}" + except LookupError: + label = model_key + model_actions_with_labels[model_key] = { + 'label': label, + 'actions': actions, + } + + context['widget']['model_actions'] = model_actions_with_labels context['widget']['value'] = value or [] return context diff --git a/netbox/utilities/templates/widgets/registered_actions.html b/netbox/utilities/templates/widgets/registered_actions.html index 287a1663b..3f24fa4df 100644 --- a/netbox/utilities/templates/widgets/registered_actions.html +++ b/netbox/utilities/templates/widgets/registered_actions.html @@ -1,28 +1,24 @@ {% load i18n %}