Also remove enviornment access (stub)

This commit is contained in:
richard-dds 2018-11-19 15:53:30 -05:00
parent 3026771a38
commit 35150dfa10
4 changed files with 47 additions and 1 deletions

View File

@ -85,3 +85,7 @@ class Environments(object):
db.session.add(env_role) db.session.add(env_role)
db.session.commit() db.session.commit()
@classmethod
def revoke_access(cls, user, environment, target_user):
pass

View File

@ -146,4 +146,7 @@ class Workspaces(object):
# user, workspace, Permissions.REQUEST_NEW_CSP_ROLE, "revoke workspace access" # user, workspace, Permissions.REQUEST_NEW_CSP_ROLE, "revoke workspace access"
# ) # )
target_workspace_role.status = WorkspaceRoleStatus.DISABLED target_workspace_role.status = WorkspaceRoleStatus.DISABLED
for environment in workspace.all_environments:
# TODO: Implement Environments.revoke_access
Environments.revoke_access(user, environment, target_workspace_role.user)
return WorkspacesQuery.add_and_commit(target_workspace_role) return WorkspacesQuery.add_and_commit(target_workspace_role)

View File

@ -1,5 +1,6 @@
from sqlalchemy import Column, ForeignKey, String from sqlalchemy import Column, ForeignKey, String
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from itertools import chain
from atst.models import Base from atst.models import Base
from atst.models.types import Id from atst.models.types import Id
@ -44,6 +45,10 @@ class Workspace(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
def displayname(self): def displayname(self):
return self.name return self.name
@property
def all_environments(self):
return list(chain.from_iterable(p.environments for p in self.projects))
def auditable_workspace_id(self): def auditable_workspace_id(self):
return self.id return self.id

View File

@ -3,7 +3,6 @@ import datetime
from atst.domain.environments import Environments from atst.domain.environments import Environments
from atst.domain.workspaces import Workspaces from atst.domain.workspaces import Workspaces
from atst.domain.projects import Projects from atst.domain.projects import Projects
from atst.domain.workspace_roles import WorkspaceRoles
from atst.models.workspace_role import Status from atst.models.workspace_role import Status
from atst.models.role import Role from atst.models.role import Role
from atst.models.invitation import Status as InvitationStatus from atst.models.invitation import Status as InvitationStatus
@ -16,7 +15,9 @@ from tests.factories import (
EnvironmentFactory, EnvironmentFactory,
EnvironmentRoleFactory, EnvironmentRoleFactory,
ProjectFactory, ProjectFactory,
WorkspaceFactory,
) )
from atst.domain.workspace_roles import WorkspaceRoles
def test_has_no_ws_role_history(session): def test_has_no_ws_role_history(session):
@ -234,3 +235,36 @@ def test_can_resend_invitation_if_expired():
invitations=[InvitationFactory.create(status=InvitationStatus.REJECTED_EXPIRED)] invitations=[InvitationFactory.create(status=InvitationStatus.REJECTED_EXPIRED)]
) )
assert workspace_role.can_resend_invitation assert workspace_role.can_resend_invitation
def test_can_list_all_environments():
workspace = WorkspaceFactory.create(
projects=[
{
"name": "project1",
"environments": [
{"name": "dev"},
{"name": "staging"},
{"name": "prod"},
],
},
{
"name": "project2",
"environments": [
{"name": "dev"},
{"name": "staging"},
{"name": "prod"},
],
},
{
"name": "project3",
"environments": [
{"name": "dev"},
{"name": "staging"},
{"name": "prod"},
],
},
]
)
assert len(workspace.all_environments) == 9