diff --git a/atst/routes/applications/new.py b/atst/routes/applications/new.py index 8ee53473..41c750aa 100644 --- a/atst/routes/applications/new.py +++ b/atst/routes/applications/new.py @@ -11,6 +11,7 @@ from atst.routes.applications.settings import ( get_members_data, get_new_member_form, handle_create_member, + handle_update_member, ) @@ -157,9 +158,11 @@ def view_new_application_step_3(application_id): @applications_bp.route("/applications//new/step_3", methods=["POST"]) @user_can(Permissions.CREATE_APPLICATION, message="view create new application form") -def update_new_application_step_3(application_id): - - handle_create_member(application_id, http_request.form) +def update_new_application_step_3(application_id, application_role_id=None): + if application_role_id: + handle_update_member(application_id, application_role_id, http_request.form) + else: + handle_create_member(application_id, http_request.form) return redirect( url_for( diff --git a/atst/routes/applications/settings.py b/atst/routes/applications/settings.py index 22863ac6..3454c30e 100644 --- a/atst/routes/applications/settings.py +++ b/atst/routes/applications/settings.py @@ -210,6 +210,30 @@ def handle_create_member(application_id, form_data): # 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//settings") @user_can(Permissions.VIEW_APPLICATION, message="view application edit form") 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") 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(): - 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 + handle_update_member(application_id, application_role_id, http_request.form) return redirect( url_for( diff --git a/templates/applications/fragments/members.html b/templates/applications/fragments/members.html index 26392251..825dba25 100644 --- a/templates/applications/fragments/members.html +++ b/templates/applications/fragments/members.html @@ -12,7 +12,8 @@ application, members, new_member_form, - action) %} + action_new, + action_update) %}

{{ 'portfolios.applications.settings.team_members' | translate }} @@ -40,7 +41,7 @@
-