From bdb1cc9ce5b8e4749cdf80fe65cc165390f2b64d Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Thu, 25 Apr 2019 15:37:06 -0400 Subject: [PATCH] Add in users without access to env team info --- atst/routes/applications/settings.py | 48 ++++++++++---------- tests/routes/applications/test_settings.py | 51 +++++++++++----------- 2 files changed, 50 insertions(+), 49 deletions(-) diff --git a/atst/routes/applications/settings.py b/atst/routes/applications/settings.py index a7628ade..66ea8075 100644 --- a/atst/routes/applications/settings.py +++ b/atst/routes/applications/settings.py @@ -29,19 +29,31 @@ def get_environments_obj_for_app(application): return environments_obj -def serialize_env_member_form_data(application): +def serialize_env_member_forms(application): environments_list = [] + for env in application.environments: - env_info = {"env_id": env.id, "team_roles": []} - for user in env.users: - env_role = EnvironmentRoles.get(user.id, env.id) - env_info["team_roles"].append( - { - "name": user.full_name, - "user_id": user.id, - "role": env_role.displayname, - } - ) + env_info = {"env_name": env.name, "no_access": []} + env_team_list = [] + + for user in application.users: + if user in env.users: + env_role = EnvironmentRoles.get(user.id, env.id) + env_team_list.append( + { + "name": user.full_name, + "user_id": user.id, + "role": env_role.displayname, + } + ) + else: + env_info["no_access"].append( + {"name": user.full_name, "user_id": user.id} + ) + + env_info["form"] = EnvironmentRolesForm( + data={"env_id": env.id, "team_roles": env_team_list} + ) environments_list.append(env_info) return environments_list @@ -52,18 +64,13 @@ def settings(application_id): # refactor like portfolio admin render function application = Applications.get(application_id) form = ApplicationForm(name=application.name, description=application.description) - app_envs_data = serialize_env_member_form_data(application) - - env_forms = {} - for env_data in app_envs_data: - env_forms[env_data["env_id"]] = EnvironmentRolesForm(data=env_data) return render_template( "portfolios/applications/settings.html", application=application, form=form, environments_obj=get_environments_obj_for_app(application=application), - env_forms=env_forms, + env_forms=serialize_env_member_forms(application=application), ) @@ -106,17 +113,12 @@ def update(application_id): ) ) else: - env_data = serialize_env_member_form_data(application) - env_forms = {} - for data in env_data: - env_forms[data["env_id"]] = EnvironmentRolesForm(data=data) - return render_template( "portfolios/applications/settings.html", application=application, form=form, environments_obj=get_environments_obj_for_app(application=application), - env_forms=env_forms, + env_forms=serialize_env_member_forms(application=application), ) diff --git a/tests/routes/applications/test_settings.py b/tests/routes/applications/test_settings.py index 6423e68e..18ffd06d 100644 --- a/tests/routes/applications/test_settings.py +++ b/tests/routes/applications/test_settings.py @@ -98,44 +98,43 @@ def test_edit_application_environments_obj(app, client, user_session): def test_edit_app_serialize_env_member_form_data(app, client, user_session): - portfolio = PortfolioFactory.create() - application = Applications.create( - portfolio, - "Snazzy Application", - "A new application for me and my friends", - {"env1", "env2"}, - ) - user1 = UserFactory.create() - user2 = UserFactory.create() - env1 = application.environments[0] - env2 = application.environments[1] - env_role1 = EnvironmentRoleFactory.create(environment=env1, user=user1) - env_role2 = EnvironmentRoleFactory.create(environment=env1, user=user2) - env_role3 = EnvironmentRoleFactory.create(environment=env2, user=user1) + env = EnvironmentFactory.create() + application = env.application - user_session(portfolio.owner) + _app_role = ApplicationRoleFactory.create(application=application) + env_role = EnvironmentRoleFactory.create(environment=env, user=_app_role.user) + + app_role = ApplicationRoleFactory.create(application=application) + + user_session(application.portfolio.owner) with captured_templates(app) as templates: response = app.test_client().get( url_for("applications.settings", application_id=application.id) ) - assert response.status_code == 200 _, context = templates[0] - for env_id in context["env_forms"]: - env = Environments.get(environment_id=env_id) - form_data = {"env_id": env_id, "team_roles": []} - for user in env.users: - env_role = EnvironmentRoles.get(user.id, env.id) - form_data["team_roles"].append( + + serialized_data = { + "env_name": env.name, + "no_access": [ + {"name": app_role.user.full_name, "user_id": app_role.user_id} + ], + "form": { + "env_id": env.id, + "team_roles": [ { - "name": user.full_name, - "user_id": user.id, + "name": env_role.user.full_name, + "user_id": env_role.user_id, "role": env_role.displayname, } - ) + ], + }, + } - assert context["env_forms"][env_id].data == form_data + assert context["env_forms"][0]["env_name"] == serialized_data["env_name"] + assert context["env_forms"][0]["form"].data == serialized_data["form"] + assert context["env_forms"][0]["no_access"] == serialized_data["no_access"] def test_user_with_permission_can_update_application(client, user_session):