Keep list of required fields on user model

This commit is contained in:
Patrick Smith 2018-10-29 13:52:47 -04:00
parent 2e89f38601
commit 891dcc5b31
4 changed files with 31 additions and 20 deletions

View File

@ -2,14 +2,16 @@ 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, Optional
from wtforms.validators import Email, DataRequired, Optional
from .fields import SelectField
from .forms import ValidatedForm
from .data import SERVICE_BRANCHES
from atst.models.user import User
from .validators import Name, DateRange, PhoneNumber
USER_FIELDS = {
"first_name": StringField("First Name", validators=[Name()]),
"last_name": StringField("Last Name", validators=[Name()]),
@ -66,19 +68,25 @@ def inherit_field(unbound_field, required=True):
kwargs["validators"] = []
if required:
kwargs["validators"].append(Required())
kwargs["validators"].append(DataRequired())
else:
kwargs["validators"].append(Optional())
return unbound_field.field_class(*unbound_field.args, **kwargs)
def inherit_user_field(field_name):
required = field_name in User.REQUIRED_FIELDS
return inherit_field(USER_FIELDS[field_name], required=required)
class EditUserForm(ValidatedForm):
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"])
service_branch = inherit_field(USER_FIELDS["service_branch"])
citizenship = inherit_field(USER_FIELDS["citizenship"])
designation = inherit_field(USER_FIELDS["designation"])
date_latest_training = inherit_field(USER_FIELDS["date_latest_training"])
first_name = inherit_user_field("first_name")
last_name = inherit_user_field("last_name")
email = inherit_user_field("email")
phone_number = inherit_user_field("phone_number")
service_branch = inherit_user_field("service_branch")
citizenship = inherit_user_field("citizenship")
designation = inherit_user_field("designation")
date_latest_training = inherit_user_field("date_latest_training")

View File

@ -164,19 +164,12 @@ class DetailsOfUseForm(ValidatedForm):
class InformationAboutYouForm(ValidatedForm):
fname_request = inherit_field(USER_FIELDS["first_name"])
lname_request = inherit_field(USER_FIELDS["last_name"])
email_request = inherit_field(USER_FIELDS["email"])
phone_number = inherit_field(USER_FIELDS["phone_number"])
service_branch = inherit_field(USER_FIELDS["service_branch"])
citizenship = inherit_field(USER_FIELDS["citizenship"])
designation = inherit_field(USER_FIELDS["designation"])
date_latest_training = inherit_field(USER_FIELDS["date_latest_training"])

View File

@ -26,6 +26,18 @@ class User(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
designation = Column(String)
date_latest_training = Column(Date)
REQUIRED_FIELDS = [
"email",
"dod_id",
"first_name",
"last_name",
"phone_number",
"service_branch",
"citizenship",
"designation",
"date_latest_training",
]
@property
def atat_permissions(self):
return self.atat_role.permissions

View File

@ -13,9 +13,7 @@ def test_edit_user_form_requires_all_fields():
form_data = ImmutableMultiDict(user_data)
form = EditUserForm(form_data)
assert not form.validate()
assert form.errors == {
'date_latest_training': ['This field is required.']
}
assert form.errors == {"date_latest_training": ["This field is required."]}
def test_edit_user_form_valid_with_all_fields():