コード例 #1
0
    async def delete(self, path, confirm_delete=0, **kwargs):
        """Delete file, folder, or provider root contents

        :param OsfStoragePath path: path to delete
        :param int confirm_delete: Must be 1 to confirm root folder delete
        """
        if path.identifier is None:
            raise exceptions.NotFoundError(str(path))

        self.metrics.add('delete.is_root_delete', path.is_root)
        if path.is_root:
            self.metrics.add('delete.root_delete_confirmed',
                             confirm_delete == 1)
            if confirm_delete == 1:
                await self._delete_folder_contents(path)
                return
            else:
                raise exceptions.DeleteError(
                    'confirm_delete=1 is required for deleting root provider folder',
                    code=400,
                )

        await (await self.make_signed_request('DELETE',
                                              self.build_url(path.identifier),
                                              params={'user': self.auth['id']},
                                              expects=(200, ))).release()
コード例 #2
0
    async def delete(self,
                     path,
                     sha=None,
                     message=None,
                     branch=None,
                     confirm_delete=0,
                     **kwargs):
        """Delete file, folder, or provider root contents

        :param GitHubPath path: GitHubPath path object for file, folder, or root
        :param str sha: SHA-1 checksum of file/folder object
        :param str message: Commit message
        :param str branch: Repository branch
        :param int confirm_delete: Must be 1 to confirm root folder delete
        """
        assert self.name is not None
        assert self.email is not None

        if path.is_root:
            if confirm_delete == 1:
                await self._delete_root_folder_contents(path)
            else:
                raise exceptions.DeleteError(
                    'confirm_delete=1 is required for deleting root provider folder',
                    code=400,
                )
        elif path.is_dir:
            await self._delete_folder(path, message, **kwargs)
        else:
            await self._delete_file(path, message, **kwargs)
コード例 #3
0
ファイル: provider.py プロジェクト: simhaonline/waterbutler
    async def delete(self, path, confirm_delete=0, **kwargs):
        """Deletes the key at the specified path

        :param str path: The path of the key to delete
        :param int confirm_delete: Must be 1 to confirm root folder delete
        """
        await self._check_region()

        if path.is_root:
            if not confirm_delete == 1:
                raise exceptions.DeleteError(
                    'confirm_delete=1 is required for deleting root provider folder',
                    code=400)

        if path.is_file:
            resp = await self.make_request(
                'DELETE',
                self.bucket.new_key(path.path).generate_url(
                    settings.TEMP_URL_SECS, 'DELETE'),
                expects=(
                    200,
                    204,
                ),
                throws=exceptions.DeleteError,
            )
            await resp.release()
        else:
            await self._delete_folder(path, **kwargs)
コード例 #4
0
ファイル: provider.py プロジェクト: snakazawa/RDM-waterbutler
    async def delete(self,  # type: ignore
                     path: wb_path.WaterButlerPath,
                     confirm_delete: int=0,
                     **kwargs) -> None:
        """Delete file, folder, or provider root contents

        :param BoxPath path: BoxPath path object for folder
        :param int confirm_delete: Must be 1 to confirm root folder delete
        """
        if not path.identifier:  # TODO This should be abstracted
            raise exceptions.NotFoundError(str(path))

        if path.is_root:
            if confirm_delete == 1:
                await self._delete_folder_contents(path)
                return
            else:
                raise exceptions.DeleteError(
                    'confirm_delete=1 is required for deleting root provider folder',
                    code=400
                )

        if path.is_file:
            url = self.build_url('files', path.identifier)
        else:
            url = self.build_url('folders', path.identifier, recursive=True)

        async with self.request(
            'DELETE', url,
            expects=(204, ),
            throws=exceptions.DeleteError,
        ):
            return  # Ensures the response is properly released
コード例 #5
0
ファイル: provider.py プロジェクト: emetsger/waterbutler
    async def delete(self, path, confirm_delete=0, **kwargs):
        """Delete file, folder, or provider root contents

        :param DropboxPath path: DropboxPath path object for folder
        :param int confirm_delete: Must be 1 to confirm root folder delete
        """
        if path.is_root:
            if confirm_delete == 1:
                await self._delete_folder_contents(path)
                return
            else:
                raise exceptions.DeleteError(
                    'confirm_delete=1 is required for deleting root provider folder',
                    code=400)

        async with self.request(
                'POST',
                self.build_url('fileops', 'delete'),
                data={
                    'root': 'auto',
                    'path': path.full_path
                },
                expects=(200, ),
                throws=exceptions.DeleteError,
        ):
            return  # release resp
