From 9bd67cfdbe2cf7c2034355a1fe18873019edade4 Mon Sep 17 00:00:00 2001 From: zandercymatics <141044360+zandercymatics@users.noreply.github.com> Date: Thu, 5 Sep 2024 11:38:16 -0600 Subject: [PATCH] fix bug with registrar and basic redirect link stuff --- src/registrar/registrar_middleware.py | 15 +++++++++++---- .../templates/domain_request_status.html | 17 +++++++++++++++-- src/registrar/views/domain_request.py | 9 ++++++++- src/registrar/views/domain_requests_json.py | 2 ++ 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/registrar/registrar_middleware.py b/src/registrar/registrar_middleware.py index 4b590db1e..3ce6fde5d 100644 --- a/src/registrar/registrar_middleware.py +++ b/src/registrar/registrar_middleware.py @@ -144,8 +144,15 @@ class CheckPortfolioMiddleware: if not request.user.is_authenticated: return None - # set the portfolio in the session if it is not set - if "portfolio" not in request.session or request.session["portfolio"] is None: + old_updated_at = None + if request.session.get("portfolio"): + old_updated_at = request.session.get("portfolio__updated_at") + request.session["portfolio__updated_at"] = request.session.get("portfolio").updated_at + + should_update_portfolio = ( + not request.session.get("portfolio") or old_updated_at != request.session.get("portfolio__updated_at") + ) + if request.user.is_org_user(request) or should_update_portfolio: # if multiple portfolios are allowed for this user if flag_is_active(request, "multiple_portfolios"): # NOTE: we will want to change later to have a workflow for selecting @@ -156,8 +163,8 @@ class CheckPortfolioMiddleware: else: request.session["portfolio"] = None - if request.session["portfolio"] is not None and current_path == self.home: - if request.user.is_org_user(request): + if request.session.get("portfolio"): + if current_path == self.home: if request.user.has_domains_portfolio_permission(request.session["portfolio"]): portfolio_redirect = reverse("domains") else: diff --git a/src/registrar/templates/domain_request_status.html b/src/registrar/templates/domain_request_status.html index 183a8be81..40722c41e 100644 --- a/src/registrar/templates/domain_request_status.html +++ b/src/registrar/templates/domain_request_status.html @@ -8,13 +8,26 @@ {% block content %}
- + {% comment %} + The back button should redirect to the domain request page if we are in the portfolio view. + Otherwise, lets just redirect back to home. + {% endcomment %} + {% if portfolio %} + {% url 'domain-requests' as url%} + {% else %} + {% url 'home' as url%} + {% endif %} +

- Back to manage your domains + {% if portfolio %} + Back to manage your domains requests + {% else %} + Back to manage your domains + {% endif %}

Domain request for {{ DomainRequest.requested_domain.name }}

diff --git a/src/registrar/views/domain_request.py b/src/registrar/views/domain_request.py index b691549cd..fbadeb51e 100644 --- a/src/registrar/views/domain_request.py +++ b/src/registrar/views/domain_request.py @@ -152,7 +152,14 @@ class DomainRequestWizard(DomainRequestWizardPermissionView, TemplateView): except DomainRequest.DoesNotExist: logger.debug("DomainRequest id %s did not have a DomainRequest" % id) - self._domain_request = DomainRequest.objects.create(creator=self.request.user) + # If a user is creating a request, we assume that perms are handled upstream + if self.request.user.is_org_user(self.request): + self._domain_request = DomainRequest.objects.create( + creator=self.request.user, + portfolio=self.request.session.get("portfolio"), + ) + else: + self._domain_request = DomainRequest.objects.create(creator=self.request.user) self.storage["domain_request_id"] = self._domain_request.id return self._domain_request diff --git a/src/registrar/views/domain_requests_json.py b/src/registrar/views/domain_requests_json.py index 6eefe02fc..85e46b261 100644 --- a/src/registrar/views/domain_requests_json.py +++ b/src/registrar/views/domain_requests_json.py @@ -47,6 +47,8 @@ def get_domain_requests_ids_from_request(request): """ portfolio = request.GET.get("portfolio") if portfolio: + # Question: + # Do we need to exclude started if the creator isn't the current request user domain_requests = DomainRequest.objects.filter(portfolio=portfolio).exclude( status=DomainRequest.DomainRequestStatus.APPROVED )