def on_user_role_in_workspace_deleted(self, role: UserRoleInWorkspace, context: TracimContext) -> None: wapi = WorkspaceApi(context.dbsession, None, context.app_config) rapi = RoleApi(context.dbsession, None, context.app_config) for workspace in wapi.get_all_for_user(role.user): rapi.delete_one(role.user.user_id, workspace.workspace_id, flush=False)
def test_unit__get_all_manageable(self): admin = self.session.query(User) \ .filter(User.email == '*****@*****.**').one() uapi = UserApi( session=self.session, current_user=admin, config=self.app_config, ) # Checks a case without workspaces. wapi = WorkspaceApi( session=self.session, current_user=admin, config=self.app_config, ) eq_([], wapi.get_all_manageable()) # Checks an admin gets all workspaces. w4 = wapi.create_workspace(label='w4') w3 = wapi.create_workspace(label='w3') w2 = wapi.create_workspace(label='w2') w1 = wapi.create_workspace(label='w1') eq_([w1, w2, w3, w4], wapi.get_all_manageable()) # Checks a regular user gets none workspace. gapi = GroupApi( session=self.session, current_user=None, config=self.app_config, ) u = uapi.create_minimal_user('[email protected]', [gapi.get_one(Group.TIM_USER)], True) wapi = WorkspaceApi( session=self.session, current_user=u, config=self.app_config, ) rapi = RoleApi( session=self.session, current_user=None, config=self.app_config, ) rapi.create_one(u, w4, UserRoleInWorkspace.READER, False) rapi.create_one(u, w3, UserRoleInWorkspace.CONTRIBUTOR, False) rapi.create_one(u, w2, UserRoleInWorkspace.CONTENT_MANAGER, False) rapi.create_one(u, w1, UserRoleInWorkspace.WORKSPACE_MANAGER, False) eq_([], wapi.get_all_manageable()) # Checks a manager gets only its own workspaces. u.groups.append(gapi.get_one(Group.TIM_MANAGER)) rapi.delete_one(u.user_id, w2.workspace_id) rapi.create_one(u, w2, UserRoleInWorkspace.WORKSPACE_MANAGER, False) eq_([w1, w2], wapi.get_all_manageable())
def delete_workspaces_members_role(self, context, request: TracimRequest, hapic_data=None) -> None: """ Remove the user from the space. This feature is for workspace managers and administrators. """ app_config = request.registry.settings["CFG"] # type: CFG rapi = RoleApi(current_user=request.current_user, session=request.dbsession, config=app_config) rapi.delete_one(user_id=hapic_data.path.user_id, workspace_id=hapic_data.path.workspace_id) return
def on_user_role_in_workspace_deleted( self, role: UserRoleInWorkspace, context: TracimContext ) -> None: """ Remove the user from all child spaces """ user = role.user parent_workspace = role.workspace rapi = RoleApi(session=context.dbsession, config=context.app_config, current_user=None) for workspace in parent_workspace.recursive_children: try: rapi.delete_one( user_id=user.user_id, workspace_id=workspace.workspace_id, flush=False, ) except UserRoleNotFound: pass
def delete_workspaces_members_role( self, context, request: TracimRequest, hapic_data=None ) -> None: """ Remove the user from the space. This feature is for workspace managers and administrators. """ app_config = request.registry.settings['CFG'] rapi = RoleApi( current_user=request.current_user, session=request.dbsession, config=app_config, ) rapi.delete_one( user_id=hapic_data.path.user_id, workspace_id=hapic_data.path.workspace_id, ) return