Error switching cable Type #9593

Closed
opened 2025-12-29 21:19:26 +01:00 by adam · 3 comments
Owner

Originally created by @arthanson on GitHub (May 6, 2024).

Originally assigned to: @arthanson on GitHub.

Deployment Type

Self-hosted

NetBox Version

v4.0.0-beta2

Python Version

3.8

Steps to Reproduce

  1. Create a cable connecting some devices
  2. Edit the cable and change the A side or B side Type in the dropdown

Expected Behavior

You should be able to change the cable type.

Observed Behavior

Potentially related to #15783, but doing the same as above on NetBox v3.7.8 does not reproduce the error, only seems to happen in beta.

Traceback (most recent call last):
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 104, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/ahanson/dev/work/netbox/netbox/netbox/views/generic/object_views.py", line 176, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/Users/ahanson/dev/work/netbox/netbox/netbox/views/generic/base.py", line 26, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/Users/ahanson/dev/work/netbox/netbox/utilities/views.py", line 108, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 143, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users/ahanson/dev/work/netbox/netbox/netbox/views/generic/object_views.py", line 232, in get
    return render(request, self.htmx_template_name, {
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/shortcuts.py", line 25, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/test/utils.py", line 111, in instrumented_test_render
    return self.nodelist.render(context)
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 1000, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 1000, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 961, in render_annotated
    return self.render(context)
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/defaulttags.py", line 326, in render
    return nodelist.render(context)
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 1000, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 1000, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 961, in render_annotated
    return self.render(context)
  File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/library.py", line 258, in render
    _dict = self.func(*resolved_args, **resolved_kwargs)
  File "/Users/ahanson/dev/work/netbox/netbox/utilities/templatetags/form_helpers.py", line 125, in render_field
    'label': label or field.label,
AttributeError: 'str' object has no attribute 'label'
Originally created by @arthanson on GitHub (May 6, 2024). Originally assigned to: @arthanson on GitHub. ### Deployment Type Self-hosted ### NetBox Version v4.0.0-beta2 ### Python Version 3.8 ### Steps to Reproduce 1. Create a cable connecting some devices 2. Edit the cable and change the A side or B side Type in the dropdown ### Expected Behavior You should be able to change the cable type. ### Observed Behavior Potentially related to #15783, but doing the same as above on NetBox v3.7.8 does not reproduce the error, only seems to happen in beta. ``` Traceback (most recent call last): File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 104, in view return self.dispatch(request, *args, **kwargs) File "/Users/ahanson/dev/work/netbox/netbox/netbox/views/generic/object_views.py", line 176, in dispatch return super().dispatch(request, *args, **kwargs) File "/Users/ahanson/dev/work/netbox/netbox/netbox/views/generic/base.py", line 26, in dispatch return super().dispatch(request, *args, **kwargs) File "/Users/ahanson/dev/work/netbox/netbox/utilities/views.py", line 108, in dispatch return super().dispatch(request, *args, **kwargs) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 143, in dispatch return handler(request, *args, **kwargs) File "/Users/ahanson/dev/work/netbox/netbox/netbox/views/generic/object_views.py", line 232, in get return render(request, self.htmx_template_name, { File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/shortcuts.py", line 25, in render content = loader.render_to_string(template_name, context, request, using=using) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/loader.py", line 62, in render_to_string return template.render(context, request) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 171, in render return self._render(context) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/test/utils.py", line 111, in instrumented_test_render return self.nodelist.render(context) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 1000, in <listcomp> return SafeString("".join([node.render_annotated(context) for node in self])) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 961, in render_annotated return self.render(context) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/defaulttags.py", line 326, in render return nodelist.render(context) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 1000, in <listcomp> return SafeString("".join([node.render_annotated(context) for node in self])) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/base.py", line 961, in render_annotated return self.render(context) File "/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/django/template/library.py", line 258, in render _dict = self.func(*resolved_args, **resolved_kwargs) File "/Users/ahanson/dev/work/netbox/netbox/utilities/templatetags/form_helpers.py", line 125, in render_field 'label': label or field.label, AttributeError: 'str' object has no attribute 'label' ```
adam added the type: bugstatus: acceptedseverity: medium labels 2025-12-29 21:19:26 +01:00
adam closed this issue 2025-12-29 21:19:26 +01:00
Author
Owner

@Julio-Oliveira-Encora commented on GitHub (May 8, 2024):

Could you please assign it to me?

@Julio-Oliveira-Encora commented on GitHub (May 8, 2024): Could you please assign it to me?
Author
Owner

@arthanson commented on GitHub (May 8, 2024):

@Julio-Oliveira-Encora actually, I'll take this one.

@arthanson commented on GitHub (May 8, 2024): @Julio-Oliveira-Encora actually, I'll take this one.
Author
Owner

@Julio-Oliveira-Encora commented on GitHub (May 8, 2024):

No problem. I tested locally.
I solved the issue by replacing line 125 of form_helpers.py with:
'label': label or getattr(field, 'label', None),

@Julio-Oliveira-Encora commented on GitHub (May 8, 2024): No problem. I tested locally. I solved the issue by replacing line 125 of form_helpers.py with: 'label': label or getattr(field, 'label', None),
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#9593