Form for application team member table.
Nested form for each member, with child forms for environment roles and permissions.
This commit is contained in:
parent
b0600a34db
commit
926f89d975
51
atst/forms/team.py
Normal file
51
atst/forms/team.py
Normal file
@ -0,0 +1,51 @@
|
||||
from flask_wtf import FlaskForm
|
||||
from wtforms.fields import FormField, FieldList, HiddenField
|
||||
|
||||
from .application_member import EnvironmentForm
|
||||
from .forms import BaseForm
|
||||
from atst.forms.fields import SelectField
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
from atst.utils.localization import translate
|
||||
|
||||
|
||||
class PermissionsForm(FlaskForm):
|
||||
perms_env_mgmt = SelectField(
|
||||
translate("portfolios.applications.members.new.manage_envs"),
|
||||
choices=[
|
||||
(None, "View only"),
|
||||
(PermissionSets.EDIT_APPLICATION_ENVIRONMENTS, "Edit access"),
|
||||
],
|
||||
filters=[BaseForm.remove_empty_string],
|
||||
)
|
||||
perms_team_mgmt = SelectField(
|
||||
translate("portfolios.applications.members.new.manage_team"),
|
||||
choices=[
|
||||
(None, "View only"),
|
||||
(PermissionSets.EDIT_APPLICATION_TEAM, "Edit access"),
|
||||
],
|
||||
filters=[BaseForm.remove_empty_string],
|
||||
)
|
||||
perms_del_env = SelectField(
|
||||
choices=[(None, "No"), (PermissionSets.DELETE_APPLICATION_ENVIRONMENTS, "Yes")],
|
||||
filters=[BaseForm.remove_empty_string],
|
||||
)
|
||||
|
||||
@property
|
||||
def data(self):
|
||||
_data = super().data
|
||||
permission_sets = []
|
||||
for field in _data:
|
||||
if _data[field] is not None:
|
||||
permission_sets.append(_data[field])
|
||||
|
||||
return permission_sets
|
||||
|
||||
|
||||
class MemberForm(FlaskForm):
|
||||
user_id = HiddenField()
|
||||
environment_roles = FieldList(FormField(EnvironmentForm))
|
||||
permission_sets = FormField(PermissionsForm)
|
||||
|
||||
|
||||
class TeamForm(BaseForm):
|
||||
members = FieldList(FormField(MemberForm))
|
0
tests/forms/__init__.py
Normal file
0
tests/forms/__init__.py
Normal file
26
tests/forms/test_team.py
Normal file
26
tests/forms/test_team.py
Normal file
@ -0,0 +1,26 @@
|
||||
from wtforms.validators import ValidationError
|
||||
import pytest
|
||||
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
from atst.forms.team import *
|
||||
|
||||
|
||||
def test_permissions_form_permission_sets():
|
||||
form_data = {
|
||||
"perms_env_mgmt": "",
|
||||
"perms_team_mgmt": PermissionSets.EDIT_APPLICATION_TEAM,
|
||||
"perms_del_env": "",
|
||||
}
|
||||
form = PermissionsForm(data=form_data)
|
||||
assert form.validate()
|
||||
assert form.data == [PermissionSets.EDIT_APPLICATION_TEAM]
|
||||
|
||||
|
||||
def test_permissions_form_invalid():
|
||||
form_data = {
|
||||
"perms_env_mgmt": "not a real choice",
|
||||
"perms_team_mgmt": PermissionSets.EDIT_APPLICATION_TEAM,
|
||||
"perms_del_env": "",
|
||||
}
|
||||
form = PermissionsForm(data=form_data)
|
||||
assert not form.validate()
|
0
tests/routes/applications/__init__.py
Normal file
0
tests/routes/applications/__init__.py
Normal file
Loading…
x
Reference in New Issue
Block a user