コード例 #6
0
    async def delete(self, path, confirm_delete=0, **kwargs):
        """Delete the entity at ``path``.

        :param FigsharePath path: Path to be deleted
        :param int confirm_delete: Must be 1 to confirm root folder delete
        :rtype: None
        :raises: :class:`waterbutler.core.exceptions.NotFoundError`
        :raises: :class:`waterbutler.core.exceptions.DeleteError`

        Quirks:

        * If the FigsharePath given is for the provider root path, then the contents of the
          provider root path will be deleted, but not the provider root itself.
        """
        if not path.identifier:
            raise exceptions.NotFoundError(str(path))

        if path.is_root:
            if confirm_delete == 1:
                return await self._delete_container_contents()
            raise exceptions.DeleteError(
                'confirm_delete=1 is required for deleting root provider folder',
                code=400)

        if len(path.parts) == 2:
            if not path.is_folder:
                raise exceptions.NotFoundError(str(path))
            delete_path = (*self.root_path_parts, 'articles',
                           path.parts[1]._id)
        elif len(path.parts) == 3:
            if path.is_folder:
                raise exceptions.NotFoundError(str(path))
            article_response = await self.make_request(
                'GET',
                self.build_url(False, *self.root_path_parts, 'articles',
                               path.parts[1]._id),
                expects=(200, ),
            )
            article_json = await article_response.json()
            if article_json['defined_type'] in settings.FOLDER_TYPES:
                delete_path = ('articles', path.parts[1]._id, 'files',
                               path.parts[2]._id)
            else:
                delete_path = (*self.root_path_parts, 'articles',
                               path.parts[1]._id)

        delete_article_response = await self.make_request(
            'DELETE',
            self.build_url(False, *delete_path),
            expects=(204, ),
        )
        await delete_article_response.release()
コード例 #7
0
ファイル: provider.py プロジェクト: weko3-dev02/waterbutler
    async def delete(
            self,  # type: ignore
            path: GoogleDrivePath,
            confirm_delete: int = 0,
            **kwargs) -> None:
        """Given a WaterButlerPath, delete that path
        :param GoogleDrivePath path: Path to be deleted
        :param int confirm_delete: Must be 1 to confirm root folder delete
        :rtype: None
        :raises: :class:`waterbutler.core.exceptions.NotFoundError`
        :raises: :class:`waterbutler.core.exceptions.DeleteError`

        Quirks:
            If the WaterButlerPath given is for the provider root path, then
            the contents of provider root path will be deleted. But not the
            provider root itself.
        """
        if not path.identifier:
            raise exceptions.NotFoundError(str(path))

        self.metrics.add('delete.is_root_delete', path.is_root)
        if path.is_root:
            self.metrics.add('delete.root_delete_confirmed',
                             confirm_delete == 1)
            if confirm_delete == 1:
                await self._delete_folder_contents(path)
                return
            else:
                raise exceptions.DeleteError(
                    'confirm_delete=1 is required for deleting root provider folder',
                    code=400)

        async with self.request(
                'PUT',
                self.build_url('files', path.identifier),
                data=json.dumps({'labels': {
                    'trashed': 'true'
                }}),
                headers={'Content-Type': 'application/json'},
                expects=(200, ),
                throws=exceptions.DeleteError,
        ):
            return
コード例 #8
0
    async def delete(
            self,
            path: WaterButlerPath,
            confirm_delete: int = 0,  # type: ignore
            **kwargs) -> None:  # type: ignore
        """Delete file, folder, or provider root contents

        :param WaterButlerPath path: WaterButlerPath path object for folder
        :param int confirm_delete: Must be 1 to confirm root folder delete
        """
        if path.is_root:
            if confirm_delete == 1:
                return await self._delete_folder_contents(path)
            else:
                raise exceptions.DeleteError(
                    'confirm_delete=1 is required for deleting root provider folder',
                    code=400)
        await self.dropbox_request(
            self.build_url('files', 'delete'),
            {'path': self.folder.rstrip('/') + '/' + path.path.rstrip('/')},
            throws=exceptions.DeleteError,
        )
コード例 #9
0
    async def delete(self, path, confirm_delete=0, **kwargs):
        """Delete the file at ``path``. If ``path`` is ``/`` and ``confirm_delete`` is ``1``, then
        delete all of the files within the article, but not the article itself.

        :param FigsharePath path: Path to be deleted
        :param int confirm_delete: Must be 1 to confirm root folder delete
        :rtype: None
        :raises: :class:`waterbutler.core.exceptions.NotFoundError`
        :raises: :class:`waterbutler.core.exceptions.DeleteError`

        Quirks:

        * If the FigsharePath given is for the provider root path, then the contents of the
          provider root path will be deleted, but not the provider root itself.
        """
        if path.is_root:
            if confirm_delete == 1:
                return await self._delete_container_contents()
            raise exceptions.DeleteError(
                'confirm_delete=1 is required for deleting root provider folder',
                code=400)

        await self._delete_file(path.parts[-1]._id)