When editing member perms through the new app form, return to new app form step 3 after update member form is submitted

This commit is contained in:
leigh-mil 2019-11-15 14:49:09 -05:00
parent f40ce3d1aa
commit f9fd9cac13
5 changed files with 39 additions and 28 deletions

View File

@ -11,6 +11,7 @@ from atst.routes.applications.settings import (
get_members_data, get_members_data,
get_new_member_form, get_new_member_form,
handle_create_member, handle_create_member,
handle_update_member,
) )
@ -157,9 +158,11 @@ def view_new_application_step_3(application_id):
@applications_bp.route("/applications/<application_id>/new/step_3", methods=["POST"]) @applications_bp.route("/applications/<application_id>/new/step_3", methods=["POST"])
@user_can(Permissions.CREATE_APPLICATION, message="view create new application form") @user_can(Permissions.CREATE_APPLICATION, message="view create new application form")
def update_new_application_step_3(application_id): def update_new_application_step_3(application_id, application_role_id=None):
if application_role_id:
handle_create_member(application_id, http_request.form) handle_update_member(application_id, application_role_id, http_request.form)
else:
handle_create_member(application_id, http_request.form)
return redirect( return redirect(
url_for( url_for(

View File

@ -210,6 +210,30 @@ def handle_create_member(application_id, form_data):
# TODO: flash error message # TODO: flash error message
def handle_update_member(application_id, application_role_id, form_data):
app_role = ApplicationRoles.get_by_id(application_role_id)
application = Applications.get(application_id)
existing_env_roles_data = filter_env_roles_form_data(
app_role, application.environments
)
form = UpdateMemberForm(
formdata=form_data, environment_roles=existing_env_roles_data
)
if form.validate():
ApplicationRoles.update_permission_sets(app_role, form.data["permission_sets"])
for env_role in form.environment_roles:
environment = Environments.get(env_role.environment_id.data)
new_role = None if env_role.disabled.data else env_role.data["role"]
Environments.update_env_role(environment, app_role, new_role)
flash("application_member_updated", user_name=app_role.user_name)
else:
pass
# TODO: flash error message
@applications_bp.route("/applications/<application_id>/settings") @applications_bp.route("/applications/<application_id>/settings")
@user_can(Permissions.VIEW_APPLICATION, message="view application edit form") @user_can(Permissions.VIEW_APPLICATION, message="view application edit form")
def settings(application_id): def settings(application_id):
@ -382,27 +406,8 @@ def remove_member(application_id, application_role_id):
) )
@user_can(Permissions.EDIT_APPLICATION_MEMBER, message="update application member") @user_can(Permissions.EDIT_APPLICATION_MEMBER, message="update application member")
def update_member(application_id, application_role_id): def update_member(application_id, application_role_id):
app_role = ApplicationRoles.get_by_id(application_role_id)
application = Applications.get(application_id)
existing_env_roles_data = filter_env_roles_form_data(
app_role, application.environments
)
form = UpdateMemberForm(
formdata=http_request.form, environment_roles=existing_env_roles_data
)
if form.validate(): handle_update_member(application_id, application_role_id, http_request.form)
ApplicationRoles.update_permission_sets(app_role, form.data["permission_sets"])
for env_role in form.environment_roles:
environment = Environments.get(env_role.environment_id.data)
new_role = None if env_role.disabled.data else env_role.data["role"]
Environments.update_env_role(environment, app_role, new_role)
flash("application_member_updated", user_name=app_role.user_name)
else:
pass
# TODO: flash error message
return redirect( return redirect(
url_for( url_for(

View File

@ -12,7 +12,8 @@
application, application,
members, members,
new_member_form, new_member_form,
action) %} action_new,
action_update) %}
<h3 id="application-members"> <h3 id="application-members">
{{ 'portfolios.applications.settings.team_members' | translate }} {{ 'portfolios.applications.settings.team_members' | translate }}
@ -40,7 +41,7 @@
<hr> <hr>
</div> </div>
<base-form inline-template> <base-form inline-template>
<form id='{{ modal_name }}' method="POST" action="{{ url_for('applications.update_member', application_id=application.id, application_role_id=member.role_id) }}"> <form id='{{ modal_name }}' method="POST" action="{{ url_for(action_update, application_id=application.id, application_role_id=member.role_id,) }}">
{{ member.form.csrf_token }} {{ member.form.csrf_token }}
{{ member_fields.PermsFields(form=member.form, member_role_id=member.role_id) }} {{ member_fields.PermsFields(form=member.form, member_role_id=member.role_id) }}
<div class="action-group"> <div class="action-group">
@ -181,7 +182,7 @@
{{ MultiStepModalForm( {{ MultiStepModalForm(
name=new_member_modal_name, name=new_member_modal_name,
form=new_member_form, form=new_member_form,
form_action=url_for(action, application_id=application.id), form_action=url_for(action_new, application_id=application.id),
steps=[ steps=[
member_steps.MemberStepOne(new_member_form), member_steps.MemberStepOne(new_member_form),
member_steps.MemberStepTwo(new_member_form, application) member_steps.MemberStepTwo(new_member_form, application)

View File

@ -21,7 +21,8 @@
application, application,
members, members,
new_member_form, new_member_form,
"applications.update_new_application_step_3") }} action_new="applications.update_new_application_step_3",
action_update="applications.update_new_application_step_3") }}
<span class="action-group-footer"> <span class="action-group-footer">

View File

@ -51,7 +51,8 @@
application, application,
members, members,
new_member_form, new_member_form,
"applications.create_member") }} action_new="applications.create_member",
action_update="applications.update_member") }}
{{ EnvironmentManagementTemplate( {{ EnvironmentManagementTemplate(
application, application,