diff --git a/invenio_utilities_tuw/cli/drafts.py b/invenio_utilities_tuw/cli/drafts.py index df940fc0e5a80930758a153506b21ef55a515c0f..393b9d8c19d9e224acfab6d0e5bb1545bf405e90 100644 --- a/invenio_utilities_tuw/cli/drafts.py +++ b/invenio_utilities_tuw/cli/drafts.py @@ -447,6 +447,20 @@ def verify_files(pid, pid_type): sys.exit(1) +@files.command("fix-state") +@option_pid_value +@option_pid_type +@with_appcontext +def fix_state(pid, pid_type): + """Fix the draft's file manager state and lock the bucket.""" + recid = convert_to_recid(pid, pid_type) + draft = service.read_draft(id_=recid, identity=system_identity)._record + draft.files.lock() + draft.files.enabled = bool(draft.files.entries) + draft.commit() + db.session.commit() + + @drafts.command("list-stale") @click.option( "--days", diff --git a/invenio_utilities_tuw/cli/records.py b/invenio_utilities_tuw/cli/records.py index 69978b3a30722331a3f5ffbb8f89e16063be55db..143f56e94d2e15eab12fc0be5638492e530e5158 100644 --- a/invenio_utilities_tuw/cli/records.py +++ b/invenio_utilities_tuw/cli/records.py @@ -13,6 +13,7 @@ import sys import click from flask.cli import with_appcontext +from invenio_access.permissions import system_identity from invenio_db import db from invenio_rdm_records.proxies import current_rdm_records_service as service from invenio_records_resources.services.errors import PermissionDeniedError @@ -229,6 +230,20 @@ def verify_files(pid, pid_type, user): sys.exit(1) +@files.command("fix-state") +@option_pid_value +@option_pid_type +@with_appcontext +def fix_state(pid, pid_type): + """Fix the record's file manager state and lock the bucket.""" + recid = convert_to_recid(pid, pid_type) + record = service.read(id_=recid, identity=system_identity)._record + record.files.lock() + record.files.enabled = bool(record.files.entries) + record.commit() + db.session.commit() + + @records.command("reindex") @option_pid_values @option_pid_type