diff --git a/src/registrar/context_processors.py b/src/registrar/context_processors.py index ee5f8aee1..ca7c92892 100644 --- a/src/registrar/context_processors.py +++ b/src/registrar/context_processors.py @@ -73,7 +73,7 @@ def portfolio_permissions(request): "has_base_portfolio_permission": request.user.has_base_portfolio_permission(), "has_domains_portfolio_permission": request.user.has_domains_portfolio_permission(), "has_domain_requests_portfolio_permission": request.user.has_domain_requests_portfolio_permission(), - "portfolio": request.user.portfolio, + "portfolio": request.user.last_selected_portfolio, "has_organization_feature_flag": True, } except AttributeError: diff --git a/src/registrar/models/portfolio_invitation.py b/src/registrar/models/portfolio_invitation.py index 2ad780429..c9666f6cb 100644 --- a/src/registrar/models/portfolio_invitation.py +++ b/src/registrar/models/portfolio_invitation.py @@ -87,9 +87,10 @@ class PortfolioInvitation(TimeStampedModel): raise RuntimeError("Cannot find the user to retrieve this portfolio invitation.") # and create a role for that user on this portfolio - user.portfolio = self.portfolio + user_portfolio = user.last_selected_portfolio + user_portfolio = self.portfolio if self.portfolio_roles and len(self.portfolio_roles) > 0: - user.portfolio_roles = self.portfolio_roles + user_portfolio.portfolio_roles = self.portfolio_roles if self.portfolio_additional_permissions and len(self.portfolio_additional_permissions) > 0: - user.portfolio_additional_permissions = self.portfolio_additional_permissions - user.save() + user_portfolio.portfolio_additional_permissions = self.portfolio_additional_permissions + user_portfolio.save() diff --git a/src/registrar/models/user.py b/src/registrar/models/user.py index 46094367b..5ed8a7844 100644 --- a/src/registrar/models/user.py +++ b/src/registrar/models/user.py @@ -338,7 +338,7 @@ class User(AbstractUser): for invitation in PortfolioInvitation.objects.filter( email__iexact=self.email, status=PortfolioInvitation.PortfolioInvitationStatus.INVITED ): - if self.portfolio is None: + if self.last_selected_portfolio is None: try: invitation.retrieve() invitation.save() @@ -410,6 +410,6 @@ class User(AbstractUser): def get_user_domain_ids(self, request): """Returns either the domains ids associated with this user on UserDomainRole or Portfolio""" if self.is_org_user(request) and self.has_view_all_domains_permission(): - return DomainInformation.objects.filter(portfolio=self.portfolio).values_list("domain_id", flat=True) + return DomainInformation.objects.filter(portfolio=self.last_selected_portfolio).values_list("domain_id", flat=True) else: return UserDomainRole.objects.filter(user=self).values_list("domain_id", flat=True) diff --git a/src/registrar/registrar_middleware.py b/src/registrar/registrar_middleware.py index 2af331bc9..6e7d110fb 100644 --- a/src/registrar/registrar_middleware.py +++ b/src/registrar/registrar_middleware.py @@ -143,10 +143,10 @@ class CheckPortfolioMiddleware: if current_path == self.home and request.user.is_authenticated and request.user.is_org_user(request): if request.user.has_base_portfolio_permission(): - portfolio = request.user.portfolio + portfolio = request.user.last_selected_portfolio # Add the portfolio to the request object - request.portfolio = portfolio + request.last_selected_portfolio = portfolio if request.user.has_domains_portfolio_permission(): portfolio_redirect = reverse("domains") diff --git a/src/registrar/views/domain.py b/src/registrar/views/domain.py index 72f2fd27e..bd3392c69 100644 --- a/src/registrar/views/domain.py +++ b/src/registrar/views/domain.py @@ -177,7 +177,7 @@ class DomainView(DomainBaseView): if self.request.user.has_domains_portfolio_permission(): if Domain.objects.filter(id=pk).exists(): domain = Domain.objects.get(id=pk) - if domain.domain_info.portfolio == self.request.user.portfolio: + if domain.domain_info.portfolio == self.request.user.last_selected_portfolio: return True return False @@ -236,7 +236,7 @@ class DomainOrgNameAddressView(DomainFormBaseView): # Org users shouldn't have access to this page is_org_user = self.request.user.is_org_user(self.request) - if self.request.user.portfolio and is_org_user: + if self.request.user.last_selected_portfolio and is_org_user: return False else: return super().has_permission() @@ -255,7 +255,7 @@ class DomainSubOrganizationView(DomainFormBaseView): # non-org users shouldn't have access to this page is_org_user = self.request.user.is_org_user(self.request) - if self.request.user.portfolio and is_org_user: + if self.request.user.last_selected_portfolio and is_org_user: return super().has_permission() else: return False @@ -335,7 +335,7 @@ class DomainSeniorOfficialView(DomainFormBaseView): # Org users shouldn't have access to this page is_org_user = self.request.user.is_org_user(self.request) - if self.request.user.portfolio and is_org_user: + if self.request.user.last_selected_portfolio and is_org_user: return False else: return super().has_permission() diff --git a/src/registrar/views/portfolios.py b/src/registrar/views/portfolios.py index 8a5321cc9..81c104790 100644 --- a/src/registrar/views/portfolios.py +++ b/src/registrar/views/portfolios.py @@ -56,7 +56,7 @@ class PortfolioOrganizationView(PortfolioBasePermissionView, FormMixin): def get_object(self, queryset=None): """Get the portfolio object based on the request user.""" - portfolio = self.request.user.portfolio + portfolio = self.request.user.last_selected_portfolio if portfolio is None: raise Http404("No organization found for this user") return portfolio @@ -112,7 +112,7 @@ class PortfolioSeniorOfficialView(PortfolioBasePermissionView, FormMixin): def get_object(self, queryset=None): """Get the portfolio object based on the request user.""" - portfolio = self.request.user.portfolio + portfolio = self.request.user.last_selected_portfolio if portfolio is None: raise Http404("No organization found for this user") return portfolio