Exceptions raised on CSV cable import #2892

Closed
opened 2025-12-29 18:23:10 +01:00 by adam · 2 comments
Owner

Originally created by @candlerb on GitHub (Sep 20, 2019).

Environment

  • Python version: 3.5.2
  • NetBox version: 2.6.4

Steps to Reproduce

  1. Try to import a cable via CSV (/dcim/cables/import/):
  2. ... when the port you reference doesn't exist, or
  3. ... when the port you reference already has a cable in it.

e.g.

side_a_device,side_a_type,side_a_name,side_b_device,side_b_type,side_b_name
pp1,rearport,R7,pp1,rearport,R8

where R8 doesn't exist, or R8 is already connected

Expected Behavior

A sane error message such as "pp1 rearport R8 does not exist" or "pp1 rearport R8 is already connected"

Observed Behavior

Exception is thrown:

<class 'dcim.models.Cable.termination_b_type.RelatedObjectDoesNotExist'>

Cable has no termination_b_type.

Traceback:

File "/opt/netbox/netbox/dcim/models.py" in clean
  2811.             self.termination_b_type.model_class().objects.get(pk=self.termination_b_id)

File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/related_descriptors.py" in __get__
  189.                 "%s has no %s." % (self.field.model.__name__, self.field.name)

During handling of the above exception (Cable has no termination_b_type.), another exception occurred:

File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/local/lib/python3.5/dist-packages/django/views/generic/base.py" in view
  71.             return self.dispatch(request, *args, **kwargs)

File "/usr/local/lib/python3.5/dist-packages/django/contrib/auth/mixins.py" in dispatch
  85.         return super().dispatch(request, *args, **kwargs)

File "/usr/local/lib/python3.5/dist-packages/django/views/generic/base.py" in dispatch
  97.         return handler(request, *args, **kwargs)

File "/opt/netbox/netbox/utilities/views.py" in post
  449.                         if obj_form.is_valid():

File "/usr/local/lib/python3.5/dist-packages/django/forms/forms.py" in is_valid
  185.         return self.is_bound and not self.errors

File "/usr/local/lib/python3.5/dist-packages/django/forms/forms.py" in errors
  180.             self.full_clean()

File "/usr/local/lib/python3.5/dist-packages/django/forms/forms.py" in full_clean
  383.         self._post_clean()

File "/usr/local/lib/python3.5/dist-packages/django/forms/models.py" in _post_clean
  403.             self.instance.full_clean(exclude=exclude, validate_unique=False)

File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py" in full_clean
  1188.             self.clean()

File "/opt/netbox/netbox/dcim/models.py" in clean
  2814.                 'termination_b': 'Invalid ID for type {}'.format(self.termination_b_type)

File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/related_descriptors.py" in __get__
  189.                 "%s has no %s." % (self.field.model.__name__, self.field.name)

Exception Type: RelatedObjectDoesNotExist at /dcim/cables/import/
Exception Value: Cable has no termination_b_type.
Originally created by @candlerb on GitHub (Sep 20, 2019). ### Environment * Python version: 3.5.2 * NetBox version: 2.6.4 ### Steps to Reproduce 1. Try to import a cable via CSV (`/dcim/cables/import/`): 2. ... when the port you reference doesn't exist, or 3. ... when the port you reference already has a cable in it. e.g. ``` side_a_device,side_a_type,side_a_name,side_b_device,side_b_type,side_b_name pp1,rearport,R7,pp1,rearport,R8 ``` where R8 doesn't exist, or R8 is already connected ### Expected Behavior A sane error message such as "pp1 rearport R8 does not exist" or "pp1 rearport R8 is already connected" ### Observed Behavior Exception is thrown: ``` <class 'dcim.models.Cable.termination_b_type.RelatedObjectDoesNotExist'> Cable has no termination_b_type. ``` Traceback: ``` File "/opt/netbox/netbox/dcim/models.py" in clean 2811. self.termination_b_type.model_class().objects.get(pk=self.termination_b_id) File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/related_descriptors.py" in __get__ 189. "%s has no %s." % (self.field.model.__name__, self.field.name) During handling of the above exception (Cable has no termination_b_type.), another exception occurred: File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/exception.py" in inner 34. response = get_response(request) File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py" in _get_response 115. response = self.process_exception_by_middleware(e, request) File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py" in _get_response 113. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python3.5/dist-packages/django/views/generic/base.py" in view 71. return self.dispatch(request, *args, **kwargs) File "/usr/local/lib/python3.5/dist-packages/django/contrib/auth/mixins.py" in dispatch 85. return super().dispatch(request, *args, **kwargs) File "/usr/local/lib/python3.5/dist-packages/django/views/generic/base.py" in dispatch 97. return handler(request, *args, **kwargs) File "/opt/netbox/netbox/utilities/views.py" in post 449. if obj_form.is_valid(): File "/usr/local/lib/python3.5/dist-packages/django/forms/forms.py" in is_valid 185. return self.is_bound and not self.errors File "/usr/local/lib/python3.5/dist-packages/django/forms/forms.py" in errors 180. self.full_clean() File "/usr/local/lib/python3.5/dist-packages/django/forms/forms.py" in full_clean 383. self._post_clean() File "/usr/local/lib/python3.5/dist-packages/django/forms/models.py" in _post_clean 403. self.instance.full_clean(exclude=exclude, validate_unique=False) File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py" in full_clean 1188. self.clean() File "/opt/netbox/netbox/dcim/models.py" in clean 2814. 'termination_b': 'Invalid ID for type {}'.format(self.termination_b_type) File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/related_descriptors.py" in __get__ 189. "%s has no %s." % (self.field.model.__name__, self.field.name) Exception Type: RelatedObjectDoesNotExist at /dcim/cables/import/ Exception Value: Cable has no termination_b_type. ```
adam added the status: duplicate label 2025-12-29 18:23:10 +01:00
adam closed this issue 2025-12-29 18:23:10 +01:00
Author
Owner

@jeremystretch commented on GitHub (Sep 25, 2019):

@candlerb is this essentially the same issue as #3311?

@jeremystretch commented on GitHub (Sep 25, 2019): @candlerb is this essentially the same issue as #3311?
Author
Owner

@candlerb commented on GitHub (Sep 25, 2019):

Yes - I forgot I had already posted that.

@candlerb commented on GitHub (Sep 25, 2019): Yes - I forgot I had already posted that.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#2892