WIP: creating a workspace creates a workspace_role

This commit is contained in:
dandds 2018-08-16 17:03:10 -04:00 committed by richard-dds
parent 75f41d4d2b
commit c723c9b326
4 changed files with 23 additions and 3 deletions

View File

@ -21,7 +21,8 @@ class WorkspaceUsers(object):
try: try:
workspace_role = ( workspace_role = (
WorkspaceRole.query.join(User) db.session.query(WorkspaceRole)
.join(User)
.filter(User.id == user_id, WorkspaceRole.workspace_id == workspace_id) .filter(User.id == user_id, WorkspaceRole.workspace_id == workspace_id)
.one() .one()
) )

View File

@ -3,6 +3,8 @@ from sqlalchemy.orm.exc import NoResultFound
from atst.database import db from atst.database import db
from atst.domain.exceptions import NotFoundError from atst.domain.exceptions import NotFoundError
from atst.models.workspace import Workspace from atst.models.workspace import Workspace
from atst.models.workspace_role import WorkspaceRole
from atst.domain.roles import Roles
class Workspaces(object): class Workspaces(object):
@ -13,7 +15,10 @@ class Workspaces(object):
@classmethod @classmethod
def create(cls, request, name=None): def create(cls, request, name=None):
name = name or request.id name = name or request.id
return Workspace(request=request, name=name) workspace = Workspace(request=request, name=name)
role = Roles.get("owner")
wr = WorkspaceRole(user_id=request.creator.id, role=role, workspace_id=workspace.id)
return workspace
@classmethod @classmethod
def get(cls, workspace_id): def get(cls, workspace_id):

View File

@ -14,3 +14,7 @@ class Workspace(Base):
request = relationship("Request") request = relationship("Request")
name = Column(String, unique=True) name = Column(String, unique=True)
@property
def owner(self):
return self.request.creator

View File

@ -3,8 +3,9 @@ from uuid import uuid4
from atst.domain.exceptions import NotFoundError from atst.domain.exceptions import NotFoundError
from atst.domain.workspaces import Workspaces from atst.domain.workspaces import Workspaces
from atst.domain.workspace_users import WorkspaceUsers
from tests.factories import WorkspaceFactory, RequestFactory, TaskOrderFactory from tests.factories import WorkspaceFactory, RequestFactory, UserFactory
def test_can_create_workspace(): def test_can_create_workspace():
@ -32,3 +33,12 @@ def test_can_get_workspace_by_request():
workspace = WorkspaceFactory.create() workspace = WorkspaceFactory.create()
found = Workspaces.get_by_request(workspace.request) found = Workspaces.get_by_request(workspace.request)
assert workspace == found assert workspace == found
def test_creating_workspace_adds_owner():
user = UserFactory.create()
request = RequestFactory.create(creator=user)
workspace = Workspaces.create(request)
workspace_user = WorkspaceUsers.get(workspace.id, user.id)
assert workspace_user.workspace_role