Merge branch 'ms/3212-FEB-review' into ms/3457-FEB-emails

This commit is contained in:
matthewswspence 2025-03-18 13:44:26 -05:00
commit b60112872b
No known key found for this signature in database
GPG key ID: FB458202A7852BA4
7 changed files with 64 additions and 55 deletions

View file

@ -147,8 +147,6 @@ class EOPContactForm(BaseDeletableRegistrarForm):
Executive Branch (FEB) agency is working with.
"""
field_name = "eop_contact"
first_name = forms.CharField(
label="First name / given name",
error_messages={"required": "Enter the first name / given name of this contact."},
@ -178,12 +176,10 @@ class EOPContactForm(BaseDeletableRegistrarForm):
@classmethod
def from_database(cls, obj):
if not obj.eop_contact:
return {}
return {
"first_name": obj.eop_contact.first_name,
"last_name": obj.eop_contact.last_name,
"email": obj.eop_contact.email,
"first_name": obj.eop_stakeholder_first_name,
"last_name": obj.eop_stakeholder_last_name,
"email": obj.eop_stakeholder_email,
}
def to_database(self, obj):
@ -195,11 +191,9 @@ class EOPContactForm(BaseDeletableRegistrarForm):
return
if not self.is_valid():
return
obj.eop_contact = Contact.objects.create(
first_name=self.cleaned_data["first_name"],
last_name=self.cleaned_data["last_name"],
email=self.cleaned_data["email"],
)
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()

View file

@ -1,30 +0,0 @@
# Generated by Django 4.2.17 on 2025-03-11 18:10
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("registrar", "0142_domainrequest_feb_naming_requirements_and_more"),
]
operations = [
migrations.AddField(
model_name="domainrequest",
name="eop_contact",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="eop_contact",
to="registrar.contact",
),
),
migrations.AddField(
model_name="domainrequest",
name="working_with_eop",
field=models.BooleanField(blank=True, null=True),
),
]

View file

@ -0,0 +1,33 @@
# Generated by Django 4.2.17 on 2025-03-17 20:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("registrar", "0142_domainrequest_feb_naming_requirements_and_more"),
]
operations = [
migrations.AddField(
model_name="domainrequest",
name="eop_stakeholder_email",
field=models.EmailField(blank=True, max_length=254, null=True, verbose_name="EOP Stakeholder Email"),
),
migrations.AddField(
model_name="domainrequest",
name="eop_stakeholder_first_name",
field=models.CharField(blank=True, null=True, verbose_name="EOP Stakeholder First Name"),
),
migrations.AddField(
model_name="domainrequest",
name="eop_stakeholder_last_name",
field=models.CharField(blank=True, null=True, verbose_name="EOP Stakeholder Last Name"),
),
migrations.AddField(
model_name="domainrequest",
name="working_with_eop",
field=models.BooleanField(blank=True, null=True),
),
]

View file

@ -528,12 +528,22 @@ class DomainRequest(TimeStampedModel):
blank=True,
)
eop_contact = models.ForeignKey(
"registrar.Contact",
eop_stakeholder_first_name = models.CharField(
null=True,
blank=True,
related_name="eop_contact",
on_delete=models.PROTECT,
verbose_name="EOP Stakeholder First Name",
)
eop_stakeholder_last_name = models.CharField(
null=True,
blank=True,
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

View file

@ -90,7 +90,7 @@
{% else %}
<p class="margin-y-0">No</p>
{% endif %}
<h4 class="margin-bottom-0">EOP Stakeholder</h4>
<h4 class="margin-bottom-0">Interagency Initiative</h4>
{% if domain_request.is_interagency_initiative is None %}
<p class="margin-y-0"><span class='text-bold text-secondary-dark'>Incomplete</span></p>
{% elif domain_request.is_interagency_initiative %}
@ -110,8 +110,8 @@
{% if domain_request.working_with_eop is None %}
<p class="margin-y-0"><span class='text-bold text-secondary-dark'>Incomplete</span></p>
{% elif domain_request.working_with_eop %}
<p class="margin-y-0">{{domain_request.eop_contact.first_name}} {{domain_request.eop_contact.last_name}}</p>
<p class="margin-y-0">{{domain_request.eop_contact.email}}</p>
<p class="margin-y-0">{{domain_request.eop_stakeholder_first_name}} {{domain_request.eop_stakeholder_last_name}}</p>
<p class="margin-y-0">{{domain_request.eop_stakeholder_email}}</p>
{% else %}
<p class="margin-y-0">No</p>
{% endif %}

View file

@ -1985,7 +1985,9 @@ class TestDomainRequestAdmin(MockEppLib):
"feb_naming_requirements_details",
"feb_purpose_choice",
"working_with_eop",
"eop_contact",
"eop_stakeholder_first_name",
"eop_stakeholder_last_name",
"eop_stakeholder_email",
"purpose",
"has_timeframe",
"time_frame_details",

View file

@ -2745,21 +2745,21 @@ class DomainRequestTests(TestWithUser, WebTest):
def feb_review_page_tests(self, review_page):
# Meets Naming Requirements
self.assertContains(review_page, "<h4>Meets Naming Requirements</h4>")
self.assertContains(review_page, "Meets Naming Requirements")
self.assertContains(review_page, "No")
self.assertContains(review_page, "Because this is a test")
# Purpose
self.assertContains(review_page, "<h4>Purpose</h4>")
self.assertContains(review_page, "Purpose")
self.assertContains(review_page, "Used as a redirect for an existing website")
self.assertContains(review_page, "testPurpose123")
# Target Time Frame
self.assertContains(review_page, "<h4>Target Time Frame</h4>")
self.assertContains(review_page, "Target Time Frame")
self.assertContains(review_page, "1/2/2025 - 1/2/2026")
# Interagency Initiative
self.assertContains(review_page, "<h4>Interagency Initiative</h4>")
self.assertContains(review_page, "Interagency Initiative")
self.assertContains(review_page, "FakeInteragencyInitiative")
# EOP Stakeholder
self.assertContains(review_page, "<h4>EOP Stakeholder</h4>")
self.assertContains(review_page, "EOP Stakeholder")
self.assertContains(review_page, "TesterFirstName TesterLastName")
self.assertContains(review_page, "testy@town.com")