diff --git a/atst/forms/org.py b/atst/forms/org.py index 1c5d0ff7..9a6c0a29 100644 --- a/atst/forms/org.py +++ b/atst/forms/org.py @@ -1,10 +1,10 @@ from wtforms.fields.html5 import EmailField, TelField from wtforms.fields import RadioField, StringField -from wtforms.validators import Required, Length, Email +from wtforms.validators import Required, Email from wtforms_tornado import Form import pendulum from .fields import DateField -from .validators import DateRange +from .validators import DateRange, PhoneNumber class OrgForm(Form): @@ -12,9 +12,8 @@ class OrgForm(Form): lname_request = StringField("Last Name", validators=[Required()]) email_request = EmailField("Email Address", validators=[Required(), Email()]) - ) - phone_number = TelField("Phone Number", validators=[Required(), Length(min=7)]) + phone_number = TelField("Phone Number", validators=[Required(), PhoneNumber()]) service_branch = StringField("Service Branch or Agency", validators=[Required()]) diff --git a/atst/forms/validators.py b/atst/forms/validators.py index a7a047de..bb9a08c3 100644 --- a/atst/forms/validators.py +++ b/atst/forms/validators.py @@ -1,3 +1,4 @@ +import re from wtforms.validators import ValidationError import pendulum @@ -27,3 +28,16 @@ def IsNumber(message="Please enter a valid number."): raise ValidationError(message) return _is_number + + +def PhoneNumber(message="Please enter a valid 5 or 10 digit phone number."): + def _is_phone_number(form, field): + digits = re.sub(r"\D", "", field.data) + if len(digits) not in [5, 10]: + raise ValidationError(message) + + match = re.match(r"[\d\-\(\) ]+", field.data) + if not match or match.group() != field.data: + raise ValidationError(message) + + return _is_phone_number diff --git a/templates/requests/screen-2.html.to b/templates/requests/screen-2.html.to index 30f789bc..984d6a15 100644 --- a/templates/requests/screen-2.html.to +++ b/templates/requests/screen-2.html.to @@ -61,13 +61,15 @@ {% end %} -{{ f.designation.label }} -{{ f.designation }} +
{{ f.date_latest_training.label }} {{ f.date_latest_training }}