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):
|
class WorkspaceUser(object):
|
||||||
def __init__(self, user, workspace_role):
|
def __init__(self, user, workspace_role):
|
||||||
self.user = user
|
self.user = user
|
||||||
@ -14,6 +20,7 @@ class WorkspaceUser(object):
|
|||||||
def workspace(self):
|
def workspace(self):
|
||||||
return self.workspace_role.workspace
|
return self.workspace_role.workspace
|
||||||
|
|
||||||
|
@property
|
||||||
def workspace_id(self):
|
def workspace_id(self):
|
||||||
return self.workspace_role.workspace_id
|
return self.workspace_role.workspace_id
|
||||||
|
|
||||||
@ -32,3 +39,16 @@ class WorkspaceUser(object):
|
|||||||
@property
|
@property
|
||||||
def status(self):
|
def status(self):
|
||||||
return "radical"
|
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 %}
|
{% for m in workspace.members %}
|
||||||
<tr>
|
<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><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.status }}</a></td>
|
||||||
<td>{{ m.role }}</a></td>
|
<td>{{ m.role }}</a></td>
|
||||||
</tr>
|
</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