diff --git a/atst/forms/member.py b/atst/forms/member.py new file mode 100644 index 00000000..aca653e5 --- /dev/null +++ b/atst/forms/member.py @@ -0,0 +1,27 @@ +from flask_wtf import FlaskForm +from wtforms.fields.html5 import EmailField, TelField +from wtforms.validators import Required, Email, Length, Optional +from wtforms.fields import StringField + +from atst.forms.validators import IsNumber, PhoneNumber +from atst.utils.localization import translate + + +class NewForm(FlaskForm): + first_name = StringField( + label=translate("forms.new_member.first_name_label"), validators=[Required()] + ) + last_name = StringField( + label=translate("forms.new_member.last_name_label"), validators=[Required()] + ) + email = EmailField( + translate("forms.new_member.email_label"), validators=[Required(), Email()] + ) + phone_number = TelField( + translate("forms.new_member.phone_number_label"), + validators=[Optional(), PhoneNumber()], + ) + dod_id = StringField( + translate("forms.new_member.dod_id_label"), + validators=[Required(), Length(min=10), IsNumber()], + ) diff --git a/atst/forms/portfolio_member.py b/atst/forms/portfolio_member.py index 2e76efdd..2a59848f 100644 --- a/atst/forms/portfolio_member.py +++ b/atst/forms/portfolio_member.py @@ -1,10 +1,9 @@ -from wtforms.fields.html5 import EmailField, TelField -from wtforms.validators import Required, Email, Length, Optional +from wtforms.validators import Required from wtforms.fields import StringField, FormField, FieldList, HiddenField from atst.domain.permission_sets import PermissionSets from .forms import BaseForm -from atst.forms.validators import IsNumber, PhoneNumber +from .member import NewForm as BaseNewMemberForm from atst.forms.fields import SelectField from atst.utils.localization import translate @@ -62,24 +61,16 @@ class EditForm(PermissionsForm): pass -class NewForm(PermissionsForm): - first_name = StringField( - label=translate("forms.new_member.first_name_label"), validators=[Required()] - ) - last_name = StringField( - label=translate("forms.new_member.last_name_label"), validators=[Required()] - ) - email = EmailField( - translate("forms.new_member.email_label"), validators=[Required(), Email()] - ) - phone_number = TelField( - translate("forms.new_member.phone_number_label"), - validators=[Optional(), PhoneNumber()], - ) - dod_id = StringField( - translate("forms.new_member.dod_id_label"), - validators=[Required(), Length(min=10), IsNumber()], - ) +class NewForm(BaseForm): + user_data = FormField(BaseNewMemberForm) + permission_sets = FormField(PermissionsForm) + + @property + def update_data(self): + return { + "permission_sets": self.data.get("permission_sets").get("permission_sets"), + **self.data.get("user_data"), + } class AssignPPOCForm(PermissionsForm): diff --git a/atst/routes/portfolios/members.py b/atst/routes/portfolios/members.py index 573781b8..f25f0918 100644 --- a/atst/routes/portfolios/members.py +++ b/atst/routes/portfolios/members.py @@ -34,9 +34,9 @@ def create_member(portfolio_id): if form.validate(): try: - member = Portfolios.create_member(portfolio, form.data) + member = Portfolios.create_member(portfolio, form.update_data) invite_service = InvitationService( - g.current_user, member, form.data.get("email") + g.current_user, member, form.update_data.get("email") ) invite_service.invite() diff --git a/templates/fragments/admin/add_new_portfolio_member.html b/templates/fragments/admin/add_new_portfolio_member.html index a8c91a7a..2fd166e9 100644 --- a/templates/fragments/admin/add_new_portfolio_member.html +++ b/templates/fragments/admin/add_new_portfolio_member.html @@ -21,23 +21,23 @@