Skip to content

Commit 8452222

Browse files
committed
Fix record index for related objects
Use the parent object index as record index, and its own index only on the field name.
1 parent 8a59fc7 commit 8452222

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

netbox/dcim/tests/test_views.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1036,8 +1036,7 @@ def test_import_error_numbering(self):
10361036

10371037
response = self.client.post(reverse('dcim:devicetype_bulk_import'), data=form_data, follow=True)
10381038
self.assertHttpStatus(response, 200)
1039-
# TODO record index should be 2
1040-
self.assertContains(response, "Record 3 module-bays[3].name: This field is required.")
1039+
self.assertContains(response, "Record 2 module-bays[3].name: This field is required.")
10411040

10421041
def test_export_objects(self):
10431042
url = reverse('dcim:devicetype_list')

netbox/netbox/views/generic/bulk_views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ def _compile_form_errors(self, errors, index, prefix=None):
368368
error_messages.append(f"Record {index} {prefix}{field_name}: {err}")
369369
return error_messages
370370

371-
def _save_object(self, model_form, request):
371+
def _save_object(self, model_form, request, parent_idx):
372372
_action = 'Updated' if model_form.instance.pk else 'Created'
373373

374374
# Save the primary object
@@ -396,7 +396,7 @@ def _save_object(self, model_form, request):
396396
else:
397397
# Replicate errors on the related object form to the import form for display and abort
398398
raise ValidationError(
399-
self._compile_form_errors(f.errors, index=i, prefix=f'{field_name}[{i}]')
399+
self._compile_form_errors(f.errors, index=parent_idx, prefix=f'{field_name}[{i}]')
400400
)
401401

402402
# Enforce object-level permissions on related objects
@@ -481,7 +481,7 @@ def create_and_update_objects(self, form, request):
481481
restrict_form_fields(model_form, request.user)
482482

483483
if model_form.is_valid():
484-
obj = self._save_object(model_form, request)
484+
obj = self._save_object(model_form, request, i)
485485
saved_objects.append(obj)
486486
else:
487487
# Raise model form errors

0 commit comments

Comments
 (0)