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