Skip to content

Commit

Permalink
Merge pull request #179 from Onemind-Services-LLC/OMS-453
Browse files Browse the repository at this point in the history
OMS-453 Add support for NetBox v4.2
  • Loading branch information
abhi1693 authored Jan 17, 2025
2 parents 60df3c4 + c54deb2 commit b7e2676
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 23 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ARG NETBOX_VARIANT=v4.1
ARG NETBOX_VARIANT=v4.2

FROM netboxcommunity/netbox:${NETBOX_VARIANT}

Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ and stability.
| 3.7.x | 1.10.x |
| 4.0.x | 2.0.x |
| 4.1.x | 2.1.x |
| 4.2.x | 2.2.x |

# Installation

Expand Down
4 changes: 2 additions & 2 deletions netbox_secrets/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ class NetBoxSecrets(PluginConfig):
author = metadata.get('Author')
author_email = metadata.get('Author-email')
base_url = 'secrets'
min_version = '4.1.0'
max_version = '4.1.99'
min_version = '4.2.0'
max_version = '4.2.99'
required_settings = []
default_settings = {
'apps': ['dcim.device', 'virtualization.virtualmachine'],
Expand Down
2 changes: 1 addition & 1 deletion netbox_secrets/navigation.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
permissions=["netbox_secrets.add_secretrole"],
),
PluginMenuButton(
link="plugins:netbox_secrets:secretrole_import",
link="plugins:netbox_secrets:secretrole_bulk_import",
title="Import Secret Role",
icon_class="mdi mdi-upload",
permissions=["netbox_secrets.add_secretrole"],
Expand Down
10 changes: 7 additions & 3 deletions netbox_secrets/template_content.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from netbox.views import generic
from utilities.views import ViewTab, register_model_view
from .filtersets import SecretFilterSet
from .forms import SecretFilterForm
from .models import Secret
from .tables import SecretTable

Expand All @@ -30,8 +31,11 @@ def secrets_panel(self):


def get_display_on(app_model):
"""Get preferred display location for app_model"""
display_on = plugin_settings.get('display_default')
"""Get preferred display location for app_model."""
display_on = 'tab_view' # Default fallback

if display_default := plugin_settings.get('display_default'):
display_on = display_default

if display_setting := plugin_settings.get('display_setting'):
display_on = display_setting.get(app_model, display_on)
Expand All @@ -45,7 +49,7 @@ class ModelTabView(generic.ObjectChildrenView):
child_model = Secret
table = SecretTable
filterset = SecretFilterSet
template_name = 'netbox_secrets/inc/view_tab.html'
filterset_form = SecretFilterForm
tab = ViewTab(
label='Secrets',
badge=lambda obj: obj.secrets.count(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% if perms.netbox_secrets.add_secret %}
<a class="btn btn-primary btn-sm"
<a class="btn btn-primary"
href="{% url 'plugins:netbox_secrets:secret_add' %}?assigned_object_type={{ object|content_type_id }}&assigned_object_id={{ object.pk }}&return_url={{ request.path }}"><i
class="mdi mdi-plus-thick"></i> Add Secret</a>
{% endif %}
18 changes: 5 additions & 13 deletions netbox_secrets/urls.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,18 @@
from django.urls import include, path

from utilities.urls import get_model_urls

from . import views

urlpatterns = [
# Secret roles
path('secret-roles/', views.SecretRoleListView.as_view(), name='secretrole_list'),
path('secret-roles/add/', views.SecretRoleEditView.as_view(), name='secretrole_add'),
path('secret-roles/import/', views.SecretRoleBulkImportView.as_view(), name='secretrole_import'),
path('secret-roles/edit/', views.SecretRoleBulkEditView.as_view(), name='secretrole_bulk_edit'),
path('secret-roles/delete/', views.SecretRoleBulkDeleteView.as_view(), name='secretrole_bulk_delete'),
path('secret-roles/', include(get_model_urls('netbox_secrets', 'secretrole', detail=False))),
path('secret-roles/<int:pk>/', include(get_model_urls('netbox_secrets', 'secretrole'))),
# Secrets
path('secrets/', views.SecretListView.as_view(), name='secret_list'),
path('secrets/add/', views.SecretEditView.as_view(), name='secret_add'),
path('secrets/delete/', views.SecretBulkDeleteView.as_view(), name='secret_bulk_delete'),
path('secrets/edit/', views.SecretBulkEditView.as_view(), name='secret_bulk_edit'),
path('secrets/', include(get_model_urls('netbox_secrets', 'secret', detail=False))),
path('secrets/<int:pk>/', include(get_model_urls('netbox_secrets', 'secret'))),
# User
path('user-keys/', views.UserKeyListView.as_view(), name='userkey_list'),
path('user-keys/add/', views.UserKeyEditView.as_view(), name='userkey_add'),
path('user-keys/activate/', views.ActivateUserkeyView.as_view(), name='userkey_activate'),
path('user-keys/', include(get_model_urls('netbox_secrets', 'userkey', detail=False))),
path('user-keys/<int:pk>/', include(get_model_urls('netbox_secrets', 'userkey'))),
# Session Key
path('session-key/delete/', views.SessionKeyDeleteView.as_view(), name='sessionkey_delete'),
]
14 changes: 13 additions & 1 deletion netbox_secrets/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from django.utils.safestring import mark_safe
from django.utils.translation import gettext as _
from django.views.generic.base import View
from netbox_secrets.models import UserKey
from netbox_secrets.models import SecretRole, UserKey

from core.signals import clear_events
from netbox.views import generic
Expand All @@ -31,6 +31,7 @@
#


@register_model_view(models.SecretRole, 'list', path='', detail=False)
class SecretRoleListView(generic.ObjectListView):
queryset = models.SecretRole.objects.annotate(secret_count=count_related(models.Secret, 'role')).prefetch_related(
'tags',
Expand Down Expand Up @@ -62,6 +63,7 @@ def get_children(self, request, parent):
return models.Secret.objects.filter(role=parent)


@register_model_view(models.SecretRole, 'add', detail=False)
@register_model_view(models.SecretRole, 'edit')
class SecretRoleEditView(generic.ObjectEditView):
queryset = models.SecretRole.objects.prefetch_related('tags')
Expand All @@ -73,12 +75,14 @@ class SecretRoleDeleteView(generic.ObjectDeleteView):
queryset = models.SecretRole.objects.prefetch_related('tags')


@register_model_view(models.SecretRole, 'bulk_import', detail=False)
class SecretRoleBulkImportView(generic.BulkImportView):
queryset = models.SecretRole.objects.prefetch_related('tags')
model_form = forms.SecretRoleImportForm
table = tables.SecretRoleTable


@register_model_view(models.SecretRole, 'bulk_edit', path='edit', detail=False)
class SecretRoleBulkEditView(generic.BulkEditView):
queryset = models.SecretRole.objects.annotate(secret_count=count_related(models.Secret, 'role')).prefetch_related(
'tags',
Expand All @@ -88,6 +92,7 @@ class SecretRoleBulkEditView(generic.BulkEditView):
form = forms.SecretRoleBulkEditForm


@register_model_view(models.SecretRole, 'bulk_delete', path='delete', detail=False)
class SecretRoleBulkDeleteView(generic.BulkDeleteView):
queryset = models.SecretRole.objects.annotate(secret_count=count_related(models.Secret, 'role')).prefetch_related(
'tags',
Expand All @@ -100,6 +105,7 @@ class SecretRoleBulkDeleteView(generic.BulkDeleteView):
#


@register_model_view(models.Secret, 'list', path='', detail=False)
class SecretListView(generic.ObjectListView):
queryset = models.Secret.objects.prefetch_related('role', 'tags')
filterset = filtersets.SecretFilterSet
Expand All @@ -117,6 +123,7 @@ class SecretView(generic.ObjectView):
queryset = models.Secret.objects.prefetch_related('role', 'tags')


@register_model_view(models.Secret, 'add', detail=False)
@register_model_view(models.Secret, 'edit')
class SecretEditView(generic.ObjectEditView):
queryset = models.Secret.objects.prefetch_related('role', 'tags')
Expand Down Expand Up @@ -267,13 +274,15 @@ class SecretDeleteView(generic.ObjectDeleteView):
queryset = models.Secret.objects.prefetch_related('role', 'tags')


@register_model_view(models.Secret, 'bulk_edit', path='edit', detail=False)
class SecretBulkEditView(generic.BulkEditView):
queryset = models.Secret.objects.prefetch_related('role', 'tags')
filterset = filtersets.SecretFilterSet
table = tables.SecretTable
form = forms.SecretBulkEditForm


@register_model_view(models.Secret, 'bulk_delete', path='delete', detail=False)
class SecretBulkDeleteView(generic.BulkDeleteView):
queryset = models.Secret.objects.prefetch_related('role', 'tags')
filterset = filtersets.SecretFilterSet
Expand All @@ -292,6 +301,7 @@ class SecretContactsView(ObjectContactsView):
#


@register_model_view(models.UserKey, 'list', path='', detail=False)
class UserKeyListView(generic.ObjectListView):
queryset = models.UserKey.objects.all()
table = tables.UserKeyTable
Expand All @@ -316,6 +326,7 @@ class UserKeyDeleteView(generic.ObjectDeleteView):
queryset = UserKey.objects.all()


@register_model_view(models.UserKey, 'add', detail=False)
@register_model_view(models.UserKey, 'edit')
class UserKeyEditView(LoginRequiredMixin, GetReturnURLMixin, View):
queryset = models.UserKey.objects.all()
Expand Down Expand Up @@ -364,6 +375,7 @@ def post(self, request):
)


@register_model_view(models.UserKey, 'activate', path='userkey_activate', detail=False)
class ActivateUserkeyView(LoginRequiredMixin, GetReturnURLMixin, View):
queryset = models.UserKey.objects.all()
template_name = 'netbox_secrets/activate_keys.html'
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

setup(
name='netbox-secrets',
version='2.1.2',
version='2.2.0',
description=description,
long_description=long_description,
long_description_content_type="text/markdown",
Expand Down

0 comments on commit b7e2676

Please sign in to comment.