Skip to content

AttributeError raised when deleting a CircuitTermination with attached cable -> interface #11416

@kkthxbye-code

Description

@kkthxbye-code

NetBox version

v3.4.2

Python version

3.10

Steps to Reproduce

  1. Create a Site testsite
  2. Create a manufacturer testmanu
  3. Create a device role testrole
  4. Create a device type testdevicetype
  5. Create a device testdevice with the above pre-requisites
  6. Create two interfaces inf[1-2] of any physical type
  7. Create a Provider testprovider
  8. Create a CircuitType testcircuittype
  9. Create a Circuit testcircuit wit the above requisites
  10. Create two CircuitTermination (A & Z) to site testsite on the circuit
  11. Connect end A to inf1
  12. Connect end Z to inf2
  13. Press the delete button next to the swap button on CircuitTermination A
  14. Press delete

Expected Behavior

Circuit termination is deleted

Observed Behavior

The following exception is thrown:

Traceback (most recent call last):
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/home/main/devel/repos/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 "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 103, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/main/devel/repos/netbox/netbox/netbox/views/generic/base.py", line 26, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/home/main/devel/repos/netbox/netbox/utilities/views.py", line 99, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 142, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/main/devel/repos/netbox/netbox/netbox/views/generic/object_views.py", line 366, in post
    obj.delete()
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/db/models/base.py", line 1118, in delete
    return collector.delete()
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/db/models/deletion.py", line 493, in delete
    signals.post_delete.send(
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 176, in send
    return [
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/home/main/devel/repos/netbox/netbox/circuits/signals.py", line 27, in rebuild_cablepaths
    rebuild_paths([peer_termination])
  File "/home/main/devel/repos/netbox/netbox/dcim/utils.py", line 60, in rebuild_paths
    create_cablepath(cp.origins)
  File "/home/main/devel/repos/netbox/netbox/dcim/utils.py", line 43, in create_cablepath
    cp = CablePath.from_origin(terminations)
  File "/home/main/devel/repos/netbox/netbox/dcim/models/cables.py", line 529, in from_origin
    path.append([
  File "/home/main/devel/repos/netbox/netbox/dcim/models/cables.py", line 530, in <listcomp>
    object_to_path_node(t) for t in remote_terminations
  File "/home/main/devel/repos/netbox/netbox/dcim/utils.py", line 21, in object_to_path_node
    ct = ContentType.objects.get_for_model(obj)
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/contrib/contenttypes/models.py", line 41, in get_for_model
    opts = self._get_opts(model, for_concrete_model)
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/contrib/contenttypes/models.py", line 28, in _get_opts
    model = model._meta.concrete_model
AttributeError: 'NoneType' object has no attribute '_meta'
Internal Server Error: /circuits/circuit-terminations/57/delete/
Traceback (most recent call last):
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/home/main/devel/repos/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 "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 103, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/main/devel/repos/netbox/netbox/netbox/views/generic/base.py", line 26, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/home/main/devel/repos/netbox/netbox/utilities/views.py", line 99, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 142, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/main/devel/repos/netbox/netbox/netbox/views/generic/object_views.py", line 366, in post
    obj.delete()
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/db/models/base.py", line 1118, in delete
    return collector.delete()
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/db/models/deletion.py", line 493, in delete
    signals.post_delete.send(
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 176, in send
    return [
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/home/main/devel/repos/netbox/netbox/circuits/signals.py", line 27, in rebuild_cablepaths
    rebuild_paths([peer_termination])
  File "/home/main/devel/repos/netbox/netbox/dcim/utils.py", line 60, in rebuild_paths
    create_cablepath(cp.origins)
  File "/home/main/devel/repos/netbox/netbox/dcim/utils.py", line 43, in create_cablepath
    cp = CablePath.from_origin(terminations)
  File "/home/main/devel/repos/netbox/netbox/dcim/models/cables.py", line 529, in from_origin
    path.append([
  File "/home/main/devel/repos/netbox/netbox/dcim/models/cables.py", line 530, in <listcomp>
    object_to_path_node(t) for t in remote_terminations
  File "/home/main/devel/repos/netbox/netbox/dcim/utils.py", line 21, in object_to_path_node
    ct = ContentType.objects.get_for_model(obj)
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/contrib/contenttypes/models.py", line 41, in get_for_model
    opts = self._get_opts(model, for_concrete_model)
  File "/home/main/devel/repos/netbox/venv/lib/python3.10/site-packages/django/contrib/contenttypes/models.py", line 28, in _get_opts
    model = model._meta.concrete_model
AttributeError: 'NoneType' object has no attribute '_meta'

Metadata

Metadata

Assignees

Labels

status: acceptedThis issue has been accepted for implementationtopic: cablingtype: bugA confirmed report of unexpected behavior in the application

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions