Import error: Module does not define a "menu" attribute/class #7573

Closed
opened 2025-12-29 20:25:35 +01:00 by adam · 2 comments
Owner

Originally created by @abhi1693 on GitHub (Jan 27, 2023).

Originally assigned to: @jeremystretch on GitHub.

NetBox version

v3.4.4-dev

Python version

3.8

Steps to Reproduce

Install netbox-acls plugin and run migration

Expected Behavior

NetBox should work

Observed Behavior

NetBox crashes with the following log

With no plugin config

Traceback (most recent call last):
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 30, in import_string
    return cached_import(module_path, class_name)
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 16, in cached_import
    return getattr(module, class_name)
AttributeError: module 'netbox_acls.navigation' has no attribute 'menu_items'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/asaharan/PycharmProjects/netbox/netbox/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 420, in execute
    django.setup()
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/apps/registry.py", line 124, in populate
    app_config.ready()
  File "/home/asaharan/PycharmProjects/netbox/netbox/extras/plugins/__init__.py", line 105, in ready
    if menu_items := self._load_resource('menu_items'):
  File "/home/asaharan/PycharmProjects/netbox/netbox/extras/plugins/__init__.py", line 88, in _load_resource
    return import_string(f"{self.__module__}.{default_path}")
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 32, in import_string
    raise ImportError(
ImportError: Module "netbox_acls.navigation" does not define a "menu_items" attribute/class

With plugin config as: top_level_menu=False

Traceback (most recent call last):
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 30, in import_string
    return cached_import(module_path, class_name)
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 16, in cached_import
    return getattr(module, class_name)
AttributeError: module 'netbox_acls.navigation' has no attribute 'menu'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/asaharan/PycharmProjects/netbox/netbox/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 420, in execute
    django.setup()
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/apps/registry.py", line 124, in populate
    app_config.ready()
  File "/home/asaharan/PycharmProjects/netbox/netbox/extras/plugins/__init__.py", line 103, in ready
    if menu := self._load_resource('menu'):
  File "/home/asaharan/PycharmProjects/netbox/netbox/extras/plugins/__init__.py", line 88, in _load_resource
    return import_string(f"{self.__module__}.{default_path}")
  File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 32, in import_string
    raise ImportError(
ImportError: Module "netbox_acls.navigation" does not define a "menu" attribute/class

Originally created by @abhi1693 on GitHub (Jan 27, 2023). Originally assigned to: @jeremystretch on GitHub. ### NetBox version v3.4.4-dev ### Python version 3.8 ### Steps to Reproduce Install `netbox-acls` plugin and run migration ### Expected Behavior NetBox should work ### Observed Behavior NetBox crashes with the following log With no plugin config ``` Traceback (most recent call last): File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 30, in import_string return cached_import(module_path, class_name) File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 16, in cached_import return getattr(module, class_name) AttributeError: module 'netbox_acls.navigation' has no attribute 'menu_items' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/home/asaharan/PycharmProjects/netbox/netbox/manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line utility.execute() File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 420, in execute django.setup() File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/apps/registry.py", line 124, in populate app_config.ready() File "/home/asaharan/PycharmProjects/netbox/netbox/extras/plugins/__init__.py", line 105, in ready if menu_items := self._load_resource('menu_items'): File "/home/asaharan/PycharmProjects/netbox/netbox/extras/plugins/__init__.py", line 88, in _load_resource return import_string(f"{self.__module__}.{default_path}") File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 32, in import_string raise ImportError( ImportError: Module "netbox_acls.navigation" does not define a "menu_items" attribute/class ``` With plugin config as: `top_level_menu=False` ``` Traceback (most recent call last): File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 30, in import_string return cached_import(module_path, class_name) File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 16, in cached_import return getattr(module, class_name) AttributeError: module 'netbox_acls.navigation' has no attribute 'menu' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/home/asaharan/PycharmProjects/netbox/netbox/manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line utility.execute() File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 420, in execute django.setup() File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/apps/registry.py", line 124, in populate app_config.ready() File "/home/asaharan/PycharmProjects/netbox/netbox/extras/plugins/__init__.py", line 103, in ready if menu := self._load_resource('menu'): File "/home/asaharan/PycharmProjects/netbox/netbox/extras/plugins/__init__.py", line 88, in _load_resource return import_string(f"{self.__module__}.{default_path}") File "/home/asaharan/PycharmProjects/netbox/venv/lib/python3.10/site-packages/django/utils/module_loading.py", line 32, in import_string raise ImportError( ImportError: Module "netbox_acls.navigation" does not define a "menu" attribute/class ```
adam added the type: bugstatus: acceptedtopic: plugins labels 2025-12-29 20:25:35 +01:00
adam closed this issue 2025-12-29 20:25:36 +01:00
Author
Owner

@jsenecal commented on GitHub (Jan 27, 2023):

Related to fbc9fea0a5

@jsenecal commented on GitHub (Jan 27, 2023): Related to https://github.com/netbox-community/netbox/commit/fbc9fea0a5b0943da6f10df3551f071ce555a6ed
Author
Owner

@jeremystretch commented on GitHub (Jan 28, 2023):

Looks like the root issue is that the plugin provides a navigation module but doesn't provide either menu or menu_items (depending on its configuration). The import logic currently assumes that if the default module exists, the attribute specified should also exist. While this is usually the case, navigation differs in that typically only one attribute or the other is defined.

I just need to tweak the import logic a bit to accommodate for this scenario. Thanks for the report!

@jeremystretch commented on GitHub (Jan 28, 2023): Looks like the root issue is that the plugin provides a `navigation` module but doesn't provide either `menu` or `menu_items` (depending on its configuration). The import logic currently assumes that if the default module exists, the attribute specified should also exist. While this is usually the case, `navigation` differs in that typically only one attribute or the other is defined. I just need to tweak the import logic a bit to accommodate for this scenario. Thanks for the report!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#7573