From eaeea6f07c58cbe50257f691b1b6df259e6e23f0 Mon Sep 17 00:00:00 2001 From: Maximilian Moser <maximilian.moser@tuwien.ac.at> Date: Mon, 10 Mar 2025 23:03:26 +0100 Subject: [PATCH] Implement "files fix-state" command for drafts and records --- invenio_utilities_tuw/cli/drafts.py | 14 ++++++++++++++ invenio_utilities_tuw/cli/records.py | 15 +++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/invenio_utilities_tuw/cli/drafts.py b/invenio_utilities_tuw/cli/drafts.py index df940fc..393b9d8 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 69978b3..143f56e 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 -- GitLab