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 urllib.parse import parse_qs
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.http import HttpResponseRedirect
|
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 waffle.decorators import flag_is_active
|
||||||
|
|
||||||
from registrar.models.utility.generic_helper import replace_url_queryparams
|
from registrar.models.utility.generic_helper import replace_url_queryparams
|
||||||
|
@ -144,28 +144,17 @@ class CheckPortfolioMiddleware:
|
||||||
if not request.user.is_authenticated:
|
if not request.user.is_authenticated:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
old_updated_at = None
|
portfolio = request.session.get("portfolio")
|
||||||
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(
|
# if multiple portfolios are allowed for this user
|
||||||
"portfolio__updated_at"
|
if flag_is_active(request, "organization_feature"):
|
||||||
)
|
old_updated_at = request.session.get("portfolio__updated_at")
|
||||||
if request.user.is_org_user(request) or should_update_portfolio:
|
request.session["portfolio__updated_at"] = portfolio.updated_at if portfolio else None
|
||||||
# if multiple portfolios are allowed for this user
|
if request.user.is_org_user(request) or old_updated_at != request.session.get("portfolio__updated_at"):
|
||||||
if flag_is_active(request, "multiple_portfolios"):
|
self.set_portfolio_in_session(request)
|
||||||
# NOTE: we will want to change later to have a workflow for selecting
|
elif request.session.get("portfolio"):
|
||||||
# portfolio and another for switching portfolio; for now, select first
|
# Edge case: User disables flag while already logged in
|
||||||
request.session["portfolio"] = request.user.get_first_portfolio()
|
request.session["portfolio"] = None
|
||||||
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"):
|
|
||||||
request.session["portfolio"] = None
|
|
||||||
|
|
||||||
if request.session.get("portfolio"):
|
if request.session.get("portfolio"):
|
||||||
if current_path == self.home:
|
if current_path == self.home:
|
||||||
|
@ -173,7 +162,14 @@ class CheckPortfolioMiddleware:
|
||||||
portfolio_redirect = reverse("domains")
|
portfolio_redirect = reverse("domains")
|
||||||
else:
|
else:
|
||||||
portfolio_redirect = reverse("no-portfolio-domains")
|
portfolio_redirect = reverse("no-portfolio-domains")
|
||||||
|
|
||||||
return HttpResponseRedirect(portfolio_redirect)
|
return HttpResponseRedirect(portfolio_redirect)
|
||||||
|
|
||||||
return None
|
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, _ = Portfolio.objects.get_or_create(creator=self.user2, organization_name="Hotel California")
|
||||||
self.portfolio_role_base = UserPortfolioRoleChoices.ORGANIZATION_MEMBER
|
self.portfolio_role_base = UserPortfolioRoleChoices.ORGANIZATION_MEMBER
|
||||||
self.portfolio_role_admin = UserPortfolioRoleChoices.ORGANIZATION_ADMIN
|
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.portfolio_permission_2 = UserPortfolioPermissionChoices.EDIT_REQUESTS
|
||||||
self.invitation, _ = PortfolioInvitation.objects.get_or_create(
|
self.invitation, _ = PortfolioInvitation.objects.get_or_create(
|
||||||
email=self.email,
|
email=self.email,
|
||||||
|
|
|
@ -78,7 +78,7 @@ class TestPortfolio(WebTest):
|
||||||
def test_middleware_does_not_redirect_if_no_permission(self):
|
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"""
|
"""Test that user with no portfolio permission is not redirected when attempting to access home"""
|
||||||
self.app.set_user(self.user.username)
|
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=[]
|
user=self.user, portfolio=self.portfolio, additional_permissions=[]
|
||||||
)
|
)
|
||||||
self.user.portfolio = self.portfolio
|
self.user.portfolio = self.portfolio
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue