From 3a1a996469d8a178273bb1630b2e876badd91add Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Thu, 24 Oct 2019 18:12:28 -0400 Subject: [PATCH] Create macro for environment role field and update route so the correct data is passed to Environments.update_env_role to update or delete roles --- atst/routes/applications/settings.py | 11 ++- .../fragments/member_form_fields.html | 90 ++++++++++++++----- 2 files changed, 76 insertions(+), 25 deletions(-) diff --git a/atst/routes/applications/settings.py b/atst/routes/applications/settings.py index c1081a1b..37e45e50 100644 --- a/atst/routes/applications/settings.py +++ b/atst/routes/applications/settings.py @@ -374,14 +374,21 @@ 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) - form = UpdateMemberForm(http_request.form) + 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) - Environments.update_env_role(environment, app_role, env_role.data["role"]) + new_role = None if env_role.deleted.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: diff --git a/templates/applications/fragments/member_form_fields.html b/templates/applications/fragments/member_form_fields.html index a466a46d..eb4ba097 100644 --- a/templates/applications/fragments/member_form_fields.html +++ b/templates/applications/fragments/member_form_fields.html @@ -2,6 +2,72 @@ {% from "components/text_input.html" import TextInput %} {% from "components/phone_input.html" import PhoneInput %} +{% macro EnvRoleInput(field, member_role_id=None) %} + {% if field.role.data == "No Access" and not field.deleted.data -%} + +
+
+
+
+ +
+ {{ field.environment_name.data }} +
+

+ {{ field.role.data }} +

+
+
+
+ {{ field.role(**{"v-model": "value", "id": "{}-{}".format(field.role.name, member_role_id)}) }} +
+
+
+
+
+ {% elif field.role.data != "No Access" and not field.deleted.data -%} +
+
+ +
+ {{ field.environment_name.data }} +
+

+ {{ field.role.data }} +

+
+
+
+ +
+
+ +
+ + {% set id = "{}-{}".format(field.deleted.name, member_role_id) %} + {{ field.deleted(id=id, checked=True, **{"v-model": "isChecked"}) }} + {{ field.deleted.label(for=id) | safe }} + +
+
+
+
+
+
+ {%- endif %} + {{ field.environment_id() }} +{% endmacro %} + {% macro PermsFields(form, new=False, member_role_id=None) %}

{{ "portfolios.applications.members.form.app_perms.title" | translate }}

{{ "portfolios.applications.members.form.app_perms.description" | translate | safe}}

@@ -26,29 +92,7 @@

{{ "portfolios.applications.members.form.env_access.description" | translate | safe }}


{% for environment_data in form.environment_roles %} - -
-
-
-
- -
- {{ environment_data.environment_name.data }} -
-
-
-
- {{ environment_data.role(**{"v-model": "value"}) }} -
-
-
-
-
- {{ environment_data.environment_id() }} + {{ EnvRoleInput(environment_data, member_role_id) }}
{% endfor %}