diff --git a/invenio_config_tuw/config.py b/invenio_config_tuw/config.py
index f79742cb8d990f203ad07ca7fe065fb32ba40782..b1ca510cc73d341ae6e41788b2479dd3b045e868 100644
--- a/invenio_config_tuw/config.py
+++ b/invenio_config_tuw/config.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
-# Copyright (C) 2020-2024 TU Wien.
+# Copyright (C) 2020-2025 TU Wien.
#
# Invenio-Config-TUW is free software; you can redistribute it and/or modify
# it under the terms of the MIT License; see LICENSE file for more details.
@@ -18,6 +18,9 @@ from invenio_oauthclient.views.client import auto_redirect_login
from invenio_rdm_records.config import RDM_RECORDS_REVIEWS
from .auth import TUWSSOSettingsHelper
+from .notifications import (
+ TUWCurationRequestUploaderResubmitNotificationBuilder as TUWUploaderResubmitNotifBuilder,
+)
from .permissions import (
TUWCommunityPermissionPolicy,
TUWRecordPermissionPolicy,
@@ -281,6 +284,7 @@ MAX_CONTENT_LENGTH = 100 * (1024**2)
NOTIFICATIONS_BUILDERS = {
**NOTIFICATIONS_BUILDERS,
**CURATIONS_NOTIFICATIONS_BUILDERS,
+ TUWUploaderResubmitNotifBuilder.type: TUWUploaderResubmitNotifBuilder,
}
CURATIONS_MODERATION_ROLE = "reviewer"
diff --git a/invenio_config_tuw/notifications.py b/invenio_config_tuw/notifications.py
new file mode 100644
index 0000000000000000000000000000000000000000..704a1064b2840cb2180aeb34b42c37bb05e52dc3
--- /dev/null
+++ b/invenio_config_tuw/notifications.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2024-2025 TU Wien.
+#
+# Invenio-Config-TUW is free software; you can redistribute it and/or modify
+# it under the terms of the MIT License; see LICENSE file for more details.
+
+"""Overrides for notification builders from Invenio-Notifications."""
+
+from invenio_curations.notifications.builders import (
+ CurationRequestActionNotificationBuilder,
+)
+from invenio_curations.requests.curation import CurationRequest, CurationResubmitAction
+from invenio_notifications.services.uow import NotificationOp
+from invenio_users_resources.notifications.filters import UserPreferencesRecipientFilter
+from invenio_users_resources.notifications.generators import UserRecipient
+
+
+class TUWCurationRequestUploaderResubmitNotificationBuilder(
+ CurationRequestActionNotificationBuilder
+):
+ """Notification builder for the request creator on resubmit."""
+
+ type = f"{CurationRequestActionNotificationBuilder.type}.resubmit-creator"
+ recipients = [UserRecipient("request.created_by")]
+ recipient_filters = [UserPreferencesRecipientFilter()]
+
+
+class TUWCurationResubmitAction(CurationResubmitAction):
+ """Notify both uploader and reviewer on resubmit."""
+
+ def execute(self, identity, uow):
+ """Notify uploader when the record gets resubmitted for review."""
+ uow.register(
+ NotificationOp(
+ TUWCurationRequestUploaderResubmitNotificationBuilder.build(
+ identity=identity, request=self.request
+ )
+ )
+ )
+ return super().execute(identity, uow)
+
+
+class TUWCurationRequest(CurationRequest):
+ """Customized curation request class with modified resubmit action."""
+
+ available_actions = {
+ **CurationRequest.available_actions,
+ "resubmit": TUWCurationResubmitAction,
+ }
diff --git a/invenio_config_tuw/startup.py b/invenio_config_tuw/startup.py
index 0ff1773286b3f3c7d436a15c7b307e7e60b0ec04..32960e7478d25ef8aec19c15f5250dcf820c72f9 100644
--- a/invenio_config_tuw/startup.py
+++ b/invenio_config_tuw/startup.py
@@ -17,8 +17,10 @@ from logging import ERROR
from logging.handlers import SMTPHandler
from invenio_rdm_records.services.search_params import MyDraftsParam
+from invenio_requests.proxies import current_request_type_registry
from .logs import DetailedFormatter
+from .notifications import TUWCurationRequest
def register_smtp_error_handler(app):
@@ -99,3 +101,8 @@ def register_menu_entries(app):
'<i class="file icon"></i> Curation',
order=1,
)
+
+
+def customize_curation_request_type(app):
+ """Override the rdm-curations request type with our own version."""
+ current_request_type_registry.register_type(TUWCurationRequest(), force=True)
diff --git a/pyproject.toml b/pyproject.toml
index a4c5a063b063f1b8073da774e26eb539cc1b9f60..5fca16fc0c478e397bc4d75556f3639465a4ed13 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -80,10 +80,12 @@ invenio_config_tuw_settings = "invenio_config_tuw.users.views:user_settings_blue
invenio_config_tuw_mail_handler = "invenio_config_tuw.startup:register_smtp_error_handler"
invenio_config_tuw_search_drafts = "invenio_config_tuw.startup:override_search_drafts_options"
invenio_config_tuw_curation_settings = "invenio_config_tuw.startup:register_menu_entries"
+invenio_config_tuw_curation_request = "invenio_config_tuw.startup:customize_curation_request_type"
[project.entry-points."invenio_base.api_finalize_app"]
invenio_config_tuw_mail_handler = "invenio_config_tuw.startup:register_smtp_error_handler"
invenio_config_tuw_search_drafts = "invenio_config_tuw.startup:override_search_drafts_options"
+invenio_config_tuw_curation_request = "invenio_config_tuw.startup:customize_curation_request_type"
[project.entry-points."invenio_celery.tasks"]
invenio_config_tuw = "invenio_config_tuw.tasks"