added unit test

This commit is contained in:
CocoByte 2024-10-08 15:53:04 -06:00
parent ae197ab3ed
commit 23e99c054d
No known key found for this signature in database
GPG key ID: BBFAA2526384C97F
2 changed files with 46 additions and 9 deletions

View file

@ -5,6 +5,13 @@ from registrar.models.utility.portfolio_helper import UserPortfolioPermissionCho
from .utility.time_stamped_model import TimeStampedModel
from django.contrib.postgres.fields import ArrayField
# ---Logger
import logging
from venv import logger
from registrar.management.commands.utility.terminal_helper import TerminalColors, TerminalHelper
logger = logging.getLogger(__name__)
class UserPortfolioPermission(TimeStampedModel):
"""This is a linking table that connects a user with a role on a portfolio."""
@ -105,12 +112,15 @@ class UserPortfolioPermission(TimeStampedModel):
if has_portfolio and not self._get_portfolio_permissions():
raise ValidationError("When portfolio is assigned, portfolio roles or additional permissions are required.")
# Check if a user is set without accessing the related object.
has_user = bool(self.user_id)
TerminalHelper.colorful_logger(logger.info, TerminalColors.OKCYAN, f"***CLEANING***")
if has_user:
existing_permissions = UserPortfolioPermission.objects.filter(user=self.user)
if not flag_is_active_for_user(self.user, "multiple_portfolios") and existing_permissions.exists():
existing_permission_pks = UserPortfolioPermission.objects.filter(user=self.user).values_list("pk", flat=True)
TerminalHelper.colorful_logger(logger.info, TerminalColors.OKCYAN, f"existing_permission_pks: {existing_permission_pks}")
TerminalHelper.colorful_logger(logger.info, TerminalColors.OKCYAN, f"self pk: {self.pk}")
if not flag_is_active_for_user(self.user, "multiple_portfolios") and existing_permission_pks.exists() and not self.pk in existing_permission_pks:
raise ValidationError(
"This user is already assigned to a portfolio. "
"Based on current waffle flag settings, users cannot be assigned to multiple portfolios."