diff --git a/src/registrar/models/domain_request.py b/src/registrar/models/domain_request.py index 1c4725be1..25b696c2a 100644 --- a/src/registrar/models/domain_request.py +++ b/src/registrar/models/domain_request.py @@ -17,6 +17,8 @@ from .utility.time_stamped_model import TimeStampedModel from ..utility.email import send_templated_email, EmailSendingError from itertools import chain +from waffle.decorators import flag_is_active + logger = logging.getLogger(__name__) @@ -1165,19 +1167,21 @@ class DomainRequest(TimeStampedModel): def _is_policy_acknowledgement_complete(self): 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 ( self._is_organization_name_and_address_complete() and self._is_authorizing_official_complete() and self._is_requested_domain_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_additional_details_complete() and self._is_policy_acknowledgement_complete() ) - def _form_complete(self): + def _form_complete(self, request): match self.generic_org_type: case DomainRequest.OrganizationChoices.FEDERAL: is_complete = self._is_federal_complete() @@ -1198,8 +1202,6 @@ class DomainRequest(TimeStampedModel): case _: # NOTE: Shouldn't happen, this is only if somehow they didn't choose an org type is_complete = False - - if not is_complete or not self._is_general_form_complete(): + if not is_complete or not self._is_general_form_complete(request): return False - return True diff --git a/src/registrar/tests/test_models.py b/src/registrar/tests/test_models.py index 53af1674e..272996147 100644 --- a/src/registrar/tests/test_models.py +++ b/src/registrar/tests/test_models.py @@ -3,6 +3,8 @@ from django.db.utils import IntegrityError from unittest.mock import patch from django.contrib.auth import get_user_model +from django.test import RequestFactory + from registrar.models import ( Contact, DomainRequest, @@ -1610,6 +1612,7 @@ class TestDomainInformationCustomSave(TestCase): class TestDomainRequestIncomplete(TestCase): def setUp(self): super().setUp() + self.factory = RequestFactory() username = "test_user" first_name = "First" last_name = "Last" @@ -2013,7 +2016,10 @@ class TestDomainRequestIncomplete(TestCase): self.assertFalse(self.domain_request._is_policy_acknowledgement_complete()) 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.save() - self.assertFalse(self.domain_request._form_complete()) + self.assertFalse(self.domain_request._form_complete(request)) diff --git a/src/registrar/views/domain_request.py b/src/registrar/views/domain_request.py index 77699e17a..73524dbe3 100644 --- a/src/registrar/views/domain_request.py +++ b/src/registrar/views/domain_request.py @@ -383,7 +383,7 @@ class DomainRequestWizard(DomainRequestWizardPermissionView, TemplateView): has_profile_flag = flag_is_active(self.request, "profile_feature") context_stuff = {} - if DomainRequest._form_complete(self.domain_request): + if DomainRequest._form_complete(self.domain_request, self.request): modal_button = '" context_stuff = { "not_form": False, @@ -695,7 +695,7 @@ class Review(DomainRequestWizard): forms = [] # type: ignore 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.") context = super().get_context_data() context["Step"] = Step.__members__