From b460fff91524597bf6bd61d1a3487b2ed5ece6c6 Mon Sep 17 00:00:00 2001
From: Maximilian Moser <maximilian.moser@tuwien.ac.at>
Date: Mon, 17 Mar 2025 11:14:22 +0100
Subject: [PATCH] Send notification about started review to other reviewers

* so that reviewers know that somebody has started looking at the record
  and can remove it from their (mental) TODO list
---
 invenio_config_tuw/config.py             |  4 ++++
 invenio_config_tuw/curations/__init__.py |  2 ++
 invenio_config_tuw/curations/requests.py | 18 ++++++++++++++++++
 3 files changed, 24 insertions(+)

diff --git a/invenio_config_tuw/config.py b/invenio_config_tuw/config.py
index b913ac4..6c092cc 100644
--- a/invenio_config_tuw/config.py
+++ b/invenio_config_tuw/config.py
@@ -24,6 +24,9 @@ from invenio_i18n import gettext as _
 from invenio_oauthclient.views.client import auto_redirect_login
 
 from .auth import TUWSSOSettingsHelper
+from .curations import (
+    TUWCurationRequestReviewNotificationBuilder as TUWReviewNotifBuilder,
+)
 from .curations import (
     TUWCurationRequestUploaderResubmitNotificationBuilder as TUWUploaderResubmitNotifBuilder,
 )
@@ -330,6 +333,7 @@ MAX_CONTENT_LENGTH = 100 * (1024**2)
 NOTIFICATIONS_BUILDERS = {
     **NOTIFICATIONS_BUILDERS,
     **CURATIONS_NOTIFICATIONS_BUILDERS,
+    TUWReviewNotifBuilder.type: TUWReviewNotifBuilder,
     TUWUploaderResubmitNotifBuilder.type: TUWUploaderResubmitNotifBuilder,
     UserNotificationBuilder.type: UserNotificationBuilder,
     GroupNotificationBuilder.type: GroupNotificationBuilder,
diff --git a/invenio_config_tuw/curations/__init__.py b/invenio_config_tuw/curations/__init__.py
index 1923bf4..244db8f 100644
--- a/invenio_config_tuw/curations/__init__.py
+++ b/invenio_config_tuw/curations/__init__.py
@@ -9,10 +9,12 @@
 
 from .requests import (
     TUWCurationRequest,
+    TUWCurationRequestReviewNotificationBuilder,
     TUWCurationRequestUploaderResubmitNotificationBuilder,
 )
 
 __all__ = (
     "TUWCurationRequest",
+    "TUWCurationRequestReviewNotificationBuilder",
     "TUWCurationRequestUploaderResubmitNotificationBuilder",
 )
diff --git a/invenio_config_tuw/curations/requests.py b/invenio_config_tuw/curations/requests.py
index 5e3d3c3..abc0625 100644
--- a/invenio_config_tuw/curations/requests.py
+++ b/invenio_config_tuw/curations/requests.py
@@ -9,7 +9,9 @@
 
 from invenio_curations.notifications.builders import (
     CurationRequestActionNotificationBuilder,
+    CurationRequestReviewNotificationBuilder,
 )
+from invenio_curations.notifications.generators import GroupMembersRecipient
 from invenio_curations.requests.curation import (
     CurationCreateAndSubmitAction,
     CurationRequest,
@@ -17,6 +19,7 @@ from invenio_curations.requests.curation import (
     CurationSubmitAction,
 )
 from invenio_notifications.services.uow import NotificationOp
+from invenio_requests.notifications.filters import UserRecipientFilter
 from invenio_users_resources.notifications.filters import UserPreferencesRecipientFilter
 from invenio_users_resources.notifications.generators import UserRecipient
 
@@ -34,6 +37,21 @@ class TUWCurationRequestUploaderResubmitNotificationBuilder(
     recipient_filters = [UserPreferencesRecipientFilter()]
 
 
+class TUWCurationRequestReviewNotificationBuilder(
+    CurationRequestReviewNotificationBuilder
+):
+    """Notification builder for review action."""
+
+    recipients = [
+        UserRecipient("request.created_by"),
+        GroupMembersRecipient("request.receiver"),
+    ]
+    recipient_filters = [
+        UserPreferencesRecipientFilter(),
+        UserRecipientFilter("executing_user"),
+    ]
+
+
 class TUWCurationResubmitAction(CurationResubmitAction):
     """Notify both uploader and reviewer on resubmit, and auto-review."""
 
-- 
GitLab