From eeb9cb53fb4217e429d2f1fede1edbbd9edc463c Mon Sep 17 00:00:00 2001
From: Maximilian Moser <maximilian.moser@tuwien.ac.at>
Date: Wed, 4 Sep 2024 15:01:50 +0200
Subject: [PATCH] Remove the filter for owners in the drafts search
* removing this filter shows all drafts where the current user has
access to rather than just their own drafts
* e.g. if a draft has been shared with a user, the recipient will now
see them in their dashboard as well
* as a side effect, administrators will likely have all the drafts
listed in their dashboard
---
invenio_config_tuw/ext.py | 13 +++++++++++++
setup.cfg | 5 ++++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/invenio_config_tuw/ext.py b/invenio_config_tuw/ext.py
index fd7789b..00e9ca7 100644
--- a/invenio_config_tuw/ext.py
+++ b/invenio_config_tuw/ext.py
@@ -10,6 +10,7 @@
from flask.config import Config
from flask_minify import Minify
from flask_security.signals import user_registered
+from invenio_rdm_records.services.search_params import MyDraftsParam
from . import config
from .auth.utils import auto_trust_user
@@ -44,6 +45,18 @@ def auto_trust_new_user(sender, user, **kwargs):
auto_trust_user(user)
+def override_search_drafts_options(app):
+ """Override the "search drafts" options to show all accessible drafts."""
+ # doing this via config is (currently) not possible, as the `search_drafts`
+ # property can't be overridden with a config item (unlike `search`, above it)
+ # cf. https://github.com/inveniosoftware/invenio-rdm-records/blob/maint-10.x/invenio_rdm_records/services/config.py#L327-L332
+ try:
+ service = app.extensions["invenio-rdm-records"].records_service
+ service.config.search_drafts.params_interpreters_cls.remove(MyDraftsParam)
+ except ValueError:
+ pass
+
+
class InvenioConfigTUW(object):
"""Invenio-Config-TUW extension."""
diff --git a/setup.cfg b/setup.cfg
index 78f0f42..004a0dd 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -64,7 +64,10 @@ invenio_base.apps =
invenio_base.api_apps =
invenio_config_tuw = invenio_config_tuw:InvenioConfigTUW
invenio_base.finalize_app =
- invenio_config_tuw = invenio_config_tuw.mappings:override_mappings
+ invenio_config_tuw_mappings = invenio_config_tuw.mappings:override_mappings
+ invenio_config_tuw_search_drafts = invenio_config_tuw.ext:override_search_drafts_options
+invenio_base.api_finalize_app =
+ invenio_config_tuw_search_drafts = invenio_config_tuw.ext:override_search_drafts_options
invenio_base.blueprints =
invenio_config_tuw_hacks = invenio_config_tuw.startup:blueprint
invenio_config_tuw_settings = invenio_config_tuw.startup:create_curation_settings_blueprint
--
GitLab