diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index eef78c6c6..886de5a25 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -1994,7 +1994,7 @@ class ModuleTestCase( } initial_count = Module.objects.count() - self.assertHttpStatus(self.client.post(**request), 200) + self.assertHttpStatus(self.client.post(**request), 302) self.assertEqual(Module.objects.count(), initial_count + len(csv_data) - 1) self.assertEqual(Interface.objects.filter(device=device).count(), 0) @@ -2010,7 +2010,7 @@ class ModuleTestCase( } initial_count = Module.objects.count() - self.assertHttpStatus(self.client.post(**request), 200) + self.assertHttpStatus(self.client.post(**request), 302) self.assertEqual(Module.objects.count(), initial_count + len(csv_data) - 1) self.assertEqual(Interface.objects.filter(device=device).count(), 5) @@ -2086,7 +2086,7 @@ class ModuleTestCase( } initial_count = self._get_queryset().count() - self.assertHttpStatus(self.client.post(**request), 200) + self.assertHttpStatus(self.client.post(**request), 302) self.assertEqual(self._get_queryset().count(), initial_count + len(csv_data) - 1) # Re-retrieve interface to get new module id diff --git a/netbox/extras/tests/test_customfields.py b/netbox/extras/tests/test_customfields.py index f29a11e0e..6a3a3d074 100644 --- a/netbox/extras/tests/test_customfields.py +++ b/netbox/extras/tests/test_customfields.py @@ -1047,7 +1047,7 @@ class CustomFieldImportTest(TestCase): csv_data = '\n'.join(','.join(row) for row in data) response = self.client.post(reverse('dcim:site_import'), {'data': csv_data, 'format': 'csv'}) - self.assertEqual(response.status_code, 200) + self.assertEqual(response.status_code, 302) self.assertEqual(Site.objects.count(), 3) # Validate data for site 1 diff --git a/netbox/netbox/tests/test_import.py b/netbox/netbox/tests/test_import.py index 88d2605c5..73f775bd7 100644 --- a/netbox/netbox/tests/test_import.py +++ b/netbox/netbox/tests/test_import.py @@ -42,7 +42,7 @@ class CSVImportTestCase(ModelViewTestCase): self.assertHttpStatus(self.client.get(self._get_url('import')), 200) # Test POST with permission - self.assertHttpStatus(self.client.post(self._get_url('import'), data), 200) + self.assertHttpStatus(self.client.post(self._get_url('import'), data), 302) regions = Region.objects.all() self.assertEqual(regions.count(), 4) region = Region.objects.get(slug="region-4") diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index 6ca25f391..549e1cd8c 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -11,6 +11,7 @@ from django.db.models.fields.reverse_related import ManyToManyRel from django.forms import ModelMultipleChoiceField, MultipleHiddenInput from django.http import HttpResponse from django.shortcuts import get_object_or_404, redirect, render +from django.urls import reverse from django.utils.safestring import mark_safe from django_tables2.export import TableExport @@ -22,6 +23,7 @@ from utilities.forms import BulkRenameForm, ConfirmationForm, restrict_form_fiel from utilities.forms.bulk_import import ImportForm from utilities.htmx import is_embedded, is_htmx from utilities.permissions import get_permission_for_model +from utilities.utils import get_viewname from utilities.views import GetReturnURLMixin from .base import BaseMultiObjectView from .mixins import ActionsMixin, TableMixin @@ -435,7 +437,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView): def post(self, request): logger = logging.getLogger('netbox.views.BulkImportView') - + model = self.model_form._meta.model form = ImportForm(request.POST, request.FILES) if form.is_valid(): @@ -450,18 +452,14 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView): if self.queryset.filter(pk__in=[obj.pk for obj in new_objs]).count() != len(new_objs): raise PermissionsViolation - # Compile a table containing the imported objects - obj_table = self.table(new_objs) - if new_objs: - msg = 'Imported {} {}'.format(len(new_objs), new_objs[0]._meta.verbose_name_plural) + msg = f"Imported {len(new_objs)} {model._meta.verbose_name_plural}" logger.info(msg) messages.success(request, msg) - return render(request, "import_success.html", { - 'table': obj_table, - 'return_url': self.get_return_url(request), - }) + view_name = get_viewname(model, action='list') + results_url = f"{reverse(view_name)}?created_by_request={request.id}" + return redirect(results_url) except (AbortTransaction, ValidationError): clear_webhooks.send(sender=self) @@ -475,7 +473,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView): logger.debug("Form validation failed") return render(request, self.template_name, { - 'model': self.model_form._meta.model, + 'model': model, 'form': form, 'fields': self.model_form().fields, 'return_url': self.get_return_url(request), diff --git a/netbox/templates/import_success.html b/netbox/templates/import_success.html deleted file mode 100644 index 122555b81..000000000 --- a/netbox/templates/import_success.html +++ /dev/null @@ -1,17 +0,0 @@ -{% extends 'base/layout.html' %} -{% load render_table from django_tables2 %} - -{% block title %}Import Completed{% endblock %} - -{% block content %} -