Sort env members by role

This commit is contained in:
leigh-mil 2019-04-26 10:48:58 -04:00
parent bdb1cc9ce5
commit 4c7a8c399c
2 changed files with 41 additions and 20 deletions

View File

@ -7,26 +7,37 @@ from atst.domain.applications import Applications
from atst.forms.app_settings import EnvironmentRolesForm
from atst.forms.application import ApplicationForm, EditEnvironmentForm
from atst.domain.authz.decorator import user_can_access_decorator as user_can
from atst.models.environment_role import CSPRole
from atst.models.permissions import Permissions
from atst.utils.flash import formatted_flash as flash
def get_environments_obj_for_app(application):
environments_obj = {}
for env in application.environments:
environments_obj[env.name] = {
"edit_form": EditEnvironmentForm(obj=env),
"id": env.id,
"members": [],
}
for user in env.users:
env_role = EnvironmentRoles.get(user.id, env.id)
environments_obj[env.name]["members"].append(
{"name": user.full_name, "role": env_role.displayname}
)
environments_obj[env.name]["members"] = sort_env_users_by_role(env)
return environments_obj
# {env_name: {edit_form, env_id, members: {csp_role: [], csp_role: []}}}
def sort_env_users_by_role(env):
users_dict = {}
for role in CSPRole:
users_dict[role.value] = []
for r in env.roles:
users_dict[r.displayname].append(
{"name": r.user.full_name, "user_id": r.user_id}
)
return users_dict
# {csp_role: [{user info}, {user info}], csp_role: [...]}
def serialize_env_member_forms(application):
@ -64,6 +75,7 @@ def settings(application_id):
# refactor like portfolio admin render function
application = Applications.get(application_id)
form = ApplicationForm(name=application.name, description=application.description)
csp_roles = [role.value for role in CSPRole]
return render_template(
"portfolios/applications/settings.html",
@ -71,6 +83,7 @@ def settings(application_id):
form=form,
environments_obj=get_environments_obj_for_app(application=application),
env_forms=serialize_env_member_forms(application=application),
csp_roles=csp_roles,
)

View File

@ -68,15 +68,17 @@ def test_edit_application_environments_obj(app, client, user_session):
portfolio,
"Snazzy Application",
"A new application for me and my friends",
{"env1", "env2"},
{"env"},
)
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 = application.environments[0]
env_role1 = EnvironmentRoleFactory.create(
environment=env, user=user1, role=CSPRole.BASIC_ACCESS.value
)
env_role2 = EnvironmentRoleFactory.create(
environment=env, user=user2, role=CSPRole.NETWORK_ADMIN.value
)
user_session(portfolio.owner)
@ -88,13 +90,19 @@ def test_edit_application_environments_obj(app, client, user_session):
assert response.status_code == 200
_, context = templates[0]
env_obj_1 = context["environments_obj"][env1.name]
assert env_obj_1["id"] == env1.id
assert isinstance(env_obj_1["edit_form"], EditEnvironmentForm)
assert env_obj_1["members"] == [
{"name": user1.full_name, "role": env_role1.role},
{"name": user2.full_name, "role": env_role2.role},
]
env_obj = context["environments_obj"][env.name]
assert env_obj["id"] == env.id
assert isinstance(env_obj["edit_form"], EditEnvironmentForm)
assert env_obj["members"] == {
CSPRole.BASIC_ACCESS.value: [
{"name": env_role1.user.full_name, "user_id": env_role1.user_id}
],
CSPRole.NETWORK_ADMIN.value: [
{"name": env_role2.user.full_name, "user_id": env_role2.user_id}
],
CSPRole.BUSINESS_READ.value: [],
CSPRole.TECHNICAL_READ.value: [],
}
def test_edit_app_serialize_env_member_form_data(app, client, user_session):