From b777d859cfd1dea3304fb5463d4d2365089ccb58 Mon Sep 17 00:00:00 2001 From: Matthew Holmes Date: Thu, 7 Nov 2024 09:41:54 +0000 Subject: [PATCH] ECIL-287 Remove user_pk path param from new-user-edit endpoint. --- web/domains/user/urls.py | 2 +- web/domains/user/views.py | 15 +++++++++++---- web/middleware/one_login.py | 2 +- web/tests/domains/user/test_views.py | 4 ++-- web/tests/middleware/test_one_login.py | 4 ++-- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/web/domains/user/urls.py b/web/domains/user/urls.py index e6a77b026..670ee402b 100644 --- a/web/domains/user/urls.py +++ b/web/domains/user/urls.py @@ -6,12 +6,12 @@ urlpatterns = [ path("welcome/", views.NewUserWelcomeView.as_view(), name="user-welcome"), path("welcome/clear/", views.ClearNewUserWelcomeView.as_view(), name="user-welcome-clear"), + path("new-user/", views.NewUserUpdateView.as_view(), name="new-user-edit"), path( "/", include( [ path("", views.UserUpdateView.as_view(), name="user-edit"), - path("new-user/", views.NewUserUpdateView.as_view(), name="new-user-edit"), path( "number/", include( diff --git a/web/domains/user/views.py b/web/domains/user/views.py index 41e78e41b..34d2ec9d1 100644 --- a/web/domains/user/views.py +++ b/web/domains/user/views.py @@ -106,15 +106,22 @@ def get_success_url(self) -> str: return super().get_success_url() -class NewUserUpdateView(LoginRequiredMixin, UpdateView): +class NewUserUpdateView(LoginRequiredMixin, FormView): """View shown after a new user is redirected back to ICMS from GOV.UK One Login.""" - # UpdateView config - model = User - pk_url_kwarg = "user_pk" form_class = OneLoginNewUserUpdateForm template_name = "web/domains/user/one_login/user_edit.html" + def get_form_kwargs(self) -> dict[str, Any]: + kwargs = super().get_form_kwargs() + + return kwargs | {"instance": self.request.user} + + def form_valid(self, form: OneLoginNewUserUpdateForm) -> HttpResponseRedirect: + form.save() + + return super().form_valid(form) + def get_success_url(self) -> str: site = self.request.site diff --git a/web/middleware/one_login.py b/web/middleware/one_login.py index 15bfd44df..7960e6b6b 100644 --- a/web/middleware/one_login.py +++ b/web/middleware/one_login.py @@ -38,7 +38,7 @@ def __call__(self, request: HttpRequest) -> HttpResponse | HttpResponseRedirect: ): messages.info(request, "Please set your first and last name.") # /PS-IGNORE - return redirect(reverse("new-user-edit", kwargs={"user_pk": request.user.pk})) + return redirect(reverse("new-user-edit")) response = self.get_response(request) diff --git a/web/tests/domains/user/test_views.py b/web/tests/domains/user/test_views.py index 468a642c2..9f229c869 100644 --- a/web/tests/domains/user/test_views.py +++ b/web/tests/domains/user/test_views.py @@ -61,8 +61,8 @@ def setup(self, importer_client, importer_one_contact, exporter_client, exporter self.importer_user = importer_one_contact self.exporter_user = exporter_one_contact - self.importer_url = reverse("new-user-edit", kwargs={"user_pk": importer_one_contact.pk}) - self.exporter_url = reverse("new-user-edit", kwargs={"user_pk": exporter_one_contact.pk}) + self.importer_url = reverse("new-user-edit") + self.exporter_url = reverse("new-user-edit") self.importer_client = importer_client self.exporter_client = exporter_client diff --git a/web/tests/middleware/test_one_login.py b/web/tests/middleware/test_one_login.py index 3e2023734..e797cb8d7 100644 --- a/web/tests/middleware/test_one_login.py +++ b/web/tests/middleware/test_one_login.py @@ -27,7 +27,7 @@ def test_middleware_redirects_to_edit_new_user_first_name(self, rf, importer_one ) assert response.status_code == 302 - assert response.url == reverse("new-user-edit", kwargs={"user_pk": importer_one_contact.pk}) + assert response.url == reverse("new-user-edit") def test_middleware_redirects_to_edit_new_user_last_name(self, rf, importer_one_contact): request = rf.request() @@ -48,7 +48,7 @@ def test_middleware_redirects_to_edit_new_user_last_name(self, rf, importer_one_ ) assert response.status_code == 302 - assert response.url == reverse("new-user-edit", kwargs={"user_pk": importer_one_contact.pk}) + assert response.url == reverse("new-user-edit") def test_middleware_does_not_redirect_to_edit_user(self, rf, importer_one_contact): request = rf.request()