Fix logic in clean

This commit is contained in:
zandercymatics 2024-08-21 11:43:40 -06:00
parent 5c07775277
commit 32ed84a5e1
No known key found for this signature in database
GPG key ID: FF4636ABEC9682B7
2 changed files with 8 additions and 10 deletions

View file

@ -97,15 +97,19 @@ class UserPortfolioPermission(TimeStampedModel):
"""Extends clean method to perform additional validation, which can raise errors in django admin."""
super().clean()
if not flag_is_active(None, "multiple_portfolios") and self.pk is None:
# Check if a user is set without accessing the related object.
has_user = bool(self.user_id)
if not flag_is_active(None, "multiple_portfolios") and self.pk is None and has_user:
existing_permissions = UserPortfolioPermission.objects.filter(user=self.user)
if existing_permissions.exists():
raise ValidationError(
"Only one portfolio permission is allowed per user when multiple portfolios are disabled."
)
if self.portfolio is None and self._get_portfolio_permissions():
# Check if portfolio is set without accessing the related object.
has_portfolio = bool(self.portfolio_id)
if not has_portfolio and self._get_portfolio_permissions():
raise ValidationError("When portfolio roles or additional permissions are assigned, portfolio is required.")
if self.portfolio is not None and not self._get_portfolio_permissions():
if has_portfolio and not self._get_portfolio_permissions():
raise ValidationError("When portfolio is assigned, portfolio roles or additional permissions are required.")