Просмотр исходного кода

Fix record index for related objects

Use the parent object index as record index, and its own index only on
the field name.
Marko Hauptvogel 3 месяцев назад
Родитель
Сommit
8452222761
2 измененных файлов с 4 добавлено и 5 удалено
  1. 1 2
      netbox/dcim/tests/test_views.py
  2. 3 3
      netbox/netbox/views/generic/bulk_views.py

+ 1 - 2
netbox/dcim/tests/test_views.py

@@ -1036,8 +1036,7 @@ module-bays:
 
         response = self.client.post(reverse('dcim:devicetype_bulk_import'), data=form_data, follow=True)
         self.assertHttpStatus(response, 200)
-        # TODO record index should be 2
-        self.assertContains(response, "Record 3 module-bays[3].name: This field is required.")
+        self.assertContains(response, "Record 2 module-bays[3].name: This field is required.")
 
     def test_export_objects(self):
         url = reverse('dcim:devicetype_list')

+ 3 - 3
netbox/netbox/views/generic/bulk_views.py

@@ -368,7 +368,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
                 error_messages.append(f"Record {index} {prefix}{field_name}: {err}")
         return error_messages
 
-    def _save_object(self, model_form, request):
+    def _save_object(self, model_form, request, parent_idx):
         _action = 'Updated' if model_form.instance.pk else 'Created'
 
         # Save the primary object
@@ -396,7 +396,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
                 else:
                     # Replicate errors on the related object form to the import form for display and abort
                     raise ValidationError(
-                        self._compile_form_errors(f.errors, index=i, prefix=f'{field_name}[{i}]')
+                        self._compile_form_errors(f.errors, index=parent_idx, prefix=f'{field_name}[{i}]')
                     )
 
             # Enforce object-level permissions on related objects
@@ -481,7 +481,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
             restrict_form_fields(model_form, request.user)
 
             if model_form.is_valid():
-                obj = self._save_object(model_form, request)
+                obj = self._save_object(model_form, request, i)
                 saved_objects.append(obj)
             else:
                 # Raise model form errors