Exception when a script name is equal to the start of the name of another one #8737

Closed
opened 2025-12-29 20:40:37 +01:00 by adam · 1 comment
Owner

Originally created by @venomnom on GitHub (Oct 12, 2023).

Originally assigned to: @arthanson on GitHub.

NetBox version

v3.6.2

Python version

3.11

Steps to Reproduce

  1. create two scripts for netbox with some sample code named test.py and testscript.py
  2. upload them to NetBox scripts
  3. try to open the test.py script

Expected Behavior

The script page should be opened

Observed Behavior

Error in website
netbox_error
and

Error in logging:
2023-10-12 13:26:02,131 django.request ERROR: Internal Server Error: /extras/scripts/test/Test/ Traceback (most recent call last): File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/views/generic/base.py", line 104, in view return self.dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/netbox/utilities/views.py", line 53, in dispatch return super().dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/views/generic/base.py", line 143, in dispatch return handler(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/netbox/extras/views.py", line 1160, in get module = get_object_or_404(ScriptModule.objects.restrict(request.user), file_path__startswith=module) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/shortcuts.py", line 85, in get_object_or_404 return queryset.get(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/db/models/query.py", line 640, in get raise self.model.MultipleObjectsReturned( extras.models.scripts.ScriptModule.MultipleObjectsReturned: get() returned more than one ScriptModule -- it returned 2!

Originally created by @venomnom on GitHub (Oct 12, 2023). Originally assigned to: @arthanson on GitHub. ### NetBox version v3.6.2 ### Python version 3.11 ### Steps to Reproduce 1. create two scripts for netbox with some sample code named `test.py` and `testscript.py` 2. upload them to NetBox scripts 3. try to open the test.py script ### Expected Behavior The script page should be opened ### Observed Behavior Error in website ![netbox_error](https://github.com/netbox-community/netbox/assets/86487461/e11a85b9-d572-48bc-ba44-24462f6f34e6) and Error in logging: `2023-10-12 13:26:02,131 django.request ERROR: Internal Server Error: /extras/scripts/test/Test/ Traceback (most recent call last): File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/views/generic/base.py", line 104, in view return self.dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/netbox/utilities/views.py", line 53, in dispatch return super().dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/views/generic/base.py", line 143, in dispatch return handler(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/netbox/extras/views.py", line 1160, in get module = get_object_or_404(ScriptModule.objects.restrict(request.user), file_path__startswith=module) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/shortcuts.py", line 85, in get_object_or_404 return queryset.get(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/dev/venv/lib64/python3.11/site-packages/django/db/models/query.py", line 640, in get raise self.model.MultipleObjectsReturned( extras.models.scripts.ScriptModule.MultipleObjectsReturned: get() returned more than one ScriptModule -- it returned 2! `
adam added the type: bugstatus: acceptedseverity: medium labels 2025-12-29 20:40:37 +01:00
adam closed this issue 2025-12-29 20:40:37 +01:00
Author
Owner

@venomnom commented on GitHub (Oct 12, 2023):

I assume the problem lies in the extras/views.py files, line 1160:
module = get_object_or_404(ScriptModule.objects.restrict(request.user), file_path__startswith=module)

@venomnom commented on GitHub (Oct 12, 2023): I assume the problem lies in the `extras/views.py` files, line 1160: `module = get_object_or_404(ScriptModule.objects.restrict(request.user), file_path__`**`startswith`**`=module)`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#8737