diff --git a/atst/models/workspace_user.py b/atst/models/workspace_user.py
index 3c92707e..1677a4bd 100644
--- a/atst/models/workspace_user.py
+++ b/atst/models/workspace_user.py
@@ -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
diff --git a/templates/workspaces/members/index.html b/templates/workspaces/members/index.html
index 6c4f0b0f..60d0d431 100644
--- a/templates/workspaces/members/index.html
+++ b/templates/workspaces/members/index.html
@@ -91,7 +91,7 @@
{% for m in workspace.members %}
{{ m.user_name }} |
- {% if m['num_projects'] == '0' %} No Project Access {% endif %} |
+ {% if not m.has_environment_roles %} No Environment Access {% endif %} |
{{ m.status }} |
{{ m.role }} |
diff --git a/tests/models/test_workspace_user.py b/tests/models/test_workspace_user.py
new file mode 100644
index 00000000..afa8c306
--- /dev/null
+++ b/tests/models/test_workspace_user.py
@@ -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