Merge branch 'main' into za/2047-force-new-users-profile

This commit is contained in:
zandercymatics 2024-06-03 12:51:57 -06:00
commit 7d3067a969
No known key found for this signature in database
GPG key ID: FF4636ABEC9682B7
4 changed files with 46 additions and 10 deletions

View file

@ -4,6 +4,7 @@
from enum import Enum
import logging
from urllib.parse import parse_qs, unquote
from urllib.parse import quote
@ -14,6 +15,7 @@ from django.urls import NoReverseMatch, reverse
from registrar.models import (
Contact,
)
from registrar.models.utility.generic_helper import replace_url_queryparams
from registrar.views.utility.permission_views import UserProfilePermissionView
from waffle.decorators import flag_is_active, waffle_flag
@ -39,6 +41,11 @@ class UserProfileView(UserProfilePermissionView, FormMixin):
self._refresh_session_and_object(request)
form = self.form_class(instance=self.object)
context = self.get_context_data(object=self.object, form=form)
return_to_request = request.GET.get("return_to_request")
if return_to_request:
context["return_to_request"] = True
return self.render_to_response(context)
def _refresh_session_and_object(self, request):
@ -48,6 +55,9 @@ class UserProfileView(UserProfilePermissionView, FormMixin):
@waffle_flag("profile_feature") # type: ignore
def dispatch(self, request, *args, **kwargs): # type: ignore
# Store the original queryparams to persist them
query_params = request.META["QUERY_STRING"]
request.session["query_params"] = query_params
return super().dispatch(request, *args, **kwargs)
def get_context_data(self, **kwargs):
@ -64,7 +74,16 @@ class UserProfileView(UserProfilePermissionView, FormMixin):
def get_success_url(self):
"""Redirect to the user's profile page."""
return reverse("user-profile")
query_params = {}
if "query_params" in self.session:
params = unquote(self.session["query_params"])
query_params = parse_qs(params)
# Preserve queryparams and add them back to the url
base_url = reverse("user-profile")
new_redirect = replace_url_queryparams(base_url, query_params, convert_list_to_csv=True)
return new_redirect
def post(self, request, *args, **kwargs):
"""Handle post requests (form submissions)"""