diff --git a/atst/forms/officers.py b/atst/forms/officers.py index 4df1f5a7..1bbb14e3 100644 --- a/atst/forms/officers.py +++ b/atst/forms/officers.py @@ -1,7 +1,7 @@ from flask_wtf import FlaskForm from wtforms.fields import StringField from wtforms.fields.html5 import TelField -from wtforms.validators import Length, Optional +from wtforms.validators import Email, Length, Optional from atst.forms.validators import IsNumber, PhoneNumber @@ -12,7 +12,7 @@ from .fields import FormFieldWrapper class OfficerForm(FlaskForm): first_name = StringField("First Name") last_name = StringField("Last Name") - email = StringField("Email") + email = StringField("Email", validators=[Optional(), Email()]) phone_number = TelField("Phone Number", validators=[PhoneNumber()]) dod_id = StringField("DoD ID", validators=[Optional(), Length(min=10), IsNumber()]) diff --git a/templates/portfolios/task_orders/invitations.html b/templates/portfolios/task_orders/invitations.html index 3abc03e7..61d2ddd4 100644 --- a/templates/portfolios/task_orders/invitations.html +++ b/templates/portfolios/task_orders/invitations.html @@ -28,7 +28,7 @@
- {{ TextInput(form.email, placeholder='name@mail.mil') }} + {{ TextInput(form.email, placeholder='name@mail.mil', validation='email') }}
diff --git a/tests/forms/test_officers.py b/tests/forms/test_officers.py index ce6ca1eb..01d94be0 100644 --- a/tests/forms/test_officers.py +++ b/tests/forms/test_officers.py @@ -54,3 +54,10 @@ class TestEditTaskOrderOfficersForm: form.populate_obj(task_order) assert task_order.so_first_name == data["security_officer-first_name"] assert task_order.so_last_name == data["security_officer-last_name"] + + def test_email_validation(self): + data = {"contracting_officer-email": "not_really_an_email_address"} + formdata = ImmutableMultiDict(data) + form = EditTaskOrderOfficersForm(formdata) + assert not form.validate() + assert form.contracting_officer.email.errors == ["Invalid email address."]