diff --git a/netbox/core/apps.py b/netbox/core/apps.py index 68b65f58c..3835b3a8e 100644 --- a/netbox/core/apps.py +++ b/netbox/core/apps.py @@ -25,12 +25,19 @@ class CoreConfig(AppConfig): from core.checks import check_duplicate_indexes # noqa: F401 from netbox import context_managers # noqa: F401 from netbox.models.features import register_models + from utilities.permissions import ModelAction, register_model_actions from . import data_backends, events, search # noqa: F401 + from .models import DataSource # Register models register_models(*self.get_models()) + # Register custom permission actions + register_model_actions(DataSource, [ + ModelAction('sync', help_text=_('Synchronize data from remote source')), + ]) + # Register core events EventType(OBJECT_CREATED, _('Object created')).register() EventType(OBJECT_UPDATED, _('Object updated')).register() diff --git a/netbox/dcim/apps.py b/netbox/dcim/apps.py index 0aad86fc8..e99f70024 100644 --- a/netbox/dcim/apps.py +++ b/netbox/dcim/apps.py @@ -8,8 +8,11 @@ class DCIMConfig(AppConfig): verbose_name = "DCIM" def ready(self): + from django.utils.translation import gettext as _ + from netbox.models.features import register_models from utilities.counters import connect_counters + from utilities.permissions import ModelAction, register_model_actions from . import search, signals # noqa: F401 from .models import CableTermination, Device, DeviceType, ModuleType, RackType, VirtualChassis @@ -17,6 +20,11 @@ class DCIMConfig(AppConfig): # Register models register_models(*self.get_models()) + # Register custom permission actions + register_model_actions(Device, [ + ModelAction('render_config', help_text=_('Render device configuration')), + ]) + # Register denormalized fields denormalized.register(CableTermination, '_device', { '_rack': 'rack', diff --git a/netbox/virtualization/apps.py b/netbox/virtualization/apps.py index d337e0219..96be7fe24 100644 --- a/netbox/virtualization/apps.py +++ b/netbox/virtualization/apps.py @@ -5,8 +5,11 @@ class VirtualizationConfig(AppConfig): name = 'virtualization' def ready(self): + from django.utils.translation import gettext as _ + from netbox.models.features import register_models from utilities.counters import connect_counters + from utilities.permissions import ModelAction, register_model_actions from . import search, signals # noqa: F401 from .models import VirtualMachine @@ -16,3 +19,8 @@ class VirtualizationConfig(AppConfig): # Register counters connect_counters(VirtualMachine) + + # Register custom permission actions + register_model_actions(VirtualMachine, [ + ModelAction('render_config', help_text=_('Render VM configuration')), + ])