From cb75ec84c36d385455282e1d27d6c25ee31dc7dc Mon Sep 17 00:00:00 2001 From: matthewswspence Date: Wed, 26 Mar 2025 15:03:12 -0500 Subject: [PATCH] review fixes --- src/registrar/admin.py | 2 - src/registrar/forms/feb.py | 18 ---- ...nrequest_eop_stakeholder_email_and_more.py | 56 ++++++++++ src/registrar/models/domain_request.py | 6 -- .../templates/domain_request_purpose.html | 5 +- .../portfolio_request_review_steps.html | 1 - ...lio_domain_request_additional_details.html | 102 +++++++++--------- src/registrar/tests/test_admin_request.py | 1 - src/registrar/tests/test_views_request.py | 2 - src/registrar/utility/csv_export.py | 1 - src/registrar/views/domain_request.py | 5 + 11 files changed, 112 insertions(+), 87 deletions(-) create mode 100644 src/registrar/migrations/0145_remove_domainrequest_eop_stakeholder_email_and_more.py diff --git a/src/registrar/admin.py b/src/registrar/admin.py index eaa0310fa..4fb0dfb37 100644 --- a/src/registrar/admin.py +++ b/src/registrar/admin.py @@ -2845,7 +2845,6 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportRegistrarModelAdmin): "cisa_representative_email", "eop_stakeholder_first_name", "eop_stakeholder_last_name", - "eop_stakeholder_email", ] }, ), @@ -3079,7 +3078,6 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportRegistrarModelAdmin): "interagency_initiative_details", "eop_stakeholder_first_name", "eop_stakeholder_last_name", - "eop_stakeholder_email", ] ) modified_fieldsets = [] diff --git a/src/registrar/forms/feb.py b/src/registrar/forms/feb.py index fbb11a6ea..97b9b1ef4 100644 --- a/src/registrar/forms/feb.py +++ b/src/registrar/forms/feb.py @@ -153,29 +153,12 @@ class EOPContactForm(BaseDeletableRegistrarForm): error_messages={"required": "Enter the last name / family name of this contact."}, required=True, ) - email = forms.EmailField( - label="Email", - max_length=None, - error_messages={ - "required": ("Enter an email address in the required format, like name@example.com."), - "invalid": ("Enter an email address in the required format, like name@example.com."), - }, - validators=[ - MaxLengthValidator( - 320, - message="Response must be less than 320 characters.", - ) - ], - required=True, - help_text="Enter an email address in the required format, like name@example.com.", - ) @classmethod def from_database(cls, obj): return { "first_name": obj.eop_stakeholder_first_name, "last_name": obj.eop_stakeholder_last_name, - "email": obj.eop_stakeholder_email, } def to_database(self, obj): @@ -189,7 +172,6 @@ class EOPContactForm(BaseDeletableRegistrarForm): return obj.eop_stakeholder_first_name = self.cleaned_data["first_name"] obj.eop_stakeholder_last_name = self.cleaned_data["last_name"] - obj.eop_stakeholder_email = self.cleaned_data["email"] obj.save() diff --git a/src/registrar/migrations/0145_remove_domainrequest_eop_stakeholder_email_and_more.py b/src/registrar/migrations/0145_remove_domainrequest_eop_stakeholder_email_and_more.py new file mode 100644 index 000000000..303ff7698 --- /dev/null +++ b/src/registrar/migrations/0145_remove_domainrequest_eop_stakeholder_email_and_more.py @@ -0,0 +1,56 @@ +# Generated by Django 4.2.20 on 2025-03-26 19:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("registrar", "0144_domainrequest_eop_stakeholder_email_and_more"), + ] + + operations = [ + migrations.RemoveField( + model_name="domainrequest", + name="eop_stakeholder_email", + ), + migrations.AlterField( + model_name="domainrequest", + name="feb_naming_requirements", + field=models.BooleanField(blank=True, null=True, verbose_name="Meets Naming Requirements"), + ), + migrations.AlterField( + model_name="domainrequest", + name="feb_naming_requirements_details", + field=models.TextField( + blank=True, + help_text="Required if requested domain that doesn't meet naming requirements", + null=True, + verbose_name="Domain name rationale", + ), + ), + migrations.AlterField( + model_name="domainrequest", + name="feb_purpose_choice", + field=models.CharField( + blank=True, + choices=[ + ("new", "Used for a new website"), + ("redirect", "Used as a redirect for an existing website"), + ("other", "Not for a website"), + ], + null=True, + verbose_name="Purpose type", + ), + ), + migrations.AlterField( + model_name="domainrequest", + name="interagency_initiative_details", + field=models.TextField(blank=True, null=True, verbose_name="Interagency initiative"), + ), + migrations.AlterField( + model_name="domainrequest", + name="time_frame_details", + field=models.TextField(blank=True, null=True, verbose_name="Target time frame"), + ), + ] diff --git a/src/registrar/models/domain_request.py b/src/registrar/models/domain_request.py index 415c7f30b..11cc53a7f 100644 --- a/src/registrar/models/domain_request.py +++ b/src/registrar/models/domain_request.py @@ -549,12 +549,6 @@ class DomainRequest(TimeStampedModel): verbose_name="EOP Stakeholder Last Name", ) - eop_stakeholder_email = models.EmailField( - null=True, - blank=True, - verbose_name="EOP Stakeholder Email", - ) - # This field is alternately used for generic domain purpose explanations # and for explanations of the specific purpose chosen with feb_purpose_choice purpose = models.TextField( diff --git a/src/registrar/templates/domain_request_purpose.html b/src/registrar/templates/domain_request_purpose.html index 9c6754f22..3893e51ec 100644 --- a/src/registrar/templates/domain_request_purpose.html +++ b/src/registrar/templates/domain_request_purpose.html @@ -34,7 +34,6 @@ {% with add_label_class="usa-sr-only" attr_required="required" attr_maxlength="2000" %} {% input_with_errors forms.1.purpose %} {% endwith %} -

