From f14e63a7191e89f8ba519149e0940077c5a63e2c Mon Sep 17 00:00:00 2001 From: Ivan Ivanov Date: Fri, 4 Oct 2024 22:31:51 +0300 Subject: [PATCH] Add a function to delete files individually --- qfieldcloud_sdk/cli.py | 20 ++++++++++++++++++++ qfieldcloud_sdk/sdk.py | 19 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/qfieldcloud_sdk/cli.py b/qfieldcloud_sdk/cli.py index 448506b..ff180fe 100755 --- a/qfieldcloud_sdk/cli.py +++ b/qfieldcloud_sdk/cli.py @@ -443,6 +443,26 @@ def delete_files(ctx: Context, project_id, paths, throw_on_error): log(f'Deleting project "{project_id}" files…') +@cli.command() +@click.argument("project_id") +@click.argument("filename") +@click.option( + "--version-id", + help="Pass to delete a specific file version. Otherwise the file and all it's versions will be deleted.", +) +@click.pass_context +def delete_file( + ctx: Context, project_id: str, filename: str, version_id: Optional[str] +) -> None: + """Delete QFieldCloud project files.""" + + log(f'Deleting file "{filename}" in project "{project_id}"…') + + _resp = ctx.obj["client"].delete_file(project_id, filename, version_id) + + log(f'Successfully deleted file "{filename}" in project "{project_id}"!') + + @cli.command() @click.argument("project_id") @click.option( diff --git a/qfieldcloud_sdk/sdk.py b/qfieldcloud_sdk/sdk.py index 8b9d409..7b4b23c 100644 --- a/qfieldcloud_sdk/sdk.py +++ b/qfieldcloud_sdk/sdk.py @@ -937,6 +937,25 @@ def delete_files( return glob_results + def delete_file( + self, + project_id: str, + filename: str, + version_id: Optional[str], + ) -> requests.Response: + headers = {} + + if version_id: + headers["x-file-version"] = version_id + + resp = self._request( + "DELETE", + f"files/{project_id}/{filename}", + headers=headers, + ) + + return resp + def package_latest(self, project_id: str) -> Dict[str, Any]: """Check the latest packaging status of a project.