From d60b798af01f45a30e47a73e13984f53b00b94d8 Mon Sep 17 00:00:00 2001 From: dandds Date: Tue, 16 Oct 2018 16:32:49 -0400 Subject: [PATCH] fix optional and required validations in user forms --- atst/forms/edit_user.py | 40 +++++++++++++++++++++++++++------------ atst/forms/new_request.py | 34 ++++++++++----------------------- 2 files changed, 38 insertions(+), 36 deletions(-) diff --git a/atst/forms/edit_user.py b/atst/forms/edit_user.py index 017a9bbc..a1b3763c 100644 --- a/atst/forms/edit_user.py +++ b/atst/forms/edit_user.py @@ -1,7 +1,8 @@ import pendulum +from copy import deepcopy from wtforms.fields.html5 import DateField, EmailField, TelField from wtforms.fields import RadioField, StringField -from wtforms.validators import Email, Required +from wtforms.validators import Email, Required, Optional from .fields import SelectField from .forms import ValidatedForm @@ -10,12 +11,12 @@ from .data import SERVICE_BRANCHES from .validators import Alphabet, DateRange, PhoneNumber USER_FIELDS = { - "first_name": StringField("First Name", validators=[Required(), Alphabet()]), - "last_name": StringField("Last Name", validators=[Required(), Alphabet()]), + "first_name": StringField("First Name", validators=[Alphabet()]), + "last_name": StringField("Last Name", validators=[Alphabet()]), "email": EmailField( "E-mail Address", description="Enter your preferred contact e-mail address", - validators=[Required(), Email()], + validators=[Email()], ), "phone_number": TelField( "Phone Number", @@ -59,12 +60,27 @@ USER_FIELDS = { } +def inherit_field(unbound_field, required=True): + kwargs = deepcopy(unbound_field.kwargs) + if not "validators" in kwargs: + kwargs["validators"] = [] + + if required: + kwargs["validators"].append(Required()) + else: + kwargs["validators"].append(Optional()) + + return unbound_field.field_class(*unbound_field.args, **kwargs) + + class EditUserForm(ValidatedForm): - first_name = USER_FIELDS["first_name"] - last_name = USER_FIELDS["last_name"] - email = USER_FIELDS["email"] - phone_number = USER_FIELDS["phone_number"] - service_branch = USER_FIELDS["service_branch"] - citizenship = USER_FIELDS["citizenship"] - designation = USER_FIELDS["designation"] - date_latest_training = USER_FIELDS["date_latest_training"] + first_name = inherit_field(USER_FIELDS["first_name"]) + last_name = inherit_field(USER_FIELDS["last_name"]) + email = inherit_field(USER_FIELDS["email"]) + phone_number = inherit_field(USER_FIELDS["phone_number"], required=False) + service_branch = inherit_field(USER_FIELDS["service_branch"], required=False) + citizenship = inherit_field(USER_FIELDS["citizenship"], required=False) + designation = inherit_field(USER_FIELDS["designation"], required=False) + date_latest_training = inherit_field( + USER_FIELDS["date_latest_training"], required=False + ) diff --git a/atst/forms/new_request.py b/atst/forms/new_request.py index 92c04d78..8c96ab4a 100644 --- a/atst/forms/new_request.py +++ b/atst/forms/new_request.py @@ -1,18 +1,18 @@ import pendulum -from wtforms.fields.html5 import DateField, EmailField, IntegerField, TelField +from wtforms.fields.html5 import DateField, EmailField, IntegerField from wtforms.fields import BooleanField, RadioField, StringField, TextAreaField from wtforms.validators import Email, Length, Optional, InputRequired, DataRequired from .fields import SelectField from .forms import ValidatedForm -from .edit_user import USER_FIELDS +from .edit_user import USER_FIELDS, inherit_field from .data import ( SERVICE_BRANCHES, ASSISTANCE_ORG_TYPES, DATA_TRANSFER_AMOUNTS, COMPLETION_DATE_RANGES, ) -from .validators import Alphabet, DateRange, PhoneNumber, IsNumber +from .validators import DateRange, IsNumber from atst.domain.requests import Requests @@ -162,36 +162,22 @@ class DetailsOfUseForm(ValidatedForm): ) -def inherit_field(unbound_field, append_validators=[]): - if "validators" in unbound_field.kwargs: - unbound_field.kwargs["validators"] += append_validators - return unbound_field.field_class(*unbound_field.args, **unbound_field.kwargs) - - class InformationAboutYouForm(ValidatedForm): - fname_request = USER_FIELDS["first_name"] + fname_request = inherit_field(USER_FIELDS["first_name"]) - lname_request = USER_FIELDS["last_name"] + lname_request = inherit_field(USER_FIELDS["last_name"]) email_request = EmailField("E-mail Address", validators=[InputRequired(), Email()]) - phone_number = inherit_field( - USER_FIELDS["phone_number"], append_validators=[InputRequired()] - ) + phone_number = inherit_field(USER_FIELDS["phone_number"]) - service_branch = USER_FIELDS["service_branch"] + service_branch = inherit_field(USER_FIELDS["service_branch"]) - citizenship = inherit_field( - USER_FIELDS["citizenship"], append_validators=[InputRequired()] - ) + citizenship = inherit_field(USER_FIELDS["citizenship"]) - designation = inherit_field( - USER_FIELDS["designation"], append_validators=[InputRequired()] - ) + designation = inherit_field(USER_FIELDS["designation"]) - date_latest_training = inherit_field( - USER_FIELDS["date_latest_training"], append_validators=[InputRequired()] - ) + date_latest_training = inherit_field(USER_FIELDS["date_latest_training"]) class WorkspaceOwnerForm(ValidatedForm):