This commit is contained in:
David Kennedy 2025-01-31 13:07:36 -05:00
parent b1f528b9a2
commit 5996c4df12
No known key found for this signature in database
GPG key ID: 6528A5386E66B96B
3 changed files with 15 additions and 7 deletions

View file

@ -1,5 +1,6 @@
from registrar.utility import StrEnum from registrar.utility import StrEnum
from django.db import models from django.db import models
from django.db.models import Q
from django.apps import apps from django.apps import apps
from django.forms import ValidationError from django.forms import ValidationError
from registrar.utility.waffle import flag_is_active_for_user from registrar.utility.waffle import flag_is_active_for_user
@ -136,9 +137,12 @@ def validate_user_portfolio_permission(user_portfolio_permission):
"Based on current waffle flag settings, users cannot be assigned to multiple portfolios." "Based on current waffle flag settings, users cannot be assigned to multiple portfolios."
) )
existing_invitations = PortfolioInvitation.objects.exclude( existing_invitations = PortfolioInvitation.objects.filter(
portfolio=user_portfolio_permission.portfolio email=user_portfolio_permission.user.email
).filter(email=user_portfolio_permission.user.email) ).exclude(
Q(portfolio=user_portfolio_permission.portfolio) |
Q(status=PortfolioInvitation.PortfolioInvitationStatus.RETRIEVED)
)
if existing_invitations.exists(): if existing_invitations.exists():
raise ValidationError( raise ValidationError(
"This user is already assigned to a portfolio invitation. " "This user is already assigned to a portfolio invitation. "
@ -195,8 +199,11 @@ def validate_portfolio_invitation(portfolio_invitation):
if not flag_is_active_for_user(user, "multiple_portfolios"): if not flag_is_active_for_user(user, "multiple_portfolios"):
existing_permissions = UserPortfolioPermission.objects.filter(user=user) existing_permissions = UserPortfolioPermission.objects.filter(user=user)
existing_invitations = PortfolioInvitation.objects.exclude(id=portfolio_invitation.id).filter( existing_invitations = PortfolioInvitation.objects.filter(
email=portfolio_invitation.email email=portfolio_invitation.email
).exclude(
Q(id=portfolio_invitation.id) |
Q(status=PortfolioInvitation.PortfolioInvitationStatus.RETRIEVED)
) )
if existing_permissions.exists(): if existing_permissions.exists():

View file

@ -273,7 +273,7 @@ def _send_portfolio_admin_addition_emails_to_portfolio_admins(email: str, reques
f"Could not send email organization admin notification to {user.email} for portfolio: {portfolio.name}", f"Could not send email organization admin notification to {user.email} for portfolio: {portfolio.name}",
exc_info=True, exc_info=True,
) )
all_emails_sent = False all_emails_sent = False
return all_emails_sent return all_emails_sent
@ -324,5 +324,5 @@ def _send_portfolio_admin_removal_emails_to_portfolio_admins(email: str, request
f"Could not send email organization admin notification to {user.email} for portfolio: {portfolio.name}", f"Could not send email organization admin notification to {user.email} for portfolio: {portfolio.name}",
exc_info=True, exc_info=True,
) )
all_emails_sent = False all_emails_sent = False
return all_emails_sent return all_emails_sent

View file

@ -211,6 +211,7 @@ class PortfolioMemberEditView(PortfolioMemberEditPermissionView, View):
portfolio_permission = get_object_or_404(UserPortfolioPermission, pk=pk) portfolio_permission = get_object_or_404(UserPortfolioPermission, pk=pk)
user = portfolio_permission.user user = portfolio_permission.user
form = self.form_class(request.POST, instance=portfolio_permission) form = self.form_class(request.POST, instance=portfolio_permission)
removing_admin_role_on_self = False
if form.is_valid(): if form.is_valid():
try: try:
if form.is_change_from_member_to_admin(): if form.is_change_from_member_to_admin():
@ -477,7 +478,7 @@ class PortfolioInvitedMemberDeleteView(PortfolioMemberPermission, View):
else: else:
logger.warning("Could not send email notification to existing organization admins.", exc_info=True) logger.warning("Could not send email notification to existing organization admins.", exc_info=True)
messages.warning(self.request, "Could not send email notification to existing organization admins.") messages.warning(self.request, "Could not send email notification to existing organization admins.")
class PortfolioInvitedMemberEditView(PortfolioMemberEditPermissionView, View): class PortfolioInvitedMemberEditView(PortfolioMemberEditPermissionView, View):