Skip to content

Commit a992d0a

Browse files
authored
Added optional parameter to hide top level menu (#113)
* added optional parameter to hide top level menu
1 parent e4c0395 commit a992d0a

File tree

2 files changed

+75
-64
lines changed

2 files changed

+75
-64
lines changed

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,15 @@ PLUGINS_CONFIG = {
7272
}
7373
```
7474

75+
## Configuration
76+
77+
The following options are available in the configuration file:
78+
79+
- `top_level_menu`
80+
- - __Type__: `Boolean`
81+
- - __Default__: `True`
82+
- __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.
83+
7584
## Developing
7685

7786
### VSCode + Docker + Dev Containers

netbox_acls/navigation.py

Lines changed: 66 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -2,77 +2,79 @@
22
Define the plugin menu buttons & the plugin navigation bar enteries.
33
"""
44

5+
from django.conf import settings
56
from extras.plugins import PluginMenu, PluginMenuButton, PluginMenuItem
67
from utilities.choices import ButtonColorChoices
78

9+
plugin_settings = settings.PLUGINS_CONFIG["netbox_acls"]
10+
811
#
912
# Define plugin menu buttons
1013
#
11-
12-
menu = PluginMenu(
13-
label="Access Lists",
14-
groups=(
15-
(
16-
"ACLs",
17-
(
18-
PluginMenuItem(
19-
link="plugins:netbox_acls:accesslist_list",
20-
link_text="Access Lists",
21-
permissions=["netbox_acls.view_accesslist"],
22-
buttons=(
23-
PluginMenuButton(
24-
link="plugins:netbox_acls:accesslist_add",
25-
title="Add",
26-
icon_class="mdi mdi-plus-thick",
27-
color=ButtonColorChoices.GREEN,
28-
permissions=["netbox_acls.add_accesslist"],
29-
),
30-
),
31-
),
32-
PluginMenuItem(
33-
link="plugins:netbox_acls:aclstandardrule_list",
34-
link_text="Standard Rules",
35-
permissions=["netbox_acls.view_aclstandardrule"],
36-
buttons=(
37-
PluginMenuButton(
38-
link="plugins:netbox_acls:aclstandardrule_add",
39-
title="Add",
40-
icon_class="mdi mdi-plus-thick",
41-
color=ButtonColorChoices.GREEN,
42-
permissions=["netbox_acls.add_aclstandardrule"],
43-
),
44-
),
45-
),
46-
PluginMenuItem(
47-
link="plugins:netbox_acls:aclextendedrule_list",
48-
link_text="Extended Rules",
49-
permissions=["netbox_acls.view_aclextendedrule"],
50-
buttons=(
51-
PluginMenuButton(
52-
link="plugins:netbox_acls:aclextendedrule_add",
53-
title="Add",
54-
icon_class="mdi mdi-plus-thick",
55-
color=ButtonColorChoices.GREEN,
56-
permissions=["netbox_acls.add_aclextendedrule"],
57-
),
58-
),
59-
),
60-
PluginMenuItem(
61-
link="plugins:netbox_acls:aclinterfaceassignment_list",
62-
link_text="Interface Assignments",
63-
permissions=["netbox_acls.view_aclinterfaceassignment"],
64-
buttons=(
65-
PluginMenuButton(
66-
link="plugins:netbox_acls:aclinterfaceassignment_add",
67-
title="Add",
68-
icon_class="mdi mdi-plus-thick",
69-
color=ButtonColorChoices.GREEN,
70-
permissions=["netbox_acls.add_aclinterfaceassignment"],
71-
),
72-
),
73-
),
14+
menu_buttons = (
15+
PluginMenuItem(
16+
link="plugins:netbox_acls:accesslist_list",
17+
link_text="Access Lists",
18+
permissions=["netbox_acls.view_accesslist"],
19+
buttons=(
20+
PluginMenuButton(
21+
link="plugins:netbox_acls:accesslist_add",
22+
title="Add",
23+
icon_class="mdi mdi-plus-thick",
24+
color=ButtonColorChoices.GREEN,
25+
permissions=["netbox_acls.add_accesslist"],
26+
),
27+
),
28+
),
29+
PluginMenuItem(
30+
link="plugins:netbox_acls:aclstandardrule_list",
31+
link_text="Standard Rules",
32+
permissions=["netbox_acls.view_aclstandardrule"],
33+
buttons=(
34+
PluginMenuButton(
35+
link="plugins:netbox_acls:aclstandardrule_add",
36+
title="Add",
37+
icon_class="mdi mdi-plus-thick",
38+
color=ButtonColorChoices.GREEN,
39+
permissions=["netbox_acls.add_aclstandardrule"],
40+
),
41+
),
42+
),
43+
PluginMenuItem(
44+
link="plugins:netbox_acls:aclextendedrule_list",
45+
link_text="Extended Rules",
46+
permissions=["netbox_acls.view_aclextendedrule"],
47+
buttons=(
48+
PluginMenuButton(
49+
link="plugins:netbox_acls:aclextendedrule_add",
50+
title="Add",
51+
icon_class="mdi mdi-plus-thick",
52+
color=ButtonColorChoices.GREEN,
53+
permissions=["netbox_acls.add_aclextendedrule"],
54+
),
55+
),
56+
),
57+
PluginMenuItem(
58+
link="plugins:netbox_acls:aclinterfaceassignment_list",
59+
link_text="Interface Assignments",
60+
permissions=["netbox_acls.view_aclinterfaceassignment"],
61+
buttons=(
62+
PluginMenuButton(
63+
link="plugins:netbox_acls:aclinterfaceassignment_add",
64+
title="Add",
65+
icon_class="mdi mdi-plus-thick",
66+
color=ButtonColorChoices.GREEN,
67+
permissions=["netbox_acls.add_aclinterfaceassignment"],
7468
),
7569
),
7670
),
77-
icon_class="mdi mdi-lock",
7871
)
72+
73+
if plugin_settings.get("top_level_menu"):
74+
menu = PluginMenu(
75+
label="Access Lists",
76+
groups=(("ACLs", menu_buttons),),
77+
icon_class="mdi mdi-lock",
78+
)
79+
else:
80+
menu_items = menu_buttons

0 commit comments

Comments
 (0)