Merge pull request #257 from dod-ccpo/no-environment-access-flag
Show "No Environment Access" flag if workspace user is not added to any environments
This commit is contained in:
commit
a0b0b54146
@ -1,3 +1,9 @@
|
||||
from atst.database import db
|
||||
from atst.models.environment_role import EnvironmentRole
|
||||
from atst.models.project import Project
|
||||
from atst.models.environment import Environment
|
||||
|
||||
|
||||
class WorkspaceUser(object):
|
||||
def __init__(self, user, workspace_role):
|
||||
self.user = user
|
||||
@ -14,6 +20,7 @@ class WorkspaceUser(object):
|
||||
def workspace(self):
|
||||
return self.workspace_role.workspace
|
||||
|
||||
@property
|
||||
def workspace_id(self):
|
||||
return self.workspace_role.workspace_id
|
||||
|
||||
@ -32,3 +39,16 @@ class WorkspaceUser(object):
|
||||
@property
|
||||
def status(self):
|
||||
return "radical"
|
||||
|
||||
@property
|
||||
def has_environment_roles(self):
|
||||
num_environment_roles = (
|
||||
db.session.query(EnvironmentRole)
|
||||
.join(EnvironmentRole.environment)
|
||||
.join(Environment.project)
|
||||
.join(Project.workspace)
|
||||
.filter(Project.workspace_id == self.workspace_id)
|
||||
.filter(EnvironmentRole.user_id == self.user_id)
|
||||
.count()
|
||||
)
|
||||
return num_environment_roles > 0
|
||||
|
@ -91,7 +91,7 @@
|
||||
{% for m in workspace.members %}
|
||||
<tr>
|
||||
<td><a href="{{ url_for('workspaces.update_member', workspace_id=workspace.id, member_id=m.user_id) }}" class="icon-link icon-link--large">{{ m.user_name }}</a></td>
|
||||
<td class='table-cell--shrink'>{% if m['num_projects'] == '0' %} <span class="label label--info">No Project Access</span> {% endif %}</td>
|
||||
<td class='table-cell--shrink'>{% if not m.has_environment_roles %} <span class="label label--info">No Environment Access</span> {% endif %}</td>
|
||||
<td>{{ m.status }}</a></td>
|
||||
<td>{{ m.role }}</a></td>
|
||||
</tr>
|
||||
|
39
tests/models/test_workspace_user.py
Normal file
39
tests/models/test_workspace_user.py
Normal file
@ -0,0 +1,39 @@
|
||||
from atst.domain.environments import Environments
|
||||
from atst.domain.workspaces import Workspaces
|
||||
from atst.domain.projects import Projects
|
||||
from tests.factories import RequestFactory, UserFactory
|
||||
|
||||
|
||||
def test_has_no_environment_roles():
|
||||
owner = UserFactory.create()
|
||||
developer_data = {
|
||||
"dod_id": "1234567890",
|
||||
"first_name": "Test",
|
||||
"last_name": "User",
|
||||
"email": "test.user@mail.com",
|
||||
"workspace_role": "developer",
|
||||
}
|
||||
|
||||
workspace = Workspaces.create(RequestFactory.create(creator=owner))
|
||||
workspace_user = Workspaces.create_member(owner, workspace, developer_data)
|
||||
|
||||
assert not workspace_user.has_environment_roles
|
||||
|
||||
|
||||
def test_has_environment_roles():
|
||||
owner = UserFactory.create()
|
||||
developer_data = {
|
||||
"dod_id": "1234567890",
|
||||
"first_name": "Test",
|
||||
"last_name": "User",
|
||||
"email": "test.user@mail.com",
|
||||
"workspace_role": "developer",
|
||||
}
|
||||
|
||||
workspace = Workspaces.create(RequestFactory.create(creator=owner))
|
||||
workspace_user = Workspaces.create_member(owner, workspace, developer_data)
|
||||
project = Projects.create(
|
||||
workspace, "my test project", "It's mine.", ["dev", "staging", "prod"]
|
||||
)
|
||||
Environments.add_member(owner, project.environments[0], workspace_user.user)
|
||||
assert workspace_user.has_environment_roles
|
Loading…
x
Reference in New Issue
Block a user