From a992d0a4f39e7b8c2525c40c46df021edc95892e Mon Sep 17 00:00:00 2001 From: Abhimanyu Saharan Date: Wed, 25 Jan 2023 08:31:37 +0530 Subject: [PATCH 1/3] Added optional parameter to hide top level menu (#113) * added optional parameter to hide top level menu --- README.md | 9 +++ netbox_acls/navigation.py | 130 +++++++++++++++++++------------------- 2 files changed, 75 insertions(+), 64 deletions(-) diff --git a/README.md b/README.md index ed83796..ca79c28 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,15 @@ PLUGINS_CONFIG = { } ``` +## Configuration + +The following options are available in the configuration file: + +- `top_level_menu` + - - __Type__: `Boolean` + - - __Default__: `True` + - __Description__: If set to `True` the plugin will add a top level menu item for the plugin. If set to `False` the plugin will add a menu item under the `Plugins` menu item. + ## Developing ### VSCode + Docker + Dev Containers diff --git a/netbox_acls/navigation.py b/netbox_acls/navigation.py index 6d784f5..9790365 100644 --- a/netbox_acls/navigation.py +++ b/netbox_acls/navigation.py @@ -2,77 +2,79 @@ Define the plugin menu buttons & the plugin navigation bar enteries. """ +from django.conf import settings from extras.plugins import PluginMenu, PluginMenuButton, PluginMenuItem from utilities.choices import ButtonColorChoices +plugin_settings = settings.PLUGINS_CONFIG["netbox_acls"] + # # Define plugin menu buttons # - -menu = PluginMenu( - label="Access Lists", - groups=( - ( - "ACLs", - ( - PluginMenuItem( - link="plugins:netbox_acls:accesslist_list", - link_text="Access Lists", - permissions=["netbox_acls.view_accesslist"], - buttons=( - PluginMenuButton( - link="plugins:netbox_acls:accesslist_add", - title="Add", - icon_class="mdi mdi-plus-thick", - color=ButtonColorChoices.GREEN, - permissions=["netbox_acls.add_accesslist"], - ), - ), - ), - PluginMenuItem( - link="plugins:netbox_acls:aclstandardrule_list", - link_text="Standard Rules", - permissions=["netbox_acls.view_aclstandardrule"], - buttons=( - PluginMenuButton( - link="plugins:netbox_acls:aclstandardrule_add", - title="Add", - icon_class="mdi mdi-plus-thick", - color=ButtonColorChoices.GREEN, - permissions=["netbox_acls.add_aclstandardrule"], - ), - ), - ), - PluginMenuItem( - link="plugins:netbox_acls:aclextendedrule_list", - link_text="Extended Rules", - permissions=["netbox_acls.view_aclextendedrule"], - buttons=( - PluginMenuButton( - link="plugins:netbox_acls:aclextendedrule_add", - title="Add", - icon_class="mdi mdi-plus-thick", - color=ButtonColorChoices.GREEN, - permissions=["netbox_acls.add_aclextendedrule"], - ), - ), - ), - PluginMenuItem( - link="plugins:netbox_acls:aclinterfaceassignment_list", - link_text="Interface Assignments", - permissions=["netbox_acls.view_aclinterfaceassignment"], - buttons=( - PluginMenuButton( - link="plugins:netbox_acls:aclinterfaceassignment_add", - title="Add", - icon_class="mdi mdi-plus-thick", - color=ButtonColorChoices.GREEN, - permissions=["netbox_acls.add_aclinterfaceassignment"], - ), - ), - ), +menu_buttons = ( + PluginMenuItem( + link="plugins:netbox_acls:accesslist_list", + link_text="Access Lists", + permissions=["netbox_acls.view_accesslist"], + buttons=( + PluginMenuButton( + link="plugins:netbox_acls:accesslist_add", + title="Add", + icon_class="mdi mdi-plus-thick", + color=ButtonColorChoices.GREEN, + permissions=["netbox_acls.add_accesslist"], + ), + ), + ), + PluginMenuItem( + link="plugins:netbox_acls:aclstandardrule_list", + link_text="Standard Rules", + permissions=["netbox_acls.view_aclstandardrule"], + buttons=( + PluginMenuButton( + link="plugins:netbox_acls:aclstandardrule_add", + title="Add", + icon_class="mdi mdi-plus-thick", + color=ButtonColorChoices.GREEN, + permissions=["netbox_acls.add_aclstandardrule"], + ), + ), + ), + PluginMenuItem( + link="plugins:netbox_acls:aclextendedrule_list", + link_text="Extended Rules", + permissions=["netbox_acls.view_aclextendedrule"], + buttons=( + PluginMenuButton( + link="plugins:netbox_acls:aclextendedrule_add", + title="Add", + icon_class="mdi mdi-plus-thick", + color=ButtonColorChoices.GREEN, + permissions=["netbox_acls.add_aclextendedrule"], + ), + ), + ), + PluginMenuItem( + link="plugins:netbox_acls:aclinterfaceassignment_list", + link_text="Interface Assignments", + permissions=["netbox_acls.view_aclinterfaceassignment"], + buttons=( + PluginMenuButton( + link="plugins:netbox_acls:aclinterfaceassignment_add", + title="Add", + icon_class="mdi mdi-plus-thick", + color=ButtonColorChoices.GREEN, + permissions=["netbox_acls.add_aclinterfaceassignment"], ), ), ), - icon_class="mdi mdi-lock", ) + +if plugin_settings.get("top_level_menu"): + menu = PluginMenu( + label="Access Lists", + groups=(("ACLs", menu_buttons),), + icon_class="mdi mdi-lock", + ) +else: + menu_items = menu_buttons From 20db8f5ecdfdcdde43709399c4b544e82a5bc950 Mon Sep 17 00:00:00 2001 From: ryanmerolle Date: Tue, 24 Jan 2023 22:11:18 -0500 Subject: [PATCH 2/3] update README to include new config --- README.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index ca79c28..dc4aa7c 100644 --- a/README.md +++ b/README.md @@ -59,28 +59,23 @@ or by adding to your `local_requirements.txt` or `plugin_requirements.txt` (netb netbox-acls ``` +## Configuration + Enable the plugin in `/opt/netbox/netbox/netbox/configuration.py`, or if you use netbox-docker, your `/configuration/plugins.py` file : ```python PLUGINS = [ - 'netbox_acls' + "netbox_acls" ] PLUGINS_CONFIG = { - "netbox_acls": {}, + "netbox_acls": { + "top_level_menu": True # If set to True the plugin will add a top level menu item for the plugin. If set to False the plugin will add a menu item under the Plugins menu item. Default is set to True. + }, } ``` -## Configuration - -The following options are available in the configuration file: - -- `top_level_menu` - - - __Type__: `Boolean` - - - __Default__: `True` - - __Description__: If set to `True` the plugin will add a top level menu item for the plugin. If set to `False` the plugin will add a menu item under the `Plugins` menu item. - ## Developing ### VSCode + Docker + Dev Containers From 0c26a27b75bb443e7b83e86fb129c549934fd22e Mon Sep 17 00:00:00 2001 From: ryanmerolle Date: Tue, 24 Jan 2023 22:15:49 -0500 Subject: [PATCH 3/3] prepare 1.2.1 release --- README.md | 2 +- netbox_acls/version.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dc4aa7c..774d0b2 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Each Plugin Version listed below has been tested with its corresponding NetBox V |:--------------:|:--------------:| | 3.2 | 1.0.1 | | 3.3 | 1.1.0 | -| 3.4 | 1.2.0 | +| 3.4 | 1.2.1 | ## Installing diff --git a/netbox_acls/version.py b/netbox_acls/version.py index c68196d..510956d 100644 --- a/netbox_acls/version.py +++ b/netbox_acls/version.py @@ -1 +1,4 @@ -__version__ = "1.2.0" +""" +Version information for netbox-acls. +""" +__version__ = "1.2.1"