diff --git a/invenio_utilities_tuw/cli/drafts.py b/invenio_utilities_tuw/cli/drafts.py index 3d7e840439d224e00845f1271ec89a3a2835fdc0..993c65cc9af8697d292758ea9c1beb30c06c2b8a 100644 --- a/invenio_utilities_tuw/cli/drafts.py +++ b/invenio_utilities_tuw/cli/drafts.py @@ -17,6 +17,7 @@ import click from flask.cli import with_appcontext from invenio_access.permissions import system_identity from invenio_db import db +from invenio_records_resources.services.errors import PermissionDeniedError from ..utils import get_identity_for_user, get_record_service, get_user_by_identifier from .options import ( @@ -67,7 +68,7 @@ def list_drafts(user): num_files = "no" click.secho(f"{recid}\t{num_files} files\t{title}", fg="green") - except: + except PermissionDeniedError: pass @@ -111,7 +112,7 @@ def create_draft(metadata_path, publish, user, owners, vanity_pid): metadata_file_path = join(metadata_path, "metadata.json") deposit_files_path = join(metadata_path, "files") if not isfile(metadata_file_path): - raise Exception("metadata file does not exist: %s" % metadata_file_path) + raise FileNotFoundError(metadata_file_path) metadata = read_metadata(metadata_file_path) draft = create_record_from_metadata(metadata, identity) @@ -143,7 +144,7 @@ def create_draft(metadata_path, publish, user, owners, vanity_pid): file_service.commit_file(id_=recid, file_key=fn, identity=identity) else: - raise Exception("neither a file nor a directory: %s" % metadata_path) + raise TypeError(f"neither a file nor a directory: {metadata_path}") if owners: owners = [get_user_by_identifier(owner) for owner in owners] diff --git a/invenio_utilities_tuw/cli/files.py b/invenio_utilities_tuw/cli/files.py index 258d5f6b9765bef4e25fb3f9e69a197c0ddcb6fe..f85541bb1b85f1514b90a041b036d03ccd89e0cb 100644 --- a/invenio_utilities_tuw/cli/files.py +++ b/invenio_utilities_tuw/cli/files.py @@ -142,8 +142,11 @@ def hard_delete_files(pid, pid_type): fi.delete() storage.delete() click.secho("{}\t{}".format(key, fi.uri), fg="red") - except: - click.secho("cannot delete file: %s" % fi.uri, fg="yellow") + + except Exception as error: + click.secho( + f"cannot delete file '{fi.uri}': {error}", fg="yellow", err=True + ) db.session.commit() diff --git a/invenio_utilities_tuw/cli/records.py b/invenio_utilities_tuw/cli/records.py index 65e93b593cb90a556afbc8f7011c2e534dd5c910..6fbbcb8cb26c1b094485cf76c349b23cccd827d6 100644 --- a/invenio_utilities_tuw/cli/records.py +++ b/invenio_utilities_tuw/cli/records.py @@ -14,6 +14,7 @@ import sys import click from flask.cli import with_appcontext from invenio_db import db +from invenio_records_resources.services.errors import PermissionDeniedError from ..utils import get_identity_for_user, get_record_service, get_user_by_identifier from .options import ( @@ -60,7 +61,7 @@ def list_records(user): num_files = "no" click.secho(f"{recid}\t{num_files} files\t{title}", fg="green") - except: + except PermissionDeniedError: pass diff --git a/invenio_utilities_tuw/cli/utils.py b/invenio_utilities_tuw/cli/utils.py index 041ef6656483bbce297ba9783fe6fde75fc31436..686a7206531e7ccdaafd1341dba5813e68fab85f 100644 --- a/invenio_utilities_tuw/cli/utils.py +++ b/invenio_utilities_tuw/cli/utils.py @@ -11,6 +11,7 @@ import json from invenio_db import db +from invenio_pidstore.errors import PIDAlreadyExists from invenio_pidstore.models import PersistentIdentifier from ..utils import get_record_service @@ -23,7 +24,7 @@ def read_metadata(metadata_file_path): metadata = json.load(metadata_file) if metadata is None: - raise Exception("not a valid json file: %s" % metadata_file_path) + raise TypeError(f"not a valid json file: {metadata_file_path}") return metadata @@ -41,9 +42,7 @@ def create_record_from_metadata( ).count() if count > 0: - raise Exception( - "PID '{}:{}' is already taken".format(vanity_pid_type, vanity_pid) - ) + raise PIDAlreadyExists(pid_type=vanity_pid_type, pid_value=vanity_pid) draft = service.create(identity=identity, data=metadata)._record