From dab5fe83fc5f6b76b1dc181029b5a143fbba2e0a Mon Sep 17 00:00:00 2001 From: dandds Date: Tue, 16 Oct 2018 15:14:23 -0400 Subject: [PATCH] create dictionary of base user form fields --- atst/forms/edit_user.py | 51 +++++++++++++++++--------------- atst/forms/new_request.py | 62 +++++++++++++-------------------------- 2 files changed, 47 insertions(+), 66 deletions(-) diff --git a/atst/forms/edit_user.py b/atst/forms/edit_user.py index 8b527c3f..017a9bbc 100644 --- a/atst/forms/edit_user.py +++ b/atst/forms/edit_user.py @@ -9,41 +9,33 @@ from .data import SERVICE_BRANCHES from .validators import Alphabet, DateRange, PhoneNumber - -class EditUserForm(ValidatedForm): - - first_name = StringField("First Name", validators=[Required(), Alphabet()]) - - last_name = StringField("Last Name", validators=[Required(), Alphabet()]) - - email = EmailField( +USER_FIELDS = { + "first_name": StringField("First Name", validators=[Required(), Alphabet()]), + "last_name": StringField("Last Name", validators=[Required(), Alphabet()]), + "email": EmailField( "E-mail Address", description="Enter your preferred contact e-mail address", validators=[Required(), Email()], - ) - - phone_number = TelField( + ), + "phone_number": TelField( "Phone Number", description="Enter your 10-digit U.S. phone number", validators=[PhoneNumber()], - ) - - service_branch = SelectField( + ), + "service_branch": SelectField( "Service Branch or Agency", description="Which service or organization do you belong to within the DoD?", choices=SERVICE_BRANCHES, - ) - - citizenship = RadioField( + ), + "citizenship": RadioField( description="What is your citizenship status?", choices=[ ("United States", "United States"), ("Foreign National", "Foreign National"), ("Other", "Other"), ], - ) - - designation = RadioField( + ), + "designation": RadioField( "Designation of Person", description="What is your designation within the DoD?", choices=[ @@ -51,9 +43,8 @@ class EditUserForm(ValidatedForm): ("civilian", "Civilian"), ("contractor", "Contractor"), ], - ) - - date_latest_training = DateField( + ), + "date_latest_training": DateField( "Latest Information Assurance (IA) Training Completion Date", description='To complete the training, you can find it in Information Assurance Cyber Awareness Challange website.', validators=[ @@ -64,4 +55,16 @@ class EditUserForm(ValidatedForm): ) ], format="%m/%d/%Y", - ) + ), +} + + +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"] diff --git a/atst/forms/new_request.py b/atst/forms/new_request.py index 08d2fee4..92c04d78 100644 --- a/atst/forms/new_request.py +++ b/atst/forms/new_request.py @@ -5,6 +5,7 @@ from wtforms.validators import Email, Length, Optional, InputRequired, DataRequi from .fields import SelectField from .forms import ValidatedForm +from .edit_user import USER_FIELDS from .data import ( SERVICE_BRANCHES, ASSISTANCE_ORG_TYPES, @@ -161,58 +162,35 @@ class DetailsOfUseForm(ValidatedForm): ) -class InformationAboutYouForm(ValidatedForm): - fname_request = StringField("First Name", validators=[InputRequired(), Alphabet()]) +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) - lname_request = StringField("Last Name", validators=[InputRequired(), Alphabet()]) + +class InformationAboutYouForm(ValidatedForm): + fname_request = USER_FIELDS["first_name"] + + lname_request = USER_FIELDS["last_name"] email_request = EmailField("E-mail Address", validators=[InputRequired(), Email()]) - phone_number = TelField( - "Phone Number", - description="Enter a 10-digit phone number", - validators=[InputRequired(), PhoneNumber()], + phone_number = inherit_field( + USER_FIELDS["phone_number"], append_validators=[InputRequired()] ) - service_branch = SelectField( - "Service Branch or Agency", - description="Which service or organization do you belong to within the DoD?", - choices=SERVICE_BRANCHES, + service_branch = USER_FIELDS["service_branch"] + + citizenship = inherit_field( + USER_FIELDS["citizenship"], append_validators=[InputRequired()] ) - citizenship = RadioField( - description="What is your citizenship status?", - choices=[ - ("United States", "United States"), - ("Foreign National", "Foreign National"), - ("Other", "Other"), - ], - validators=[InputRequired()], + designation = inherit_field( + USER_FIELDS["designation"], append_validators=[InputRequired()] ) - designation = RadioField( - "Designation of Person", - description="What is your designation within the DoD?", - choices=[ - ("military", "Military"), - ("civilian", "Civilian"), - ("contractor", "Contractor"), - ], - validators=[InputRequired()], - ) - - date_latest_training = DateField( - "Latest Information Assurance (IA) Training Completion Date", - description='To complete the training, you can find it in Information Assurance Cyber Awareness Challange website.', - validators=[ - InputRequired(), - DateRange( - lower_bound=pendulum.duration(years=1), - upper_bound=pendulum.duration(days=0), - message="Must be a date within the last year.", - ), - ], - format="%m/%d/%Y", + date_latest_training = inherit_field( + USER_FIELDS["date_latest_training"], append_validators=[InputRequired()] )