Maximum 2000 characters allowed.

Do you have a target time frame for launching this domain?

@@ -52,7 +51,6 @@ {% with add_label_class="usa-sr-only" attr_required="required" attr_maxlength="2000" %} {% input_with_errors forms.3.time_frame_details %} {% endwith %} -

Maximum 2000 characters allowed.

Will the domain name be used for an interagency initiative?

@@ -65,12 +63,11 @@

- Provide details below. * + Name the agencies that will be involved in this initiative. *

{% with add_label_class="usa-sr-only" attr_required="required" attr_maxlength="2000" %} {% input_with_errors forms.5.interagency_initiative_details %} {% endwith %} -

Maximum 2000 characters allowed.

{% else %} diff --git a/src/registrar/templates/includes/portfolio_request_review_steps.html b/src/registrar/templates/includes/portfolio_request_review_steps.html index 43f214a4b..0855931b3 100644 --- a/src/registrar/templates/includes/portfolio_request_review_steps.html +++ b/src/registrar/templates/includes/portfolio_request_review_steps.html @@ -111,7 +111,6 @@

Incomplete

{% elif domain_request.working_with_eop %}

{{domain_request.eop_stakeholder_first_name}} {{domain_request.eop_stakeholder_last_name}}

-

{{domain_request.eop_stakeholder_email}}

{% else %}

No

{% endif %} diff --git a/src/registrar/templates/portfolio_domain_request_additional_details.html b/src/registrar/templates/portfolio_domain_request_additional_details.html index 98b33bf7f..84bf9ec83 100644 --- a/src/registrar/templates/portfolio_domain_request_additional_details.html +++ b/src/registrar/templates/portfolio_domain_request_additional_details.html @@ -6,60 +6,58 @@ {% endblock %} {% block form_fields %} - {% if requires_feb_questions %} + {% if requires_feb_questions %} +
+ {{forms.0.management_form}} + {{forms.1.management_form}} {{forms.2.management_form}} {{forms.3.management_form}} - {{forms.4.management_form}} - {{forms.5.management_form}} -
-

Are you working with someone in the Executive Office of the President (EOP) on this request?

- -

- Select one. * -

- {% with add_class="usa-radio__input--tile" add_legend_class="usa-sr-only" %} - {% input_with_errors forms.0.working_with_eop %} - {% endwith %} +

Are you working with someone in the Executive Office of the President (EOP) on this request?

+

+ Select one. * +

+ {% with add_class="usa-radio__input--tile" add_legend_class="usa-sr-only" %} + {% input_with_errors forms.0.working_with_eop %} + {% endwith %} - - -

