def should_anonymize(self, user: User, owned_workspace_will_be_deleted: bool = False ) -> UserNeedAnonymization: wapi = WorkspaceApi(config=self.app_config, session=self.session, current_user=user, show_deleted=True) user_owned_workspaces_to_filter = wapi.get_all_for_user( user, include_owned=True, include_with_role=False) query = self.session.query(ContentRevisionRO) if owned_workspace_will_be_deleted: query = query.filter(~ContentRevisionRO.workspace_id.in_([ workspace.workspace_id for workspace in user_owned_workspaces_to_filter ])) user_blocking_workspaces = [] else: user_blocking_workspaces = user_owned_workspaces_to_filter query = query.filter(ContentRevisionRO.owner_id == user.user_id) user_blocking_revisions = query.all() return UserNeedAnonymization( blocking_workspaces=user_blocking_workspaces, blocking_revisions=user_blocking_revisions)
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 allowed_to_create_new_workspaces(self, user: User) -> bool: # INFO - G.M - 2019-08-21 - 0 mean no limit here if self._config.LIMITATION__SHAREDSPACE_PER_USER == 0: return True workspace_api = WorkspaceApi(session=self._session, current_user=self._user, config=self._config) owned_workspace = workspace_api.get_all_for_user( user=user, include_owned=True, include_with_role=False) return not (len(owned_workspace) >= self._config.LIMITATION__SHAREDSPACE_PER_USER)
def account_workspace(self, context, request: TracimRequest, hapic_data=None): """ Get list of auth user workspaces """ app_config = request.registry.settings['CFG'] wapi = WorkspaceApi( current_user=request.current_user, # User session=request.dbsession, config=app_config, ) workspaces = wapi.get_all_for_user(request.current_user) return [ wapi.get_workspace_with_context(workspace) for workspace in workspaces ]
def user_workspace(self, context, request: TracimRequest, hapic_data=None): """ Get list of user workspaces """ app_config = request.registry.settings['CFG'] wapi = WorkspaceApi( current_user=request.candidate_user, # User session=request.dbsession, config=app_config, ) workspaces = wapi.get_all_for_user(request.candidate_user) return [ wapi.get_workspace_with_context(workspace) for workspace in workspaces ]
def delete_user_owned_workspace(self, user: User) -> typing.List[int]: """ Delete all user workspaces :param user: tracim user :return: workspace_id for all workspace of user """ deleted_workspace_ids = [] # typing.List[int] wapi = WorkspaceApi(config=self.app_config, session=self.session, current_user=None, show_deleted=True) user_owned_workspaces = wapi.get_all_for_user(user, include_owned=True, include_with_role=False) for workspace in user_owned_workspaces: deleted_workspace_ids.append(workspace.workspace_id) self.delete_workspace(workspace) return deleted_workspace_ids
def user_workspace(self, context, request: TracimRequest, hapic_data=None): """ Get list of user workspaces """ app_config = request.registry.settings["CFG"] # type: CFG wapi = WorkspaceApi( current_user=request.candidate_user, # User session=request.dbsession, config=app_config, ) workspaces = wapi.get_all_for_user( request.candidate_user, include_owned=hapic_data.query.show_owned_workspace, include_with_role=hapic_data.query.show_workspace_with_role, parents_ids=hapic_data.query.parent_ids, ) return [wapi.get_workspace_with_context(workspace) for workspace in workspaces]
def account_workspace(self, context, request: TracimRequest, hapic_data=None): """ Get list of auth user workspaces """ app_config = request.registry.settings["CFG"] # type: CFG wapi = WorkspaceApi( current_user=request.current_user, session=request.dbsession, config=app_config # User ) workspaces = wapi.get_all_for_user(request.current_user) return [ wapi.get_workspace_with_context(workspace) for workspace in workspaces ]
def get_user_agendas( self, user: User, workspaces_ids_filter: typing.Optional[typing.List[int]], agenda_types_filter: typing.Optional[str], ) -> typing.List[Agenda]: user_agendas = [] if not agenda_types_filter: agenda_types_filter = [agenda.value for agenda in AgendaType] if AgendaType.private.value in agenda_types_filter and not workspaces_ids_filter: user_agendas.append( Agenda( agenda_url=self.get_user_agenda_url(user, use_proxy=True), with_credentials=True, agenda_type=AgendaType.private.value, workspace_id=None, )) if AgendaType.workspace.value in agenda_types_filter: workspace_api = WorkspaceApi(current_user=self._user, session=self._session, config=self._config) workspaces = workspace_api.get_all_for_user(user, include_with_role=True, include_owned=False) for workspace in workspaces: if workspaces_ids_filter and workspace.workspace_id not in workspaces_ids_filter: continue if not workspace.agenda_enabled: continue user_agendas.append( Agenda( agenda_url=self.get_workspace_agenda_url( workspace, use_proxy=True), with_credentials=True, agenda_type=AgendaType.workspace.value, workspace_id=workspace.workspace_id, )) return user_agendas