Create Projects.for_user and Environments.for_user
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from atst.database import db
|
||||
from atst.models.environment import Environment
|
||||
from atst.models.environment_role import EnvironmentRole, CSPRole
|
||||
from atst.models.project import Project
|
||||
|
||||
|
||||
class Environments(object):
|
||||
@@ -19,11 +20,22 @@ class Environments(object):
|
||||
db.session.commit()
|
||||
|
||||
@classmethod
|
||||
def add_member(cls, user, environment, member):
|
||||
def add_member(cls, user, environment, member, role=CSPRole.NONSENSE_ROLE):
|
||||
environment_user = EnvironmentRole(
|
||||
user=member, environment=environment, role=CSPRole.NONSENSE_ROLE.value
|
||||
user=member, environment=environment, role=role.value
|
||||
)
|
||||
db.session.add(environment_user)
|
||||
db.session.commit()
|
||||
|
||||
return environment
|
||||
|
||||
@classmethod
|
||||
def for_user(cls, user, project):
|
||||
return (
|
||||
db.session.query(Environment)
|
||||
.join(EnvironmentRole)
|
||||
.join(Project)
|
||||
.filter(EnvironmentRole.user_id == user.id)
|
||||
.filter(Project.id == Environment.project_id)
|
||||
.all()
|
||||
)
|
||||
|
@@ -4,6 +4,8 @@ from atst.domain.environments import Environments
|
||||
from atst.domain.exceptions import NotFoundError
|
||||
from atst.models.permissions import Permissions
|
||||
from atst.models.project import Project
|
||||
from atst.models.environment import Environment
|
||||
from atst.models.environment_role import EnvironmentRole
|
||||
|
||||
|
||||
class Projects(object):
|
||||
@@ -36,3 +38,14 @@ class Projects(object):
|
||||
raise NotFoundError("project")
|
||||
|
||||
return project
|
||||
|
||||
@classmethod
|
||||
def for_user(self, user, workspace):
|
||||
return (
|
||||
db.session.query(Project)
|
||||
.join(Environment)
|
||||
.join(EnvironmentRole)
|
||||
.filter(Project.workspace_id == workspace.id)
|
||||
.filter(EnvironmentRole.user_id == user.id)
|
||||
.all()
|
||||
)
|
||||
|
@@ -22,7 +22,8 @@ class Workspace(Base, TimestampsMixin):
|
||||
def _is_workspace_owner(workspace_role):
|
||||
return workspace_role.role.name == "owner"
|
||||
|
||||
return first_or_none(_is_workspace_owner, self.roles)
|
||||
owner = first_or_none(_is_workspace_owner, self.roles)
|
||||
return owner.user if owner else None
|
||||
|
||||
@property
|
||||
def users(self):
|
||||
|
Reference in New Issue
Block a user