From 1102c8d29139f22fe252d198376d560d86db03f8 Mon Sep 17 00:00:00 2001 From: KX Date: Tue, 23 Jul 2024 14:49:14 +0200 Subject: [PATCH] fix: don't generate final navbar on file import --- netbox/netbox/navigation/menu.py | 51 +++++++++++++-------- netbox/utilities/templatetags/navigation.py | 4 +- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/netbox/netbox/navigation/menu.py b/netbox/netbox/navigation/menu.py index cae9cb321..914f2396b 100644 --- a/netbox/netbox/navigation/menu.py +++ b/netbox/netbox/navigation/menu.py @@ -1,6 +1,5 @@ from django.utils.translation import gettext_lazy as _ -from netbox.registry import registry from . import * # @@ -464,24 +463,38 @@ MENUS = [ OPERATIONS_MENU, ] -# Add top-level plugin menus -for menu in registry['plugins']['menus']: - MENUS.append(menu) +has_initialized_function_menus = False -# Add the default "plugins" menu -if registry['plugins']['menu_items']: - # Build the default plugins menu - groups = [ - MenuGroup(label=label, items=items) - for label, items in registry['plugins']['menu_items'].items() - ] - plugins_menu = Menu( - label=_("Plugins"), - icon_class="mdi mdi-puzzle", - groups=groups - ) - MENUS.append(plugins_menu) +def add_plugin_menus(): + """ + Build the plugin navigation menu and add plugin defined + menus to the global context. + """ -# Add the admin menu last -MENUS.append(ADMIN_MENU) + global has_initialized_function_menus + if has_initialized_function_menus: + return + else: + has_initialized_function_menus = True + + from netbox.registry import registry + + for menu in registry['plugins']['menus']: + MENUS.append(menu) + + if registry['plugins']['menu_items']: + # Build the default plugins menu + groups = [ + MenuGroup(label=label, items=items) + for label, items in registry['plugins']['menu_items'].items() + ] + plugins_menu = Menu( + label=_("Plugins"), + icon_class="mdi mdi-puzzle", + groups=groups + ) + MENUS.append(plugins_menu) + + # Add the admin menu last + MENUS.append(ADMIN_MENU) diff --git a/netbox/utilities/templatetags/navigation.py b/netbox/utilities/templatetags/navigation.py index 176996aa1..83d837614 100644 --- a/netbox/utilities/templatetags/navigation.py +++ b/netbox/utilities/templatetags/navigation.py @@ -1,7 +1,7 @@ from django import template from django.utils.safestring import mark_safe -from netbox.navigation.menu import MENUS +from netbox.navigation.menu import MENUS, add_plugin_menus __all__ = ( 'nav', @@ -14,6 +14,8 @@ register = template.Library() @register.inclusion_tag("navigation/menu.html", takes_context=True) def nav(context): + add_plugin_menus() + """ Render the navigation menu. """