Skip to content

Commit 0a14e40

Browse files
authored
Merge pull request #256 from pheus/feature/255-group-navigation-items
refactor(navigation): Group plugin menu items
2 parents e716efc + bc3de78 commit 0a14e40

File tree

1 file changed

+76
-49
lines changed

1 file changed

+76
-49
lines changed

netbox_acls/navigation.py

Lines changed: 76 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,103 @@
11
"""
2-
Define the plugin menu buttons & the plugin navigation bar enteries.
2+
Define the plugin menu buttons and the plugin navigation bar entries.
33
"""
44

55
from django.conf import settings
66
from netbox.plugins import PluginMenu, PluginMenuButton, PluginMenuItem
77

8-
98
plugin_settings = settings.PLUGINS_CONFIG["netbox_acls"]
109

1110
#
1211
# Define plugin menu buttons
1312
#
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-
permissions=["netbox_acls.add_accesslist"],
25-
),
13+
14+
# Access List
15+
accesslist_item = 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+
permissions=["netbox_acls.add_accesslist"],
2625
),
2726
),
28-
PluginMenuItem(
29-
link="plugins:netbox_acls:aclstandardrule_list",
30-
link_text="Standard Rules",
31-
permissions=["netbox_acls.view_aclstandardrule"],
32-
buttons=(
33-
PluginMenuButton(
34-
link="plugins:netbox_acls:aclstandardrule_add",
35-
title="Add",
36-
icon_class="mdi mdi-plus-thick",
37-
permissions=["netbox_acls.add_aclstandardrule"],
38-
),
27+
)
28+
29+
# ACL Standard Rule
30+
aclstandardrule_item = PluginMenuItem(
31+
link="plugins:netbox_acls:aclstandardrule_list",
32+
link_text="Standard Rules",
33+
permissions=["netbox_acls.view_aclstandardrule"],
34+
buttons=(
35+
PluginMenuButton(
36+
link="plugins:netbox_acls:aclstandardrule_add",
37+
title="Add",
38+
icon_class="mdi mdi-plus-thick",
39+
permissions=["netbox_acls.add_aclstandardrule"],
3940
),
4041
),
41-
PluginMenuItem(
42-
link="plugins:netbox_acls:aclextendedrule_list",
43-
link_text="Extended Rules",
44-
permissions=["netbox_acls.view_aclextendedrule"],
45-
buttons=(
46-
PluginMenuButton(
47-
link="plugins:netbox_acls:aclextendedrule_add",
48-
title="Add",
49-
icon_class="mdi mdi-plus-thick",
50-
permissions=["netbox_acls.add_aclextendedrule"],
51-
),
42+
)
43+
44+
# ACL Extended Rule
45+
aclextendedrule_item = PluginMenuItem(
46+
link="plugins:netbox_acls:aclextendedrule_list",
47+
link_text="Extended Rules",
48+
permissions=["netbox_acls.view_aclextendedrule"],
49+
buttons=(
50+
PluginMenuButton(
51+
link="plugins:netbox_acls:aclextendedrule_add",
52+
title="Add",
53+
icon_class="mdi mdi-plus-thick",
54+
permissions=["netbox_acls.add_aclextendedrule"],
5255
),
5356
),
54-
PluginMenuItem(
55-
link="plugins:netbox_acls:aclinterfaceassignment_list",
56-
link_text="Interface Assignments",
57-
permissions=["netbox_acls.view_aclinterfaceassignment"],
58-
buttons=(
59-
PluginMenuButton(
60-
link="plugins:netbox_acls:aclinterfaceassignment_add",
61-
title="Add",
62-
icon_class="mdi mdi-plus-thick",
63-
permissions=["netbox_acls.add_aclinterfaceassignment"],
64-
),
57+
)
58+
59+
# ACL Interface Assignment
60+
aclinterfaceassignment_item = 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+
permissions=["netbox_acls.add_aclinterfaceassignment"],
6570
),
6671
),
6772
)
6873

74+
6975
if plugin_settings.get("top_level_menu"):
7076
menu = PluginMenu(
7177
label="Access Lists",
72-
groups=(("ACLs", menu_buttons),),
78+
groups=(
79+
(
80+
"Access Lists",
81+
(accesslist_item,),
82+
),
83+
(
84+
"Rules",
85+
(
86+
aclstandardrule_item,
87+
aclextendedrule_item,
88+
),
89+
),
90+
(
91+
"Assignments",
92+
(aclinterfaceassignment_item,),
93+
),
94+
),
7395
icon_class="mdi mdi-lock",
7496
)
7597
else:
76-
menu_items = menu_buttons
98+
menu_items = (
99+
accesslist_item,
100+
aclstandardrule_item,
101+
aclextendedrule_item,
102+
aclinterfaceassignment_item,
103+
)

0 commit comments

Comments
 (0)