From 226ca9d55de6d0e96bce750e5257b87d4bb567c9 Mon Sep 17 00:00:00 2001 From: Eugen Ciur Date: Tue, 20 Feb 2024 06:45:05 +0100 Subject: [PATCH] implement --delete option (#34) --- CHANGELOG.md | 7 +++++++ papermerge_cli/lib/importer.py | 28 ++++++++++++++++++++++++++-- papermerge_cli/main.py | 23 ++++++++++++++--------- papermerge_cli/schema/paginator.py | 4 ++-- pyproject.toml | 2 +- 5 files changed, 50 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d84f83..2322390 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,13 @@ can be found in [changelog.d folder](https://github.com/papermerge/papermerge-cl +## 0.7.1 - 2024-02-20 + +### Fixed + +- papermerge-cli import option --delete without any function [Issue#592](https://github.com/ciur/papermerge/issues/592) + + ## 0.7.0 - 2023-12-22 - pydantic dependency upgraded from 1.x to v2.5 diff --git a/papermerge_cli/lib/importer.py b/papermerge_cli/lib/importer.py index 9604b5e..06e3257 100644 --- a/papermerge_cli/lib/importer.py +++ b/papermerge_cli/lib/importer.py @@ -1,15 +1,20 @@ import os from pathlib import Path +from rich.console import Console + from papermerge_cli.rest import create_folder, get_me, upload_document from papermerge_cli.schema import Folder, User +console = Console() + def upload_file_or_folder( host: str, token: str, file_or_folder: Path, - parent_id=None + parent_id=None, + delete: bool = False ) -> None: user: User = get_me(host=host, token=token) @@ -24,6 +29,9 @@ def upload_file_or_folder( file_path=file_or_folder, parent_id=parent_id ) + if delete: + remove(file_or_folder) + return for entry in os.scandir(file_or_folder): @@ -34,6 +42,9 @@ def upload_file_or_folder( file_path=Path(entry.path), parent_id=parent_id ) + + if delete: + remove(Path(entry.path)) else: folder_title = Path(entry.path).name @@ -47,5 +58,18 @@ def upload_file_or_folder( host=host, token=token, parent_id=folder.id, - file_or_folder=Path(entry.path) + file_or_folder=Path(entry.path), + delete=delete ) + if delete: + remove(Path(entry.path)) + + +def remove(path: Path): + try: + if path.is_file(): + os.remove(path) + else: + os.rmdir(path) + except IOError: + console.print(f"Error while removing {path}", style="red") diff --git a/papermerge_cli/main.py b/papermerge_cli/main.py index 28ff437..84e69bb 100644 --- a/papermerge_cli/main.py +++ b/papermerge_cli/main.py @@ -151,6 +151,7 @@ def import_command( token=ctx.obj['TOKEN'], file_or_folder=Path(file_or_folder), parent_id=target_id, + delete=delete ) except Exception as ex: console.print(ex) @@ -170,15 +171,19 @@ def list_nodes_command( If in case no specific node is requested - will list content of the user's home folder """ - data: Paginator[Node] = list_nodes( - host=ctx.obj['HOST'], - token=ctx.obj['TOKEN'], - inbox=inbox, - parent_id=parent_id, - page_number=page_number, - page_size=page_size, - order_by=order_by - ) + try: + data: Paginator[Node] = list_nodes( + host=ctx.obj['HOST'], + token=ctx.obj['TOKEN'], + inbox=inbox, + parent_id=parent_id, + page_number=page_number, + page_size=page_size, + order_by=order_by + ) + except Exception as ex: + console.print(ex, style="red") + return output: Table = format_nodes.list_nodes(data) if len(output.rows): diff --git a/papermerge_cli/schema/paginator.py b/papermerge_cli/schema/paginator.py index dbc7dd9..fb1c86a 100644 --- a/papermerge_cli/schema/paginator.py +++ b/papermerge_cli/schema/paginator.py @@ -1,12 +1,12 @@ from collections.abc import Sequence from typing import Generic, TypeVar -from pydantic.generics import GenericModel +from pydantic import BaseModel T = TypeVar('T') -class Paginator(GenericModel, Generic[T]): +class Paginator(BaseModel, Generic[T]): page_size: int page_number: int num_pages: int diff --git a/pyproject.toml b/pyproject.toml index 9766342..031d619 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "papermerge-cli" -version = "0.7.0" +version = "0.7.1" description = "Command line utility for your Papermerge DMS instance" authors = ["Eugen Ciur "] license = "Apache 2.0"