Sort env members by role
This commit is contained in:
parent
bdb1cc9ce5
commit
4c7a8c399c
@ -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,
|
||||
)
|
||||
|
||||
|
||||
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user