diff --git a/atst/forms/edit_user.py b/atst/forms/edit_user.py index 6bdcc3a5..3c337e0b 100644 --- a/atst/forms/edit_user.py +++ b/atst/forms/edit_user.py @@ -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") diff --git a/atst/forms/new_request.py b/atst/forms/new_request.py index b293e344..c1b3e14d 100644 --- a/atst/forms/new_request.py +++ b/atst/forms/new_request.py @@ -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"]) diff --git a/atst/models/user.py b/atst/models/user.py index bb89c51b..6d1c00ea 100644 --- a/atst/models/user.py +++ b/atst/models/user.py @@ -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 diff --git a/tests/forms/test_edit_user.py b/tests/forms/test_edit_user.py index 9c244757..2522f264 100644 --- a/tests/forms/test_edit_user.py +++ b/tests/forms/test_edit_user.py @@ -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():