Exception when clicking on an IP Address in the FHRP groups list #8547

Closed
opened 2025-12-29 20:37:59 +01:00 by adam · 0 comments
Owner

Originally created by @peteeckel on GitHub (Aug 31, 2023).

Originally assigned to: @jeremystretch on GitHub.

NetBox version

v3.6.0

Python version

3.11

Steps to Reproduce

  1. Open the "FHRP Groups" list view
  2. Click on any IP address in the "IP Addresses" column

Expected Behavior

The detail view for the IP address is opened

Observed Behavior

An exception is raised:


Traceback (most recent call last):
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 880, in _resolve_lookup
   current = current[bit]
             ^^^^^^^^^^^^

During handling of the above exception ('IPAddress' object is not subscriptable), another exception occurred:
 File "/opt/netbox/lib64/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
   response = get_response(request)
              ^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/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/lib64/python3.11/site-packages/django/views/generic/base.py", line 104, in view
   return self.dispatch(request, *args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/netbox/netbox/views/generic/base.py", line 26, in dispatch
   return super().dispatch(request, *args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/netbox/utilities/views.py", line 99, in dispatch
   return super().dispatch(request, *args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/views/generic/base.py", line 143, in dispatch
   return handler(request, *args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/netbox/netbox/views/generic/object_views.py", line 70, in get
   return render(request, self.get_template_name(), {

 File "/opt/netbox/lib64/python3.11/site-packages/django/shortcuts.py", line 24, in render
   content = loader.render_to_string(template_name, context, request, using=using)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader.py", line 62, in render_to_string
   return template.render(context, request)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/backends/django.py", line 61, in render
   return self.template.render(context)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 175, in render
   return self._render(context)
          ^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/test/utils.py", line 112, in instrumented_test_render
   return self.nodelist.render(context)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render
   return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
   return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
   return self.render(context)
          ^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 157, in render
   return compiled_parent._render(context)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/test/utils.py", line 112, in instrumented_test_render
   return self.nodelist.render(context)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render
   return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
   return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
   return self.render(context)
          ^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 157, in render
   return compiled_parent._render(context)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/test/utils.py", line 112, in instrumented_test_render
   return self.nodelist.render(context)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render
   return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
   return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
   return self.render(context)
          ^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 157, in render
   return compiled_parent._render(context)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/test/utils.py", line 112, in instrumented_test_render
   return self.nodelist.render(context)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render
   return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
   return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
   return self.render(context)
          ^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 63, in render
   result = block.nodelist.render(context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render
   return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
   return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
   return self.render(context)
          ^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 63, in render
   result = block.nodelist.render(context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render
   return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
   return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
   return self.render(context)
          ^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 63, in render
   result = block.nodelist.render(context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render
   return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
   return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
   return self.render(context)
          ^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/library.py", line 257, in render
   resolved_args, resolved_kwargs = self.get_resolved_arguments(context)
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/library.py", line 221, in get_resolved_arguments
   resolved_args = [var.resolve(context) for var in self.args]
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/library.py", line 221, in <listcomp>
   resolved_args = [var.resolve(context) for var in self.args]
                    ^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 715, in resolve
   obj = self.var.resolve(context)
         ^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 847, in resolve
   value = self._resolve_lookup(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 890, in _resolve_lookup
   current = getattr(current, bit)
             ^^^^^^^^^^^^^^^^^^^^^
 File "/opt/netbox/netbox/ipam/models/ip.py", line 905, in is_primary_ip
   if self.family == 6 and parent.primary_ip6_id == self.pk:
Originally created by @peteeckel on GitHub (Aug 31, 2023). Originally assigned to: @jeremystretch on GitHub. ### NetBox version v3.6.0 ### Python version 3.11 ### Steps to Reproduce 1. Open the "FHRP Groups" list view 2. Click on any IP address in the "IP Addresses" column ### Expected Behavior The detail view for the IP address is opened ### Observed Behavior An exception is raised: ``` Traceback (most recent call last): File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 880, in _resolve_lookup current = current[bit] ^^^^^^^^^^^^ During handling of the above exception ('IPAddress' object is not subscriptable), another exception occurred: File "/opt/netbox/lib64/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/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/lib64/python3.11/site-packages/django/views/generic/base.py", line 104, in view return self.dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/netbox/netbox/views/generic/base.py", line 26, in dispatch return super().dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/netbox/utilities/views.py", line 99, in dispatch return super().dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/views/generic/base.py", line 143, in dispatch return handler(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/netbox/netbox/views/generic/object_views.py", line 70, in get return render(request, self.get_template_name(), { File "/opt/netbox/lib64/python3.11/site-packages/django/shortcuts.py", line 24, in render content = loader.render_to_string(template_name, context, request, using=using) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader.py", line 62, in render_to_string return template.render(context, request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 175, in render return self._render(context) ^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/test/utils.py", line 112, in instrumented_test_render return self.nodelist.render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp> return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) ^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 157, in render return compiled_parent._render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/test/utils.py", line 112, in instrumented_test_render return self.nodelist.render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp> return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) ^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 157, in render return compiled_parent._render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/test/utils.py", line 112, in instrumented_test_render return self.nodelist.render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp> return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) ^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 157, in render return compiled_parent._render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/test/utils.py", line 112, in instrumented_test_render return self.nodelist.render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp> return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) ^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 63, in render result = block.nodelist.render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp> return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) ^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 63, in render result = block.nodelist.render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp> return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) ^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/loader_tags.py", line 63, in render result = block.nodelist.render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp> return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) ^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/library.py", line 257, in render resolved_args, resolved_kwargs = self.get_resolved_arguments(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/library.py", line 221, in get_resolved_arguments resolved_args = [var.resolve(context) for var in self.args] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/library.py", line 221, in <listcomp> resolved_args = [var.resolve(context) for var in self.args] ^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 715, in resolve obj = self.var.resolve(context) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 847, in resolve value = self._resolve_lookup(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/lib64/python3.11/site-packages/django/template/base.py", line 890, in _resolve_lookup current = getattr(current, bit) ^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/netbox/ipam/models/ip.py", line 905, in is_primary_ip if self.family == 6 and parent.primary_ip6_id == self.pk: ```
adam added the type: bugstatus: acceptedseverity: medium labels 2025-12-29 20:37:59 +01:00
adam closed this issue 2025-12-29 20:38:00 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#8547