fix optional and required validations in user forms

This commit is contained in:
dandds 2018-10-16 16:32:49 -04:00
parent a7ef93dad4
commit d60b798af0
2 changed files with 38 additions and 36 deletions

View File

@ -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
)

View File

@ -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):