Beispiel #1
0
    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)
Beispiel #3
0
    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)
Beispiel #4
0
    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
        ]
Beispiel #5
0
    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
        ]
Beispiel #6
0
 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
Beispiel #7
0
    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]
Beispiel #8
0
    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
        ]
Beispiel #9
0
    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