Is there anything else you'd like us to know about your domain request?

-

- Select one. * -

- {% with add_class="usa-radio__input--tile" add_legend_class="usa-sr-only" %} - {% input_with_errors forms.2.has_anything_else_text %} - {% endwith %} - - -
- {% else %} -
-

Is there anything else you’d like us to know about your domain request?

- -
- -
-

This question is optional.

- {% with attr_maxlength=2000 add_label_class="usa-sr-only" %} - {% input_with_errors forms.3.anything_else %} - {% endwith %} + - {% endif %} + +

Is there anything else you'd like us to know about your domain request?

+

+ Select one. * +

+ {% with add_class="usa-radio__input--tile" add_legend_class="usa-sr-only" %} + {% input_with_errors forms.2.has_anything_else_text %} + {% endwith %} + + +
+ {% else %} +
+

Is there anything else you’d like us to know about your domain request?

+ +
+ +
+

This question is optional.

+ {% with attr_maxlength=2000 add_label_class="usa-sr-only" %} + {% input_with_errors forms.3.anything_else %} + {% endwith %} +
+ {% endif %} {% endblock %} diff --git a/src/registrar/tests/test_admin_request.py b/src/registrar/tests/test_admin_request.py index e6ad2ef3e..3e4f88c05 100644 --- a/src/registrar/tests/test_admin_request.py +++ b/src/registrar/tests/test_admin_request.py @@ -2063,7 +2063,6 @@ class TestDomainRequestAdmin(MockEppLib): "working_with_eop", "eop_stakeholder_first_name", "eop_stakeholder_last_name", - "eop_stakeholder_email", "purpose", "has_timeframe", "time_frame_details", diff --git a/src/registrar/tests/test_views_request.py b/src/registrar/tests/test_views_request.py index 914bb210d..da021491d 100644 --- a/src/registrar/tests/test_views_request.py +++ b/src/registrar/tests/test_views_request.py @@ -2648,7 +2648,6 @@ class DomainRequestTests(TestWithUser, WebTest): additional_details_form["portfolio_additional_details-working_with_eop"] = "True" additional_details_form["portfolio_additional_details-first_name"] = "TesterFirstName" additional_details_form["portfolio_additional_details-last_name"] = "TesterLastName" - additional_details_form["portfolio_additional_details-email"] = "testy@town.com" additional_details_form["portfolio_additional_details-has_anything_else_text"] = "True" additional_details_form["portfolio_additional_details-anything_else"] = "test" self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id) @@ -2761,7 +2760,6 @@ class DomainRequestTests(TestWithUser, WebTest): # EOP Stakeholder self.assertContains(review_page, "EOP Stakeholder") self.assertContains(review_page, "TesterFirstName TesterLastName") - self.assertContains(review_page, "testy@town.com") @less_console_noise_decorator def test_domain_request_formsets(self): diff --git a/src/registrar/utility/csv_export.py b/src/registrar/utility/csv_export.py index 6d6a7325d..610fc5c4f 100644 --- a/src/registrar/utility/csv_export.py +++ b/src/registrar/utility/csv_export.py @@ -1898,7 +1898,6 @@ class DomainRequestExport(BaseExport): "Target time frame": model.get("time_frame_details", None), "Interagency initiative": model.get("interagency_initiative_details", None), "EOP stakeholder name": eop_stakeholder_name, - "EOP stakeholder email": model.get("eop_stakeholder_email", None), } row = [FIELDS.get(column, "") for column in columns] diff --git a/src/registrar/views/domain_request.py b/src/registrar/views/domain_request.py index 4b5abf598..2e7ece60b 100644 --- a/src/registrar/views/domain_request.py +++ b/src/registrar/views/domain_request.py @@ -625,6 +625,11 @@ class PortfolioAdditionalDetails(DomainRequestWizard): 2: FEBAnythingElseYesNoForm 3: PortfolioAnythingElseForm """ + if not self.requires_feb_questions(): + for i in range(3): + forms[i].mark_form_for_deletion() + # If FEB questions aren't required, validate only the anything else form + return forms[3].is_valid() eop_forms_valid = True if not forms[0].is_valid(): # If the user isn't working with EOP, don't validate the EOP contact form