Merge remote-tracking branch 'origin/main' into nl/2218-emails-readonly-for-analysts

This commit is contained in:
CocoByte 2024-06-25 14:45:48 -06:00
commit b75d8c6193
No known key found for this signature in database
GPG key ID: BBFAA2526384C97F
3 changed files with 18 additions and 10 deletions

View file

@ -17,6 +17,8 @@ from .utility.time_stamped_model import TimeStampedModel
from ..utility.email import send_templated_email, EmailSendingError from ..utility.email import send_templated_email, EmailSendingError
from itertools import chain from itertools import chain
from waffle.decorators import flag_is_active
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -1165,19 +1167,21 @@ class DomainRequest(TimeStampedModel):
def _is_policy_acknowledgement_complete(self): def _is_policy_acknowledgement_complete(self):
return self.is_policy_acknowledged is not None return self.is_policy_acknowledged is not None
def _is_general_form_complete(self): def _is_general_form_complete(self, request):
has_profile_feature_flag = flag_is_active(request, "profile_feature")
return ( return (
self._is_organization_name_and_address_complete() self._is_organization_name_and_address_complete()
and self._is_authorizing_official_complete() and self._is_authorizing_official_complete()
and self._is_requested_domain_complete() and self._is_requested_domain_complete()
and self._is_purpose_complete() and self._is_purpose_complete()
and self._is_submitter_complete() # NOTE: This flag leaves submitter as empty (request wont submit) hence preset to True
and (self._is_submitter_complete() if not has_profile_feature_flag else True)
and self._is_other_contacts_complete() and self._is_other_contacts_complete()
and self._is_additional_details_complete() and self._is_additional_details_complete()
and self._is_policy_acknowledgement_complete() and self._is_policy_acknowledgement_complete()
) )
def _form_complete(self): def _form_complete(self, request):
match self.generic_org_type: match self.generic_org_type:
case DomainRequest.OrganizationChoices.FEDERAL: case DomainRequest.OrganizationChoices.FEDERAL:
is_complete = self._is_federal_complete() is_complete = self._is_federal_complete()
@ -1198,8 +1202,6 @@ class DomainRequest(TimeStampedModel):
case _: case _:
# NOTE: Shouldn't happen, this is only if somehow they didn't choose an org type # NOTE: Shouldn't happen, this is only if somehow they didn't choose an org type
is_complete = False is_complete = False
if not is_complete or not self._is_general_form_complete(request):
if not is_complete or not self._is_general_form_complete():
return False return False
return True return True

View file

@ -3,6 +3,8 @@ from django.db.utils import IntegrityError
from unittest.mock import patch from unittest.mock import patch
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.test import RequestFactory
from registrar.models import ( from registrar.models import (
Contact, Contact,
DomainRequest, DomainRequest,
@ -1610,6 +1612,7 @@ class TestDomainInformationCustomSave(TestCase):
class TestDomainRequestIncomplete(TestCase): class TestDomainRequestIncomplete(TestCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.factory = RequestFactory()
username = "test_user" username = "test_user"
first_name = "First" first_name = "First"
last_name = "Last" last_name = "Last"
@ -2013,7 +2016,10 @@ class TestDomainRequestIncomplete(TestCase):
self.assertFalse(self.domain_request._is_policy_acknowledgement_complete()) self.assertFalse(self.domain_request._is_policy_acknowledgement_complete())
def test_form_complete(self): def test_form_complete(self):
self.assertTrue(self.domain_request._form_complete()) request = self.factory.get("/")
request.user = self.user
self.assertTrue(self.domain_request._form_complete(request))
self.domain_request.generic_org_type = None self.domain_request.generic_org_type = None
self.domain_request.save() self.domain_request.save()
self.assertFalse(self.domain_request._form_complete()) self.assertFalse(self.domain_request._form_complete(request))

View file

@ -383,7 +383,7 @@ class DomainRequestWizard(DomainRequestWizardPermissionView, TemplateView):
has_profile_flag = flag_is_active(self.request, "profile_feature") has_profile_flag = flag_is_active(self.request, "profile_feature")
context_stuff = {} context_stuff = {}
if DomainRequest._form_complete(self.domain_request): if DomainRequest._form_complete(self.domain_request, self.request):
modal_button = '<button type="submit" ' 'class="usa-button" ' ">Submit request</button>" modal_button = '<button type="submit" ' 'class="usa-button" ' ">Submit request</button>"
context_stuff = { context_stuff = {
"not_form": False, "not_form": False,
@ -695,7 +695,7 @@ class Review(DomainRequestWizard):
forms = [] # type: ignore forms = [] # type: ignore
def get_context_data(self): def get_context_data(self):
if DomainRequest._form_complete(self.domain_request) is False: if DomainRequest._form_complete(self.domain_request, self.request) is False:
logger.warning("User arrived at review page with an incomplete form.") logger.warning("User arrived at review page with an incomplete form.")
context = super().get_context_data() context = super().get_context_data()
context["Step"] = Step.__members__ context["Step"] = Step.__members__