Move perms so they are at the top level of the form so that the data is properly populated
Add form fields for all environments in update member form
This commit is contained in:
parent
93530e903f
commit
80dcb9c580
@ -1,3 +1,4 @@
|
||||
from flask_wtf import FlaskForm
|
||||
from wtforms.fields import FormField, FieldList, HiddenField, BooleanField
|
||||
from wtforms import Form
|
||||
|
||||
@ -26,7 +27,7 @@ class EnvironmentForm(Form):
|
||||
return _data
|
||||
|
||||
|
||||
class PermissionsForm(Form):
|
||||
class PermissionsForm(FlaskForm):
|
||||
perms_env_mgmt = BooleanField(
|
||||
translate("portfolios.applications.members.form.env_mgmt.label"),
|
||||
default=False,
|
||||
@ -56,6 +57,12 @@ class NewForm(BaseForm):
|
||||
environment_roles = FieldList(FormField(EnvironmentForm))
|
||||
|
||||
|
||||
class UpdateMemberForm(BaseForm):
|
||||
permission_sets = FormField(PermissionsForm)
|
||||
class UpdateMemberForm(PermissionsForm):
|
||||
# permission_sets = FormField(PermissionsForm)
|
||||
environment_roles = FieldList(FormField(EnvironmentForm))
|
||||
|
||||
@property
|
||||
def data(self):
|
||||
_data = super().data
|
||||
_data.pop("csrf_token", None)
|
||||
return _data
|
||||
|
@ -9,11 +9,8 @@ from atst.domain.audit_log import AuditLog
|
||||
from atst.domain.common import Paginator
|
||||
from atst.domain.environment_roles import EnvironmentRoles
|
||||
from atst.forms.application import ApplicationForm, EditEnvironmentForm
|
||||
from atst.forms.application_member import (
|
||||
NewForm as NewMemberForm,
|
||||
UpdateMemberForm,
|
||||
PermissionsForm,
|
||||
)
|
||||
from atst.forms.application_member import NewForm as NewMemberForm, UpdateMemberForm
|
||||
from atst.forms.data import ENV_ROLE_NO_ACCESS as NO_ACCESS
|
||||
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
||||
from atst.models.permissions import Permissions
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
@ -62,18 +59,29 @@ def get_members_data(application):
|
||||
}
|
||||
for role in roles
|
||||
]
|
||||
form_data = {
|
||||
"environment_roles": environment_roles,
|
||||
"permission_sets": permission_sets,
|
||||
}
|
||||
perms_form = PermissionsForm(data=permission_sets)
|
||||
form = UpdateMemberForm(environment_roles=environment_roles)
|
||||
form.permission_sets = perms_form
|
||||
|
||||
env_roles_form_data = []
|
||||
for env in application.environments:
|
||||
env_data = {
|
||||
"environment_id": str(env.id),
|
||||
"environment_name": env.name,
|
||||
"role": NO_ACCESS,
|
||||
}
|
||||
env_role = EnvironmentRoles.get_by_user_and_environment(
|
||||
member.user_id, env.id
|
||||
)
|
||||
if env_role:
|
||||
env_data["role"] = env_role.role
|
||||
|
||||
env_roles_form_data.append(env_data)
|
||||
|
||||
form = UpdateMemberForm(
|
||||
environment_roles=env_roles_form_data, **permission_sets
|
||||
)
|
||||
members_data.append(
|
||||
{
|
||||
"role_id": member.id,
|
||||
"user_name": member.user_name,
|
||||
# remove these keys and use form
|
||||
"permission_sets": permission_sets,
|
||||
"environment_roles": environment_roles,
|
||||
"role_status": member.status.value,
|
||||
@ -348,7 +356,10 @@ def update_member(application_id, application_role_id):
|
||||
form = UpdateMemberForm(http_request.form)
|
||||
|
||||
if form.validate():
|
||||
new_perm_sets_names = perm_sets_obj_to_list(form.permission_sets.data)
|
||||
perm_sets = {
|
||||
key: value for key, value in form.data.items() if key != "environment_roles"
|
||||
}
|
||||
new_perm_sets_names = perm_sets_obj_to_list(perm_sets)
|
||||
ApplicationRoles.update_permission_sets(app_role, new_perm_sets_names)
|
||||
|
||||
for env_role in form.environment_roles:
|
||||
|
@ -129,9 +129,9 @@
|
||||
{% set team_mgmt = "perms_team_mgmt-{}".format(member.role_id) %}
|
||||
{% set env_mgmt = "perms_env_mgmt-{}".format(member.role_id) %}
|
||||
{% set del_env = "perms_del_env-{}".format(member.role_id) %}
|
||||
{{ CheckboxInput(member.form.permission_sets.perms_team_mgmt, classes="input__inline-fields", key=team_mgmt, id=team_mgmt) }}
|
||||
{{ CheckboxInput(member.form.permission_sets.perms_env_mgmt, classes="input__inline-fields", key=env_mgmt, id=env_mgmt) }}
|
||||
{{ CheckboxInput(member.form.permission_sets.perms_del_env, classes="input__inline-fields", key=del_env, id=del_env) }}
|
||||
{{ CheckboxInput(member.form.perms_team_mgmt, classes="input__inline-fields", key=team_mgmt, id=team_mgmt) }}
|
||||
{{ CheckboxInput(member.form.perms_env_mgmt, classes="input__inline-fields", key=env_mgmt, id=env_mgmt) }}
|
||||
{{ CheckboxInput(member.form.perms_del_env, classes="input__inline-fields", key=del_env, id=del_env) }}
|
||||
</div>
|
||||
<div class="environment-roles-new">
|
||||
<h4>{{ "portfolios.applications.members.form.env_access" | translate }}</h4>
|
||||
|
@ -39,12 +39,9 @@ def test_environment_form_invalid():
|
||||
|
||||
def test_update_member_form():
|
||||
form_data = {
|
||||
"member_role_id": 123,
|
||||
"permission_sets": {
|
||||
"perms_team_mgmt": True,
|
||||
"perms_env_mgmt": False,
|
||||
"perms_del_env": False,
|
||||
},
|
||||
"perms_team_mgmt": True,
|
||||
"perms_env_mgmt": False,
|
||||
"perms_del_env": False,
|
||||
"environment_roles": {
|
||||
"environment_id": 123,
|
||||
"environment_name": "testing",
|
||||
@ -53,3 +50,6 @@ def test_update_member_form():
|
||||
}
|
||||
form = UpdateMemberForm(data=form_data)
|
||||
assert form.validate()
|
||||
assert form.perms_team_mgmt.data
|
||||
assert not form.perms_env_mgmt.data
|
||||
assert not form.perms_del_env.data
|
||||
|
@ -488,9 +488,9 @@ def test_update_member(client, user_session):
|
||||
"environment_roles-2-environment_id": env_2.id,
|
||||
"environment_roles-2-role": CSPRole.NETWORK_ADMIN.value,
|
||||
"environment_roles-2-environment_name": env_2.name,
|
||||
"permission_sets-perms_env_mgmt": True,
|
||||
"permission_sets-perms_team_mgmt": True,
|
||||
"permission_sets-perms_del_env": True,
|
||||
"perms_env_mgmt": True,
|
||||
"perms_team_mgmt": True,
|
||||
"perms_del_env": True,
|
||||
},
|
||||
)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user