From 1fd2d9f49604b67e1cc2ccd77f4259cfabbe683f Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Wed, 11 Sep 2019 13:36:44 -0400 Subject: [PATCH] Make form class for updating application member --- atst/forms/application_member.py | 40 ++++++++++++++++++++++++++ tests/forms/test_application_member.py | 19 ++++++++++++ 2 files changed, 59 insertions(+) diff --git a/atst/forms/application_member.py b/atst/forms/application_member.py index 1eaa4e06..d9f3906f 100644 --- a/atst/forms/application_member.py +++ b/atst/forms/application_member.py @@ -71,3 +71,43 @@ class NewForm(BaseForm): user_data = FormField(BaseNewMemberForm) permission_sets = FormField(PermissionsForm) environment_roles = FieldList(FormField(EnvironmentForm)) + + +class UpdatePermissionsForm(FlaskForm): + perms_team_mgmt = SelectField( + translate("portfolios.applications.members.new.manage_team"), + choices=[ + (PermissionSets.VIEW_APPLICATION, "View"), + (PermissionSets.EDIT_APPLICATION_TEAM, "Edit"), + ], + ) + perms_env_mgmt = SelectField( + translate("portfolios.applications.members.new.manage_envs"), + choices=[ + (PermissionSets.VIEW_APPLICATION, "View"), + (PermissionSets.EDIT_APPLICATION_ENVIRONMENTS, "Edit"), + ], + ) + perms_del_env = SelectField( + choices=[ + (PermissionSets.VIEW_APPLICATION, "No"), + (PermissionSets.DELETE_APPLICATION_ENVIRONMENTS, "Yes"), + ] + ) + + @property + def data(self): + _data = super().data + _data.pop("csrf_token", None) + permission_sets = [] + for field in _data: + if _data[field] is not None: + permission_sets.append(_data[field]) + + return permission_sets + + +class UpdateMemberForm(BaseForm): + member_role_id = HiddenField() + permission_sets = FormField(UpdatePermissionsForm) + environment_roles = FieldList(FormField(EnvironmentForm)) diff --git a/tests/forms/test_application_member.py b/tests/forms/test_application_member.py index 8494db48..70d90cef 100644 --- a/tests/forms/test_application_member.py +++ b/tests/forms/test_application_member.py @@ -1,5 +1,6 @@ from wtforms.validators import ValidationError +from atst.domain.permission_sets import PermissionSets from atst.forms.data import ENV_ROLES, ENV_ROLE_NO_ACCESS as NO_ACCESS from atst.forms.application_member import * @@ -34,3 +35,21 @@ def test_environment_form_invalid(): } form = EnvironmentForm(data=form_data) assert not form.validate() + + +def test_update_member_form(): + form_data = { + "member_role_id": 123, + "permission_sets": { + "perms_team_mgmt": PermissionSets.EDIT_APPLICATION_TEAM, + "perms_env_mgmt": PermissionSets.VIEW_APPLICATION, + "perms_del_env": PermissionSets.VIEW_APPLICATION, + }, + "environment_roles": { + "environment_id": 123, + "environment_name": "testing", + "role": ENV_ROLES[0][0], + }, + } + form = UpdateMemberForm(data=form_data) + assert form.validate()