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:
richard-dds 2018-09-06 16:19:18 -04:00 committed by GitHub
commit a0b0b54146
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 60 additions and 1 deletions

View File

@ -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

View File

@ -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>

View 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