mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-19 19:09:22 +02:00
Merge branch 'rjm/2351-org-requests-page' of https://github.com/cisagov/manage.get.gov into rjm/2351-org-requests-page
This commit is contained in:
commit
a3204c872d
3 changed files with 21 additions and 25 deletions
|
@ -6,7 +6,7 @@ import logging
|
|||
from urllib.parse import parse_qs
|
||||
from django.urls import reverse
|
||||
from django.http import HttpResponseRedirect
|
||||
from registrar.models.user import User
|
||||
from registrar.models import User, Portfolio
|
||||
from waffle.decorators import flag_is_active
|
||||
|
||||
from registrar.models.utility.generic_helper import replace_url_queryparams
|
||||
|
@ -144,27 +144,16 @@ class CheckPortfolioMiddleware:
|
|||
if not request.user.is_authenticated:
|
||||
return 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
|
||||
portfolio = request.session.get("portfolio")
|
||||
|
||||
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
|
||||
# portfolio and another for switching portfolio; for now, select first
|
||||
request.session["portfolio"] = request.user.get_first_portfolio()
|
||||
elif flag_is_active(request, "organization_feature"):
|
||||
request.session["portfolio"] = request.user.get_first_portfolio()
|
||||
else:
|
||||
request.session["portfolio"] = None
|
||||
else:
|
||||
# Edge case: waffle flag is changed while the user is logged in
|
||||
if not request.user.is_org_user(request) and request.session.get("portfolio"):
|
||||
if flag_is_active(request, "organization_feature"):
|
||||
old_updated_at = request.session.get("portfolio__updated_at")
|
||||
request.session["portfolio__updated_at"] = portfolio.updated_at if portfolio else None
|
||||
if request.user.is_org_user(request) or old_updated_at != request.session.get("portfolio__updated_at"):
|
||||
self.set_portfolio_in_session(request)
|
||||
elif request.session.get("portfolio"):
|
||||
# Edge case: User disables flag while already logged in
|
||||
request.session["portfolio"] = None
|
||||
|
||||
if request.session.get("portfolio"):
|
||||
|
@ -173,7 +162,14 @@ class CheckPortfolioMiddleware:
|
|||
portfolio_redirect = reverse("domains")
|
||||
else:
|
||||
portfolio_redirect = reverse("no-portfolio-domains")
|
||||
|
||||
return HttpResponseRedirect(portfolio_redirect)
|
||||
|
||||
return None
|
||||
|
||||
def set_portfolio_in_session(self, request):
|
||||
# NOTE: we will want to change later to have a workflow for selecting
|
||||
# portfolio and another for switching portfolio; for now, select first
|
||||
if flag_is_active(request, "multiple_portfolios"):
|
||||
request.session["portfolio"] = request.user.get_first_portfolio()
|
||||
else:
|
||||
request.session["portfolio"] = request.user.get_first_portfolio()
|
||||
|
|
|
@ -1135,7 +1135,7 @@ class TestPortfolioInvitations(TestCase):
|
|||
self.portfolio, _ = Portfolio.objects.get_or_create(creator=self.user2, organization_name="Hotel California")
|
||||
self.portfolio_role_base = UserPortfolioRoleChoices.ORGANIZATION_MEMBER
|
||||
self.portfolio_role_admin = UserPortfolioRoleChoices.ORGANIZATION_ADMIN
|
||||
self.portfolio_permission_1 = UserPortfolioPermissionChoices.VIEW_CREATED_REQUESTS
|
||||
self.portfolio_permission_1 = UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS
|
||||
self.portfolio_permission_2 = UserPortfolioPermissionChoices.EDIT_REQUESTS
|
||||
self.invitation, _ = PortfolioInvitation.objects.get_or_create(
|
||||
email=self.email,
|
||||
|
|
|
@ -78,7 +78,7 @@ class TestPortfolio(WebTest):
|
|||
def test_middleware_does_not_redirect_if_no_permission(self):
|
||||
"""Test that user with no portfolio permission is not redirected when attempting to access home"""
|
||||
self.app.set_user(self.user.username)
|
||||
portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(
|
||||
UserPortfolioPermission.objects.get_or_create(
|
||||
user=self.user, portfolio=self.portfolio, additional_permissions=[]
|
||||
)
|
||||
self.user.portfolio = self.portfolio
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue