Update portfolio.py

This commit is contained in:
zandercymatics 2025-03-05 10:40:20 -07:00
parent d4bcd03a96
commit 88e8b2dbeb
No known key found for this signature in database
GPG key ID: FF4636ABEC9682B7

View file

@ -299,29 +299,6 @@ class BasePortfolioMemberForm(forms.ModelForm):
cleaned_data["additional_permissions"] = list(additional_permissions - role_permissions)
return cleaned_data
def _post_clean(self):
"""
Override _post_clean to customize model validation errors.
This runs after form clean is complete, but before the errors are displayed.
"""
try:
super()._post_clean()
self.instance.clean()
except forms.ValidationError as e:
override_error = False
if hasattr(e, "code"):
field = "email" if "email" in self.fields else None
if e.code == "has_existing_permissions":
self.add_error(field, "This user is already a member of another .gov organization.")
override_error = True
elif e.code == "has_existing_invitations":
self.add_error(field, "This user has already been invited to another .gov organization.")
override_error = True
if override_error:
if "__all__" in self._errors:
del self._errors["__all__"]
def map_instance_to_initial(self):
"""
@ -468,3 +445,26 @@ class PortfolioNewMemberForm(BasePortfolioMemberForm):
class Meta:
model = PortfolioInvitation
fields = ["portfolio", "email", "roles", "additional_permissions"]
def _post_clean(self):
"""
Override _post_clean to customize model validation errors.
This runs after form clean is complete, but before the errors are displayed.
"""
try:
super()._post_clean()
self.instance.clean()
except forms.ValidationError as e:
override_error = False
if hasattr(e, "code"):
field = "email" if "email" in self.fields else None
if e.code == "has_existing_permissions":
self.add_error(field, "This user is already a member of another .gov organization.")
override_error = True
elif e.code == "has_existing_invitations":
self.add_error(field, "This user has already been invited to another .gov organization.")
override_error = True
if override_error:
if "__all__" in self._errors:
del self._errors["__all__"]