invenio-app-rdm 14.0.0b2.dev4__py2.py3-none-any.whl → 14.0.0b3.dev1__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. invenio_app_rdm/__init__.py +1 -1
  2. invenio_app_rdm/administration/moderation/requests.py +1 -1
  3. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests_details.html +3 -1
  4. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html +3 -0
  5. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html +0 -3
  6. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/manage_menu.html +2 -0
  7. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/detail.html +3 -2
  8. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/tombstone.html +6 -1
  9. invenio_app_rdm/records_ui/utils.py +73 -2
  10. invenio_app_rdm/records_ui/views/decorators.py +1 -5
  11. invenio_app_rdm/records_ui/views/deposits.py +19 -43
  12. invenio_app_rdm/records_ui/views/records.py +13 -37
  13. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/file-modification/index.html +88 -0
  14. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/record-deletion/index.html +3 -1
  15. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchResultItem.js +2 -4
  16. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/FileModificationUntil.js +45 -0
  17. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionModal.js +23 -25
  18. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion.js +2 -2
  19. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js +26 -3
  20. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/index.js +1 -0
  21. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageButton.js +9 -28
  22. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js +8 -1
  23. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/index.js +3 -0
  24. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides +1 -1
  25. invenio_app_rdm/upgrade_scripts/migrate_13_0_to_14_0.py +0 -2
  26. {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/METADATA +26 -2
  27. {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/RECORD +31 -30
  28. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/mapping.js +0 -12
  29. {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/WHEEL +0 -0
  30. {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/entry_points.txt +0 -0
  31. {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/licenses/LICENSE +0 -0
  32. {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/top_level.txt +0 -0
@@ -17,6 +17,6 @@
17
17
  #
18
18
  # See PEP 0440 for details - https://www.python.org/dev/peps/pep-0440
19
19
 
20
- __version__ = "14.0.0b2.dev4"
20
+ __version__ = "14.0.0b3.dev1"
21
21
 
22
22
  __all__ = ("__version__",)
@@ -51,7 +51,7 @@ class ModerationRequestListView(AdminResourceListView):
51
51
  search_sort_config_name = "APP_RDM_MODERATION_REQUEST_SORT_OPTIONS"
52
52
 
53
53
  item_field_list = {
54
- "type": {"text": _("Type"), "order": 1, "width": 3},
54
+ "title": {"text": _("Title"), "order": 1, "width": 3},
55
55
  "created": {"text": _("Created"), "order": 2, "width": 3},
56
56
  "last_reply": {"text": _("Last reply"), "order": 3, "width": 3},
57
57
  }
@@ -31,7 +31,9 @@ under the terms of the MIT License; see LICENSE file for more details.
31
31
 
32
32
  <div class="twelve wide column mt-10">
33
33
  <p><strong>{{ _("Reason:") }}</strong> {{ invenio_request["payload"]["reason_label"] }}</p>
34
- <p><strong>{{ _("Justification:") }}</strong> {{ invenio_request["payload"]["comment"] }}</p>
34
+ {%- if invenio_request["payload"]["comment"] %}
35
+ <p><strong>{{ _("Justification:") }}</strong> {{ invenio_request["payload"]["comment"] }}</p>
36
+ {%- endif %}
35
37
  </div>
36
38
 
37
39
  <div class="ui divider"></div>
@@ -51,6 +51,9 @@
51
51
  {% if record_deletion %}
52
52
  <input type="hidden" name="deposits-record-deletion" value='{{ record_deletion | tojson }}'>
53
53
  {% endif %}
54
+ {% if file_modification %}
55
+ <input type="hidden" name="deposits-file-modification" value='{{ file_modification | tojson }}'>
56
+ {% endif %}
54
57
  <input type="hidden" name="config-groups-enabled"
55
58
  value='{{ config.USERS_RESOURCES_GROUPS_ENABLED | tojson }}'>
56
59
  <input type="hidden" name="records-resources-allow-empty-files"
@@ -206,9 +206,6 @@
206
206
  <div id="recordManagementMobile"
207
207
  role="dialog"
208
208
  class="ui flowing popup transition hidden"
209
- data-record='{{ record_ui | tojson }}'
210
- data-permissions='{{ permissions | tojson }}'
211
- data-is-draft="{{ is_draft | tojson }}"
212
209
  {% if config.RDM_DETAIL_SIDE_BAR_MANAGE_ATTRIBUTES_EXTENSION_TEMPLATE %}
213
210
  {% include config.RDM_DETAIL_SIDE_BAR_MANAGE_ATTRIBUTES_EXTENSION_TEMPLATE %}
214
211
  {% endif %}
@@ -20,8 +20,10 @@ it under the terms of the MIT License; see LICENSE file for more details.
20
20
  data-groups-enabled='{{ config.USERS_RESOURCES_GROUPS_ENABLED | tojson }}'
21
21
  {% if record_deletion %}
22
22
  data-record-deletion='{{ record_deletion | tojson }}'
23
+ data-record-deletion-options='{{ record_deletion_options | tojson }}'
23
24
  {% else %}
24
25
  data-record-deletion='{{ {} | tojson }}'
26
+ data-record-deletion-options='{{ [] | tojson }}'
25
27
  {% endif %}
26
28
  {% if config.RDM_DETAIL_SIDE_BAR_MANAGE_ATTRIBUTES_EXTENSION_TEMPLATE %}
27
29
  {% include config.RDM_DETAIL_SIDE_BAR_MANAGE_ATTRIBUTES_EXTENSION_TEMPLATE %}
@@ -73,12 +73,13 @@
73
73
  {{ '(' ~ add_description.lang.title_l10n ~ ')' if add_description.lang is defined else '' }}
74
74
  </span>
75
75
  </h2>
76
+ {# additional description data is being sanitized by marshmallow in the backend #}
76
77
  {% if desc_type_defined and add_description.type.id == "notes" %}
77
78
  <div class="ui message warning">
78
- {{ desc_text | sanitize_html() | safe }}
79
+ {{ desc_text | safe }}
79
80
  </div>
80
81
  {% else %}
81
- {{ desc_text | sanitize_html() | safe }}
82
+ {{ desc_text | safe }}
82
83
  {% endif %}
83
84
  </section>
84
85
  {% endfor %}
@@ -1,5 +1,5 @@
1
1
  {#
2
- Copyright (C) 2021 CERN.
2
+ Copyright (C) 2021-2025 CERN.
3
3
  Copyright (C) 2023 TU Wien.
4
4
 
5
5
  Invenio App RDM is free software; you can redistribute it and/or modify it
@@ -37,6 +37,11 @@
37
37
  <p>
38
38
  <strong>{{ _("Removed by:") }}</strong> {{ record.ui.tombstone.removed_by }}
39
39
  </p>
40
+ {%- if record.ui.tombstone.deletion_policy %}
41
+ <p>
42
+ <strong>{{ _("Deletion Policy:") }}</strong> {{ record.ui.tombstone.deletion_policy }}
43
+ </p>
44
+ {%- endif %}
40
45
  {%- if record.ui.tombstone.note %}
41
46
  <p>
42
47
  <strong>{{ _("Removal note:") }}</strong> {{ record.ui.tombstone.note }}
@@ -9,11 +9,17 @@
9
9
 
10
10
  """Utility functions."""
11
11
 
12
+ from datetime import datetime, timezone
12
13
  from itertools import chain
13
14
 
14
15
  from flask import current_app
15
16
  from invenio_access.permissions import system_identity
17
+ from invenio_rdm_records.records.api import RDMRecord
16
18
  from invenio_rdm_records.requests.record_deletion import RecordDeletion
19
+ from invenio_rdm_records.services.config import (
20
+ FileModificationPolicyEvaluator,
21
+ RDMRecordDeletionPolicy,
22
+ )
17
23
  from invenio_records.dictutils import dict_set
18
24
  from invenio_records.errors import MissingModelError
19
25
  from invenio_records_files.api import FileObject
@@ -95,7 +101,7 @@ def dump_external_resource(
95
101
 
96
102
 
97
103
  def get_existing_deletion_request(record_id):
98
- """Return existing open deletion requests for the record."""
104
+ """Return the self HTML link of the existing open deletion request for the record."""
99
105
  existing_requests = current_requests_service.search(
100
106
  system_identity,
101
107
  extra_filter=dsl.Q(
@@ -108,4 +114,69 @@ def get_existing_deletion_request(record_id):
108
114
  ),
109
115
  )
110
116
  if existing_requests.total > 0:
111
- return list(existing_requests)[0]
117
+ return list(existing_requests)[0]["links"]["self_html"]
118
+
119
+
120
+ def evaluate_record_deletion(record: RDMRecord, identity):
121
+ """Evaluate whether a given record can be deleted by an identity."""
122
+ rec_del = RDMRecordDeletionPolicy().evaluate(identity, record)
123
+
124
+ immediate, request = rec_del["immediate_deletion"], rec_del["request_deletion"]
125
+ rd_enabled = immediate.enabled or request.enabled
126
+ rd_valid_user = immediate.valid_user or request.valid_user
127
+ rd_allowed = immediate.allowed or request.allowed
128
+
129
+ if rd_allowed:
130
+ record_deletion = {
131
+ "enabled": rd_enabled,
132
+ "valid_user": rd_valid_user,
133
+ "allowed": rd_allowed,
134
+ "recordDeletion": rec_del,
135
+ "checklist": (
136
+ current_app.config["RDM_IMMEDIATE_RECORD_DELETION_CHECKLIST"]
137
+ if immediate.allowed
138
+ else current_app.config["RDM_REQUEST_RECORD_DELETION_CHECKLIST"]
139
+ ),
140
+ "context": {
141
+ "files": record.files.count,
142
+ "internalDoi": record.pids.get("doi", {}).get("provider") != "external",
143
+ },
144
+ }
145
+ else:
146
+ record_deletion = {
147
+ "enabled": rd_enabled,
148
+ "valid_user": rd_valid_user,
149
+ "allowed": rd_allowed,
150
+ }
151
+ record_deletion["existing_request"] = (
152
+ # We show existing requests to valid users (even if they are not allowed to delete a record anymore).
153
+ get_existing_deletion_request(record.pid.pid_value)
154
+ if rd_valid_user
155
+ else None
156
+ )
157
+
158
+ return record_deletion
159
+
160
+
161
+ def evaluate_file_modification(record, identity):
162
+ """Evaluate whether a given record file's can be edited by an identity."""
163
+ file_mod = FileModificationPolicyEvaluator().evaluate(identity, record)
164
+
165
+ file_mod = file_mod["immediate_file_modification"]
166
+
167
+ file_modification = {
168
+ "enabled": file_mod.enabled,
169
+ "valid_user": file_mod.valid_user,
170
+ "allowed": file_mod.allowed,
171
+ }
172
+
173
+ if file_mod.allowed:
174
+ file_modification["fileModification"] = file_mod
175
+ created = record.created.replace(tzinfo=timezone.utc)
176
+ modification_until = created + current_app.config.get(
177
+ "RDM_FILE_MODIFICATION_PERIOD"
178
+ )
179
+ days_until = (modification_until - datetime.now(timezone.utc)).days
180
+ file_modification["context"] = {"days_until": days_until}
181
+
182
+ return file_modification
@@ -81,11 +81,7 @@ def pass_draft(expand=False):
81
81
  expand=expand,
82
82
  )
83
83
  kwargs["draft"] = draft
84
- kwargs["files_locked"] = (
85
- record_service.config.lock_edit_published_files(
86
- record_service, g.identity, draft=draft, record=draft._record
87
- )
88
- )
84
+ kwargs["files_locked"] = draft._record.files.bucket.locked
89
85
  return f(**kwargs)
90
86
  except PIDDoesNotExistError:
91
87
  # Redirect to /records/:id because users are interchangeably
@@ -26,7 +26,6 @@ from invenio_i18n.ext import current_i18n
26
26
  from invenio_rdm_records.proxies import current_rdm_records
27
27
  from invenio_rdm_records.records.api import get_files_quota
28
28
  from invenio_rdm_records.resources.serializers import UIJSONSerializer
29
- from invenio_rdm_records.services.config import RDMRecordDeletionPolicy
30
29
  from invenio_rdm_records.services.schemas import RDMRecordSchema
31
30
  from invenio_rdm_records.services.schemas.utils import dump_empty
32
31
  from invenio_rdm_records.views import file_transfer_type
@@ -38,7 +37,11 @@ from invenio_vocabularies.records.models import VocabularyScheme
38
37
  from marshmallow_utils.fields.babel import gettext_from_dict
39
38
  from sqlalchemy.orm import load_only
40
39
 
41
- from ..utils import get_existing_deletion_request, set_default_value
40
+ from ..utils import (
41
+ evaluate_file_modification,
42
+ evaluate_record_deletion,
43
+ set_default_value,
44
+ )
42
45
  from .decorators import (
43
46
  no_cache_response,
44
47
  pass_draft,
@@ -314,12 +317,14 @@ class VocabulariesOptions:
314
317
  "related_identifiers", "RDM_RECORDS_RELATED_IDENTIFIERS_SCHEMES"
315
318
  )
316
319
 
317
- def removal_reasons(self):
318
- """Dump removal reasons vocabulary."""
319
- self._vocabularies["removal_reasons"] = self._dump_vocabulary_w_basic_fields(
320
- "removalreasons", extra_filter=dsl.Q("term", tags="deletion-request")
320
+ def deletion_request_removal_reasons(self):
321
+ """Dump deletion request removal reasons vocabulary."""
322
+ self._vocabularies["deletion_request_removal_reasons"] = (
323
+ self._dump_vocabulary_w_basic_fields(
324
+ "removalreasons", extra_filter=dsl.Q("term", tags="deletion-request")
325
+ )
321
326
  )
322
- return self._vocabularies["removal_reasons"]
327
+ return self._vocabularies["deletion_request_removal_reasons"]
323
328
 
324
329
  def dump(self):
325
330
  """Dump into dict."""
@@ -333,7 +338,7 @@ class VocabulariesOptions:
333
338
  self.subjects()
334
339
  self.identifiers()
335
340
  self.related_identifiers()
336
- self.removal_reasons()
341
+ self.deletion_request_removal_reasons()
337
342
  # We removed
338
343
  # vocabularies["relation_type"] = _dump_relation_types_vocabulary()
339
344
  return self._vocabularies
@@ -550,45 +555,15 @@ def deposit_edit(pid_value, draft=None, draft_files=None, files_locked=True):
550
555
  )
551
556
  published_record = ui_serializer.dump_obj(published_record_result.to_dict())
552
557
 
553
- rec_del = RDMRecordDeletionPolicy().evaluate(
554
- g.identity, published_record_result._record
555
- )
556
- immediate, request = rec_del["immediate_deletion"], rec_del["request_deletion"]
557
- rd_enabled = immediate.enabled or request.enabled
558
- rd_valid_user = (
559
- rec_del["immediate_deletion"].valid_user
560
- or rec_del["request_deletion"].valid_user
558
+ record_deletion = evaluate_record_deletion(
559
+ published_record_result._record, g.identity
561
560
  )
562
- rd_allowed = immediate.allowed or request.allowed
563
- existing_request = get_existing_deletion_request(record.get("id"))
564
-
565
- if rd_allowed:
566
- record_deletion = {
567
- "enabled": rd_enabled,
568
- "valid_user": rd_valid_user,
569
- "allowed": rd_allowed,
570
- "recordDeletion": rec_del,
571
- "checklist": (
572
- current_app.config["RDM_IMMEDIATE_RECORD_DELETION_CHECKLIST"]
573
- if immediate.allowed
574
- else current_app.config["RDM_REQUEST_RECORD_DELETION_CHECKLIST"]
575
- ),
576
- "context": {
577
- "files": draft._record.files.count,
578
- "internalDoi": draft._record.pids["doi"]["provider"] != "external",
579
- },
580
- }
581
- else:
582
- record_deletion = {
583
- "enabled": rd_enabled,
584
- "valid_user": rd_valid_user,
585
- "allowed": rd_allowed,
586
- }
587
- record_deletion["existing_request"] = (
588
- existing_request["links"]["self_html"] if existing_request else None
561
+ file_modification = evaluate_file_modification(
562
+ published_record_result._record, g.identity
589
563
  )
590
564
  else:
591
565
  record_deletion = {}
566
+ file_modification = {}
592
567
 
593
568
  community_ui = None
594
569
  community_theme = None
@@ -664,6 +639,7 @@ def deposit_edit(pid_value, draft=None, draft_files=None, files_locked=True):
664
639
  ]
665
640
  ),
666
641
  record_deletion=record_deletion,
642
+ file_modification=file_modification,
667
643
  )
668
644
 
669
645
 
@@ -29,7 +29,6 @@ from invenio_rdm_records.records.systemfields.access.access_settings import (
29
29
  AccessSettings,
30
30
  )
31
31
  from invenio_rdm_records.resources.serializers import UIJSONSerializer
32
- from invenio_rdm_records.services.config import RDMRecordDeletionPolicy
33
32
  from invenio_stats.proxies import current_stats
34
33
  from invenio_users_resources.proxies import current_user_resources
35
34
  from marshmallow import ValidationError
@@ -38,7 +37,7 @@ from invenio_app_rdm.records_ui.previewer.iiif_simple import (
38
37
  previewable_extensions as image_extensions,
39
38
  )
40
39
 
41
- from ..utils import get_existing_deletion_request, get_external_resources
40
+ from ..utils import evaluate_record_deletion, get_external_resources
42
41
  from .decorators import (
43
42
  add_signposting_content_resources,
44
43
  add_signposting_landing_page,
@@ -53,7 +52,11 @@ from .decorators import (
53
52
  pass_record_media_files,
54
53
  pass_record_or_draft,
55
54
  )
56
- from .deposits import get_user_communities_memberships, load_custom_fields
55
+ from .deposits import (
56
+ VocabulariesOptions,
57
+ get_user_communities_memberships,
58
+ load_custom_fields,
59
+ )
57
60
 
58
61
 
59
62
  def get_record_community(record):
@@ -158,41 +161,13 @@ def record_detail(
158
161
 
159
162
  record_ui = UIJSONSerializer().dump_obj(record.to_dict())
160
163
 
161
- rec_del = RDMRecordDeletionPolicy().evaluate(g.identity, record._record)
164
+ record_deletion = evaluate_record_deletion(record._record, g.identity)
162
165
 
163
- immediate, request = rec_del["immediate_deletion"], rec_del["request_deletion"]
164
- rd_enabled = immediate.enabled or request.enabled
165
- rd_valid_user = (
166
- rec_del["immediate_deletion"].valid_user
167
- or rec_del["request_deletion"].valid_user
168
- )
169
- rd_allowed = immediate.allowed or request.allowed
170
- existing_request = get_existing_deletion_request(record.id)
171
-
172
- if rd_allowed:
173
- record_deletion = {
174
- "enabled": rd_enabled,
175
- "valid_user": rd_valid_user,
176
- "allowed": rd_allowed,
177
- "recordDeletion": rec_del,
178
- "checklist": (
179
- current_app.config["RDM_IMMEDIATE_RECORD_DELETION_CHECKLIST"]
180
- if immediate.allowed
181
- else current_app.config["RDM_REQUEST_RECORD_DELETION_CHECKLIST"]
182
- ),
183
- "context": {
184
- "files": record._record.files.count,
185
- "internalDoi": record._record.pids["doi"]["provider"] != "external",
186
- },
187
- }
188
- else:
189
- record_deletion = {
190
- "enabled": rd_enabled,
191
- "valid_user": rd_valid_user,
192
- "allowed": rd_allowed,
193
- }
194
- record_deletion["existing_request"] = (
195
- existing_request["links"]["self_html"] if existing_request else None
166
+ # The deletion options are only needed if the user is allowed to delete the given record.
167
+ record_deletion_options = (
168
+ VocabulariesOptions().deletion_request_removal_reasons()
169
+ if record_deletion["allowed"]
170
+ else []
196
171
  )
197
172
 
198
173
  is_draft = record_ui["is_draft"]
@@ -295,6 +270,7 @@ def record_detail(
295
270
  external_resources=get_external_resources(record),
296
271
  user_avatar=avatar,
297
272
  record_deletion=record_deletion,
273
+ record_deletion_options=record_deletion_options,
298
274
  )
299
275
 
300
276
 
@@ -0,0 +1,88 @@
1
+ {# -*- coding: utf-8 -*-
2
+
3
+ This file is part of Invenio.
4
+ Copyright (C) 2016-2025 CERN.
5
+
6
+ Invenio is free software; you can redistribute it and/or modify it
7
+ under the terms of the MIT License; see LICENSE file for more details.
8
+ #}
9
+
10
+ {% extends "invenio_requests/details/index.html" %}
11
+
12
+ {% set active_dashboard_menu_item = 'requests' %}
13
+ {% set active_community_header_menu_item = 'requests' %}
14
+
15
+ {%- block request_header %}
16
+ {% set back_button_url = url_for("invenio_app_rdm_users.requests") %}
17
+ {% from "invenio_requests/macros/request_header.html" import inclusion_request_header %}
18
+ {{ inclusion_request_header(
19
+ request=invenio_request,
20
+ record=record,
21
+ accepted=request_is_accepted,
22
+ back_button_url=back_button_url,
23
+ back_button_text=_("Back to requests")
24
+ ) }}
25
+ {%- endblock request_header %}
26
+
27
+ {% block request_timeline %}
28
+ <div
29
+ class="ui container rdm-tab-container fluid rel-pt-2 ml-0-mobile mr-0-mobile"
30
+ id="request-request-deletion-tab-container"
31
+ >
32
+ <div
33
+ class="ui secondary pointing menu rdm-tab-menu"
34
+ id="request-deletion-request-tab"
35
+ >
36
+ <a
37
+ class="active item"
38
+ data-tab="conversation"
39
+ role="tab"
40
+ aria-selected="true"
41
+ aria-controls="conversation-tab-panel"
42
+ id="conversation-tab"
43
+ >
44
+ {{ _("Conversation") }}
45
+ </a>
46
+
47
+ {% if record_ui %}
48
+ <a
49
+ role="tab"
50
+ class="item"
51
+ data-tab="record"
52
+ aria-selected="false"
53
+ aria-controls="record-tab-panel"
54
+ id="record-tab"
55
+ >
56
+ {{ _("Record") }}
57
+ </a>
58
+ {% endif %}
59
+ </div>
60
+
61
+ <div
62
+ class="ui bottom attached tab segment active borderless p-0"
63
+ data-tab="conversation"
64
+ role="tabpanel"
65
+ aria-labelledby="conversation-tab"
66
+ id="conversation-tab-panel"
67
+ >
68
+ {{ super() }}
69
+ </div>
70
+
71
+ {# The record tab content needs to be last since the HTML structure is complex and breaks following tab contents #}
72
+ {% if record_ui %}
73
+ <div
74
+ class="ui bottom attached tab segment borderless"
75
+ data-tab="record"
76
+ role="tabpanel"
77
+ aria-labelledby="record-tab"
78
+ id="record-tab-panel"
79
+ hidden="hidden"
80
+ >
81
+ {% set use_theme_basic_template = false %}
82
+ {% set preview_submission_request = true %}
83
+ {% include config.APP_RDM_RECORD_LANDING_PAGE_TEMPLATE %}
84
+ </div>
85
+ {% endif %}
86
+
87
+ </div>
88
+ {% endblock request_timeline %}
@@ -25,7 +25,9 @@
25
25
 
26
26
  <div class="twelve wide column mt-10">
27
27
  <p><strong>{{ _("Reason:") }}</strong> {{ invenio_request["payload"]["reason_label"] }}</p>
28
- <p><strong>{{ _("Justification:") }}</strong> {{ invenio_request["payload"]["comment"] }}</p>
28
+ {%- if invenio_request["payload"]["comment"] %}
29
+ <p><strong>{{ _("Justification:") }}</strong> {{ invenio_request["payload"]["comment"] }}</p>
30
+ {%- endif %}
29
31
  </div>
30
32
  {%- endblock request_header %}
31
33
 
@@ -30,9 +30,7 @@ class SearchResultItemComponent extends Component {
30
30
  className="word-break-all"
31
31
  >
32
32
  <a href={AdminUIRoutes.detailsView(listUIEndpoint, result, idKeyPath)}>
33
- {/* TODO we need a better way to get the (translatable) label of a request type
34
- https://github.com/inveniosoftware/invenio-requests/issues/414 */}
35
- {result.type === "record-deletion" && "Record deletion"}
33
+ {result.title}
36
34
  </a>
37
35
  </Table.Cell>
38
36
  <Table.Cell
@@ -43,7 +41,7 @@ class SearchResultItemComponent extends Component {
43
41
  <UserListItemCompact
44
42
  user={result.expanded.created_by}
45
43
  id={result.created_by.user}
46
- // TODO linkToDetailView= filter by user?
44
+ linkToDetailView={`/administration/requests?q=created_by.user:${result.created_by.user}`}
47
45
  />
48
46
  {toRelativeTime(result.created)}
49
47
  </Table.Cell>
@@ -0,0 +1,45 @@
1
+ // This file is part of InvenioRDM
2
+ // Copyright (C) 2025 CERN.
3
+ //
4
+ // Invenio RDM Records is free software; you can redistribute it and/or modify it
5
+ // under the terms of the MIT License; see LICENSE file for more details.
6
+
7
+ import React, { Component } from "react";
8
+ import PropTypes from "prop-types";
9
+ import { i18next } from "@translations/invenio_app_rdm/i18next";
10
+
11
+ export class FileModificationUntil extends Component {
12
+ render() {
13
+ const { filesLocked, fileModification, record } = this.props;
14
+
15
+ if (!fileModification.fileModification?.enabled) {
16
+ return null;
17
+ }
18
+
19
+ const isPublished = record.is_published;
20
+ const filesUnlocked = !filesLocked;
21
+ const daysUntil = fileModification.context?.days_until;
22
+ if (isPublished && filesUnlocked && daysUntil) {
23
+ return (
24
+ <>
25
+ {" "}
26
+ {i18next.t("– Unlocked, {{ daysUntil }} days to publish changes", {
27
+ daysUntil: fileModification.context.days_until,
28
+ })}
29
+ </>
30
+ );
31
+ }
32
+
33
+ return null;
34
+ }
35
+ }
36
+
37
+ FileModificationUntil.propTypes = {
38
+ filesLocked: PropTypes.bool.isRequired,
39
+ fileModification: PropTypes.object,
40
+ record: PropTypes.object.isRequired,
41
+ };
42
+
43
+ FileModificationUntil.defaultProps = {
44
+ fileModification: {},
45
+ };
@@ -109,27 +109,27 @@ export class DeletionModal extends Component {
109
109
  reason: values.reason,
110
110
  comment: values.comment,
111
111
  };
112
- if ("request_deletion" in record.links) {
113
- this.cancellableAction = withCancel(
114
- http.post(record.links.request_deletion, payload)
115
- );
116
- try {
117
- const response = await this.cancellableAction.promise;
118
- const data = response.data;
112
+ if (!("request_deletion" in record.links)) {
113
+ this.setState({ error: "Could not submit deletion request", loading: false });
114
+ return;
115
+ }
116
+ this.cancellableAction = withCancel(
117
+ http.post(record.links.request_deletion, payload)
118
+ );
119
+ try {
120
+ const response = await this.cancellableAction.promise;
121
+ const data = response.data;
119
122
 
120
- if (response.status === 200) {
121
- window.location.reload();
122
- } else if (response.status === 201) {
123
- window.location.href = data.links.self_html;
124
- }
125
- } catch (error) {
126
- this.setState({ error: error });
127
- console.error(error);
128
- } finally {
129
- this.setState({ loading: false });
123
+ if (response.status === 200) {
124
+ window.location.reload();
125
+ } else if (response.status === 201) {
126
+ window.location.href = data.links.self_html;
130
127
  }
131
- } else {
132
- this.setState({ error: "Could not submit deletion request", loading: false });
128
+ } catch (error) {
129
+ this.setState({ error: error });
130
+ console.error(error);
131
+ } finally {
132
+ this.setState({ loading: false });
133
133
  }
134
134
  };
135
135
 
@@ -189,17 +189,15 @@ export class DeletionModal extends Component {
189
189
  {immediateDeletionAllowed ? (
190
190
  <p>
191
191
  {
192
- recordDeletion["recordDeletion"]["immediate_deletion"][
193
- "policy"
194
- ]["description"]
192
+ recordDeletion.recordDeletion?.immediate_deletion?.policy
193
+ ?.description
195
194
  }
196
195
  </p>
197
196
  ) : (
198
197
  <p>
199
198
  {
200
- recordDeletion["recordDeletion"]["request_deletion"]["policy"][
201
- "description"
202
- ]
199
+ recordDeletion.recordDeletion?.request_deletion?.policy
200
+ ?.description
203
201
  }
204
202
  </p>
205
203
  )}
@@ -33,7 +33,6 @@ export const RecordDeletion = ({
33
33
  fluid
34
34
  as="a"
35
35
  href={recordDeletion.existing_request}
36
- disabled={disabled}
37
36
  className="basic"
38
37
  color="red"
39
38
  aria-haspopup="dialog"
@@ -72,10 +71,11 @@ RecordDeletion.propTypes = {
72
71
  disabled: PropTypes.bool,
73
72
  record: PropTypes.object.isRequired,
74
73
  permissions: PropTypes.object.isRequired,
75
- recordDeletion: PropTypes.object.isRequired,
74
+ recordDeletion: PropTypes.object,
76
75
  options: PropTypes.array.isRequired,
77
76
  };
78
77
 
79
78
  RecordDeletion.defaultProps = {
80
79
  disabled: false,
80
+ recordDeletion: {},
81
81
  };
@@ -48,6 +48,7 @@ import { CopyrightsField } from "@js/invenio_rdm_records/src/deposit/fields/Copy
48
48
  import { ShareDraftButton } from "./ShareDraftButton";
49
49
  import { depositFormSectionsConfig, severityChecksConfig } from "./config";
50
50
  import { RecordDeletion } from "../components/RecordDeletion";
51
+ import { FileModificationUntil } from "../components/FileModificationUntil";
51
52
 
52
53
  export class RDMDepositForm extends Component {
53
54
  constructor(props) {
@@ -114,6 +115,7 @@ export class RDMDepositForm extends Component {
114
115
  recordRestrictionGracePeriod,
115
116
  allowRecordRestriction,
116
117
  recordDeletion,
118
+ fileModification,
117
119
  groupsEnabled,
118
120
  allowEmptyFiles,
119
121
  useUppy,
@@ -138,6 +140,7 @@ export class RDMDepositForm extends Component {
138
140
  recordRestrictionGracePeriod={recordRestrictionGracePeriod}
139
141
  allowRecordRestriction={allowRecordRestriction}
140
142
  recordDeletion={recordDeletion}
143
+ fileModification={fileModification}
141
144
  groupsEnabled={groupsEnabled}
142
145
  allowEmptyFiles={allowEmptyFiles}
143
146
  customFieldsUI={customFieldsUI}
@@ -181,12 +184,25 @@ export class RDMDepositForm extends Component {
181
184
  record={record}
182
185
  config={this.config}
183
186
  noFiles={this.noFiles}
187
+ fileModification={fileModification}
188
+ filesLocked={filesLocked}
184
189
  >
185
190
  <AccordionField
186
191
  includesPaths={this.sectionsConfig["files-section"]}
187
192
  severityChecks={this.severityChecks}
188
193
  active
189
- label={i18next.t("Files")}
194
+ label={
195
+ <>
196
+ {i18next.t("Files")}
197
+ {record.is_published && (
198
+ <FileModificationUntil
199
+ fileModification={fileModification}
200
+ filesLocked={filesLocked}
201
+ record={record}
202
+ />
203
+ )}
204
+ </>
205
+ }
190
206
  id="files-section"
191
207
  >
192
208
  {this.noFiles && record.is_published && (
@@ -210,6 +226,7 @@ export class RDMDepositForm extends Component {
210
226
  allowEmptyFiles={allowEmptyFiles}
211
227
  filesLocked={filesLocked}
212
228
  fileUploadConcurrency={config.fileUploadConcurrency}
229
+ fileModification={fileModification}
213
230
  />
214
231
  </Overridable>
215
232
  </AccordionField>
@@ -780,7 +797,10 @@ export class RDMDepositForm extends Component {
780
797
  record={record}
781
798
  permissions={permissions}
782
799
  recordDeletion={recordDeletion}
783
- options={this.vocabularies.metadata.removal_reasons}
800
+ options={
801
+ this.vocabularies.metadata
802
+ .deletion_request_removal_reasons
803
+ }
784
804
  disabled={!recordDeletion["allowed"]}
785
805
  />
786
806
  </Grid.Column>
@@ -806,7 +826,8 @@ RDMDepositForm.propTypes = {
806
826
  config: PropTypes.object.isRequired,
807
827
  recordRestrictionGracePeriod: PropTypes.number.isRequired,
808
828
  allowRecordRestriction: PropTypes.bool.isRequired,
809
- recordDeletion: PropTypes.object.isRequired,
829
+ recordDeletion: PropTypes.object,
830
+ fileModification: PropTypes.object,
810
831
  record: PropTypes.object.isRequired,
811
832
  preselectedCommunity: PropTypes.object,
812
833
  files: PropTypes.object,
@@ -823,4 +844,6 @@ RDMDepositForm.defaultProps = {
823
844
  filesLocked: false,
824
845
  allowEmptyFiles: true,
825
846
  useUppy: false,
847
+ recordDeletion: {},
848
+ fileModification: {},
826
849
  };
@@ -29,6 +29,7 @@ ReactDOM.render(
29
29
  )}
30
30
  allowRecordRestriction={getInputFromDOM("deposits-allow-record-restriction")}
31
31
  recordDeletion={getInputFromDOM("deposits-record-deletion")}
32
+ fileModification={getInputFromDOM("deposits-file-modification")}
32
33
  groupsEnabled={getInputFromDOM("config-groups-enabled")}
33
34
  allowEmptyFiles={getInputFromDOM("records-resources-allow-empty-files")}
34
35
  isDoiRequired={getInputFromDOM("deposits-is-doi-required")}
@@ -4,7 +4,7 @@
4
4
  // Invenio RDM Records is free software; you can redistribute it and/or modify it
5
5
  // under the terms of the MIT License; see LICENSE file for more details.
6
6
 
7
- import React, { useEffect, useState } from "react";
7
+ import React from "react";
8
8
  import { Dropdown, Modal, Button, Message } from "semantic-ui-react";
9
9
  import { i18next } from "@translations/invenio_app_rdm/i18next";
10
10
  import PropTypes from "prop-types";
@@ -12,37 +12,13 @@ import { http } from "react-invenio-forms";
12
12
  import { APIRoutes } from "../administration/users/api/routes";
13
13
  import { RecordDeletion } from "../components/RecordDeletion";
14
14
 
15
- const fetchOptions = async () => {
16
- const url = "/api/vocabularies/removalreasons?q=tags:deletion-request";
17
- const req = http.get(url);
18
- try {
19
- const response = await req;
20
- const data = response.data.hits.hits;
21
-
22
- const options = data.map((x) => {
23
- return {
24
- text: x["title_l10n"],
25
- value: x["id"],
26
- };
27
- });
28
- return options;
29
- } catch (e) {
30
- console.error(e);
31
- }
32
- };
33
-
34
15
  export const ManageButton = ({
35
16
  record,
36
17
  recordOwnerID,
37
18
  permissions,
38
19
  recordDeletion,
20
+ recordDeletionOptions,
39
21
  }) => {
40
- const [options, setOptions] = useState([]);
41
-
42
- useEffect(() => {
43
- fetchOptions().then(setOptions);
44
- }, []);
45
-
46
22
  return (
47
23
  <Dropdown
48
24
  fluid
@@ -61,7 +37,7 @@ export const ManageButton = ({
61
37
  record={record}
62
38
  permissions={permissions}
63
39
  recordDeletion={recordDeletion}
64
- options={options}
40
+ options={recordDeletionOptions}
65
41
  disabled={!recordDeletion["allowed"]}
66
42
  />
67
43
  </Dropdown.Item>
@@ -98,7 +74,12 @@ ManageButton.propTypes = {
98
74
  record: PropTypes.object.isRequired,
99
75
  recordOwnerID: PropTypes.string.isRequired,
100
76
  permissions: PropTypes.object.isRequired,
101
- recordDeletion: PropTypes.object.isRequired,
77
+ recordDeletion: PropTypes.object,
78
+ recordDeletionOptions: PropTypes.array.isRequired,
79
+ };
80
+
81
+ ManageButton.defaultProps = {
82
+ recordDeletion: {},
102
83
  };
103
84
 
104
85
  const BlockUserItem = ({ recordOwnerID }) => {
@@ -35,6 +35,7 @@ export class RecordManagement extends Component {
35
35
  recordOwnerID,
36
36
  groupsEnabled,
37
37
  recordDeletion,
38
+ recordDeletionOptions,
38
39
  } = this.props;
39
40
  const { error } = this.state;
40
41
  const { id: recid } = record;
@@ -52,6 +53,7 @@ export class RecordManagement extends Component {
52
53
  recordOwnerID={recordOwnerID}
53
54
  permissions={permissions}
54
55
  recordDeletion={recordDeletion}
56
+ recordDeletionOptions={recordDeletionOptions}
55
57
  />
56
58
  </Grid.Column>
57
59
  )}
@@ -126,5 +128,10 @@ RecordManagement.propTypes = {
126
128
  isPreviewSubmissionRequest: PropTypes.bool.isRequired,
127
129
  currentUserId: PropTypes.string.isRequired,
128
130
  recordOwnerID: PropTypes.string.isRequired,
129
- recordDeletion: PropTypes.object.isRequired,
131
+ recordDeletion: PropTypes.object,
132
+ recordDeletionOptions: PropTypes.array.isRequired,
133
+ };
134
+
135
+ RecordManagement.defaultProps = {
136
+ recordDeletion: {},
130
137
  };
@@ -40,6 +40,9 @@ function renderRecordManagement(element) {
40
40
  recordOwnerID={record.parent.access.owned_by.user}
41
41
  groupsEnabled={JSON.parse(recordManagementAppDiv.dataset.groupsEnabled)}
42
42
  recordDeletion={JSON.parse(recordManagementAppDiv.dataset.recordDeletion)}
43
+ recordDeletionOptions={JSON.parse(
44
+ recordManagementAppDiv.dataset.recordDeletionOptions
45
+ )}
43
46
  />
44
47
  </OverridableContext.Provider>,
45
48
  element
@@ -40,7 +40,7 @@ div.affiliations.accordion div.title button.down {
40
40
  &.invenio-accordion-field {
41
41
  margin-bottom: 2rem;
42
42
 
43
- .title {
43
+ .title:not(.ui) {
44
44
  background-color: @brandColor;
45
45
  color: @white;
46
46
  padding: 1em;
@@ -25,7 +25,6 @@ from invenio_access.permissions import system_identity
25
25
  from invenio_db import db
26
26
  from invenio_drafts_resources.resources.records.errors import DraftNotCreatedError
27
27
  from invenio_rdm_records.proxies import current_rdm_records_service as records_service
28
- from invenio_rdm_records.records.api import RDMDraft, RDMRecord
29
28
  from invenio_search.api import RecordsSearchV2
30
29
 
31
30
 
@@ -42,7 +41,6 @@ def run_upgrade(migrate_record, migrate_draft):
42
41
  # Handle published records
43
42
  published_records = (
44
43
  RecordsSearchV2(index=records_service.record_cls.index._name)
45
- .filter("term", deletion_status="P")
46
44
  .filter(
47
45
  "query_string",
48
46
  query="metadata.resource_type.id:publication-thesis OR metadata.related_identifiers.resource_type.id:publication-thesis",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invenio-app-rdm
3
- Version: 14.0.0b2.dev4
3
+ Version: 14.0.0b3.dev1
4
4
  Summary: Invenio Research Data Management.
5
5
  Home-page: https://github.com/inveniosoftware/invenio-app-rdm
6
6
  Author: CERN
@@ -27,7 +27,7 @@ Requires-Dist: invenio-theme<5.0.0,>=4.0.0
27
27
  Requires-Dist: invenio-access<5.0.0,>=4.0.0
28
28
  Requires-Dist: invenio-accounts<7.0.0,>=6.0.0
29
29
  Requires-Dist: invenio-oauth2server<4.0.0,>=3.0.0
30
- Requires-Dist: invenio-oauthclient<6.0.0,>=5.0.0
30
+ Requires-Dist: invenio-oauthclient<7.0.0,>=6.0.0
31
31
  Requires-Dist: invenio-userprofiles<5.0.0,>=4.0.0
32
32
  Requires-Dist: invenio-indexer<4.0.0,>=3.0.0
33
33
  Requires-Dist: invenio-jsonschemas<3.0.0,>=2.0.0
@@ -101,6 +101,30 @@ https://inveniordm.docs.cern.ch
101
101
  Changes
102
102
  =======
103
103
 
104
+ Version v14.0.0b3.dev1 (released 2025-11-21)
105
+
106
+ - UI: add info message about remaining days to publish changes
107
+ - request: add file mod request template
108
+ - fix: set files_locked to `bucket.locked` rather than permission
109
+ * currently the permission is whether you can unlock the files
110
+ * but the files are only unlocked when you create the draft
111
+ * as such as an admin when you edit a published draft, if it was
112
+ created by a user it will look like the files are unlocked but
113
+ this is false
114
+ - feat: pass file modification eval to deposit form
115
+ - fix: align selector with semantic-ui
116
+ - fix(views): pass API record to evaluate record deletion
117
+ - fix(record-ui): do not sanitize additional description in template
118
+ - admin: requests details view improvements
119
+ - Replace `Record deletion` by `Deletion request for "Record name"`
120
+ - Link showing all requests for a given user
121
+ - tombstone: add deletion policy
122
+ - Update release date for version v14.0.0b3.dev0
123
+
124
+ Version v14.0.0b3.dev0 (released 2025-11-12)
125
+
126
+ - setup: bump major version of `invenio-oauthclient`
127
+
104
128
  Version v14.0.0b2.dev4 (released 2025-11-05)
105
129
 
106
130
  - refactor(config): Update DataCite serializer for schema v4.5
@@ -1,4 +1,4 @@
1
- invenio_app_rdm/__init__.py,sha256=L-KTUnHxrn_j8CKdH8hLSeku3OQ1clYsbichPl_bebM,704
1
+ invenio_app_rdm/__init__.py,sha256=ivVR1rEDFM8KM_LG1nWhYGnT2cibOEPrvvhdy7xFAkA,704
2
2
  invenio_app_rdm/cli.py,sha256=G6QqNU2W6n6ICtTMnpeKFXIsdorncDmVXwwwsGH5F2k,2746
3
3
  invenio_app_rdm/config.py,sha256=pigyCXGUMru2krv-ZJ15iosbm3UBk9dmiAQauYvzWbk,53632
4
4
  invenio_app_rdm/ext.py,sha256=K7syn5CU5If7yOclFeNOCZX_u5q6VB7NJEQVm41mlng,5286
@@ -10,13 +10,13 @@ invenio_app_rdm/administration/audit_logs/audit_logs.py,sha256=6tZvqPKt54Hc8gL3L
10
10
  invenio_app_rdm/administration/domains/__init__.py,sha256=Qob5kqjRPxpuSE5yDV2tesN6tmaKp5JcxCxGA8Mrcak,487
11
11
  invenio_app_rdm/administration/domains/domains.py,sha256=vafLa-mqkg_tQLjx328E64P_4mksB5kjBlsfunvdatg,5599
12
12
  invenio_app_rdm/administration/moderation/__init__.py,sha256=5Jr_Kicz0xsybdyRr48amQDkLlalVbRz9Pq0zGrTqMg,404
13
- invenio_app_rdm/administration/moderation/requests.py,sha256=xzmhgGkWMMvKVaRzkDhQtwKCnjCzWMJjfCPtiiE81Rs,6262
13
+ invenio_app_rdm/administration/moderation/requests.py,sha256=tFa26P9hue2NIHw1HevWt_lm_8tD71X_yaAkPYt0TL4,6264
14
14
  invenio_app_rdm/administration/records/__init__.py,sha256=WpNHBm_Mk9FF8GzvrXWjL79URMSgBhpqgxvrLXNooqg,434
15
15
  invenio_app_rdm/administration/records/records.py,sha256=6nVyDwYLdipIDSnlXMRe6JuiIIo5CaVojeNJCOlTPjI,5371
16
16
  invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/audit_logs.html,sha256=kLP3lfZiwLB8N-78_xINymnD8TIjGMzeJIO1a1zO130,346
17
17
  invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/domains_search.html,sha256=NP8HPfOQPIR9psNDMFRXJH8fjok2AbXCentD_3Q1wWw,338
18
18
  invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests.html,sha256=kvM8b3m8p_yVJ0i1aCuNNj1-9KHJk4EsEI-Zxd8B2zo,340
19
- invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests_details.html,sha256=0eTICmdnDZEW6JeftRkiUV2N3v-Dha5RMh804c0DeQs,3102
19
+ invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests_details.html,sha256=PMUVAHU3Pqqlfz9YepNJXPn-6IGRmUfirkWeybKCplA,3185
20
20
  invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/user_moderation.html,sha256=koXd8lV_KBgAl1Wll7aM3xR0NgYcOl2PiFqD2Xkcp2w,348
21
21
  invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/user_moderation_details.html,sha256=g6YZh9yWqDfzd5kMgIrO4c5k4iKa61y04RsuT_ZbMJI,350
22
22
  invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/users_search.html,sha256=BtuBmQ3RqRZ-bzYWRsToC3m7ULd-T2vMCLSwrTLwWF8,337
@@ -47,17 +47,17 @@ invenio_app_rdm/fixtures/pages/.gitkeep,sha256=1HVs32jZTGcMkk-dV9RHGPZm5FdydwFIZ
47
47
  invenio_app_rdm/records_ui/__init__.py,sha256=c4_HH3R7fTOp7AnNQSF4P9h_mwOvL0SE9tkpo6SBnT8,327
48
48
  invenio_app_rdm/records_ui/searchapp.py,sha256=QD5fTdimVUC5K4ERVBjgXHZdbC3ZkgcR8LSIxFTPBQY,2697
49
49
  invenio_app_rdm/records_ui/sitemap.py,sha256=erWpwi8lx17ATicBo3dTwMiEEwHTilL8xTAkNCC3J4U,1619
50
- invenio_app_rdm/records_ui/utils.py,sha256=04Q_mI3SvfuNlmSziIJldr94UI2EKXZIdHAm4qHrEN0,3469
50
+ invenio_app_rdm/records_ui/utils.py,sha256=MGB4YAWrrE5Wu4RhbT2F5SAfVkm3PLe-jzD1BDWBpdo,6101
51
51
  invenio_app_rdm/records_ui/previewer/__init__.py,sha256=T32i_ssGKONDpNB3gECpn20ubHvGYYVrNuIgCADioOM,267
52
52
  invenio_app_rdm/records_ui/previewer/iiif_simple.py,sha256=lGxB3g0hNVJDWnq5jV_KrKPwC-LR1C51DMjas1-UpBM,1589
53
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html,sha256=vCz8EJsitKPFpEqp1yR2uPC97QpMvc941dK2Bgujj2c,2977
54
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html,sha256=pyyAjZ8eW_HS9Pajoiw1c1n4P0EcLdx6Phh8ZHPZkUE,21046
53
+ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html,sha256=aBdqSLQMi2nKKoC0dt3c7B8xluy3eE6l9j-M-rAa5Zc,3121
54
+ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html,sha256=_OqYPP-7qOyzenDoj-8qhSPwmwtMFYJ8mj6MdJcMPNI,20852
55
55
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/draft_not_found.html,sha256=_FPflgqVZ556Xw349mHPSFb0FOhxYkIHfmUUTX53_LU,624
56
56
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/export.html,sha256=2h-FGJvNKS9ASZ0mErL2vz5jXQYiLL8u8rTO2_D3FVQ,1166
57
57
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/iiif_preview.html,sha256=RningdsVBXsJ8qnQjzurf0Ty8R5Tq08eS31s53c3DNE,444
58
58
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/restricted_with_doi_tombstone.html,sha256=d2_LrLbWG_vQuR-Gz8P2nrgGuBZONk36kGBMT6iW3uE,987
59
59
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/search.html,sha256=MdDMzWNIqvZRH-7Blvb9lBdJCA-TK0MXdPpyVWjjBo8,606
60
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/tombstone.html,sha256=oXt0IHIF_AL3b0zLfBgl_meMBzDupNBwFaRGD2EIofY,1902
60
+ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/tombstone.html,sha256=QyFJ1q9NsECLpktZxPtR4X62uJ6X8-gymq0g2CKsFwI,2094
61
61
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/access-form.html,sha256=rLkoNmouAMV8S6fAU3_PtGuqDjFTACniyiosGAKjcN0,2317
62
62
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/citation.html,sha256=QBbRNCBBdE7JJirLrIdCWlhcmR37qh_2QXg7AnTtwdw,576
63
63
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/contact.html,sha256=czuC-Ec5zJaKzFOaqhz7JqhWiCS3U3NKaQmPw9-rzks,403
@@ -77,22 +77,22 @@ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details
77
77
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/keywords_subjects.html,sha256=8FTUt6MVRvEsj89qDxP6eK2feyv2UI0fgICoT99cUIU,717
78
78
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/licenses.html,sha256=8VfF1BJCvjc3MPPGDg5cm2M6_zbkz2HybJuRU5a2gXc,3172
79
79
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/locations.html,sha256=6o5nQyXP0V158KMBsOpKMeuLGcw_lAhnZIyGpaogbMk,721
80
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/manage_menu.html,sha256=BPAaDG_OhCkKaIUSqyBfjMFK8gMnweHzZtyNdwI0T4k,1516
80
+ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/manage_menu.html,sha256=t7Ux3nZpaMMQkGfT7IWZKXzKyJVzs_vBTv1ctGFz7TA,1659
81
81
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/metrics.html,sha256=6aS28YC8U7VDWn2vI2ckYtzm9wVWacGZ4a7Pu5D3BBI,526
82
82
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/technical_metadata.html,sha256=ptS8h6orgDhFFGXeZBCNBltELy_g9fUtS1bMTzieCPk,676
83
83
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/versions.html,sha256=fIa8R0blN2rWkrP0K43qvSTye4Gt6-5yo3HN5FLdLTA,935
84
84
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/creatibutors.html,sha256=N53nwtlEZjxweCx70qFJa1s6uL1pPSzWZgk8p1vodE4,4277
85
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/detail.html,sha256=_FFg0KwxG0PSCqvpFUq2-MNU4r301J4A6_s8elLbThk,10999
85
+ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/detail.html,sha256=Ur6pFoCiL8K02X7D6QNgtMoS7eMiDo7BhExKx9fMke8,11052
86
86
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/doi.html,sha256=32Yknq5PgvJpYg9Z3Brod9wui9yrpDNE11_esG-20jw,1656
87
87
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/files.html,sha256=6OIavFXP1BeV1Xozkv-2SOea9M5RUwjRI6gEGzBUle4,9564
88
88
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/locations.html,sha256=27-KyPqb05pu-yRXHvxCgZWRSi5bFP6xf7XBn91sbeA,1741
89
89
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/stats_popup.html,sha256=5SVzfIS15Aro2Itd2BiaLbMXm0cvvwk6ZCdYjuSwhBw,625
90
90
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/version.html,sha256=eA8-n81XUezkwPXvcG5v2sgLPQNTgr7hB36-_Gr-tVI,758
91
91
  invenio_app_rdm/records_ui/views/__init__.py,sha256=9DaDls04IQv7fYttDjLofIWGsRRjk-FwUYnIfxV3OWk,5840
92
- invenio_app_rdm/records_ui/views/decorators.py,sha256=-GdyPh2qIxV_wacAv5uChNx-HW2LiKjHQiRujiu42B4,16510
93
- invenio_app_rdm/records_ui/views/deposits.py,sha256=_7pyI3xk46m2bo1w8PVrP8PHKj_g4wh4hiUX-yuaS5A,25785
92
+ invenio_app_rdm/records_ui/views/decorators.py,sha256=t4Mt7bkidwq3tKE-3sMUSLIR7GxaOewwAng3s9bAMz0,16347
93
+ invenio_app_rdm/records_ui/views/deposits.py,sha256=vckL56fcyOFcrQ0YSxPtx-jk7AAwzKQrxjIrXcIVSyQ,24636
94
94
  invenio_app_rdm/records_ui/views/filters.py,sha256=dtAjJ5NmPvxEYZJeldW5oxrj0D0AYXobNelii57Tfdo,7455
95
- invenio_app_rdm/records_ui/views/records.py,sha256=vLuenTEoTV9ZB9suUGI4ct1ml2iModZqhdlVfK5dIRc,17811
95
+ invenio_app_rdm/records_ui/views/records.py,sha256=H1lZaKzr1QdX8QKvlm_-p4lPXMy6nQqHcB4NIlSYyAQ,16785
96
96
  invenio_app_rdm/redirector/__init__.py,sha256=AYCTGmfbmkHW3YJXMqXlWBXcBrUsta-QmL9ULX2bjwA,243
97
97
  invenio_app_rdm/redirector/resource.py,sha256=XuH6ZK0HVE5LdXoorlm8aI3deizvnZ5gFa9d1ihYosk,3312
98
98
  invenio_app_rdm/redirector/views.py,sha256=CTJ3EGEFKfc0lFwNb9pwH7MbMLiqaWnF8LA3xGIwahc,563
@@ -101,9 +101,10 @@ invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-inc
101
101
  invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-invitation/community_dashboard.html,sha256=3soWIke5l4eRAmZw2UeW6wu-AcT6ms4K_9U6DIYxMmw,1153
102
102
  invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-invitation/user_dashboard.html,sha256=ppUbbIROa_zED4WFTB6qqRbbJxewzjc6wKDzKhVglak,778
103
103
  invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-submission/index.html,sha256=nJIHevyCGQua_H67IV0mnFiQjNjcQYsZTieQgvP48JY,3452
104
+ invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/file-modification/index.html,sha256=4TruFY1vSFz5bJAdsRHhEe4xTS4sgb_fq_HOBKUYz_o,2492
104
105
  invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/guest-access-request/index.html,sha256=RXtoMrLFvEGHuy2YgoyCkpjEJmUVehFbmXvX1_7qGtY,1978
105
106
  invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/macros/request_header.html,sha256=Iado6BmcFFswmvQ9IrdtgSyAzJr5AIT2BP2IDg-B-8U,2695
106
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/record-deletion/index.html,sha256=av7g0h7A1V7KBpdP9ogkHIjhBhZzhRTJwv9fCEsOJYo,2745
107
+ invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/record-deletion/index.html,sha256=JzLATsMOLpHMfxlXeBPXgC2VMydCYa9TDjPHAuLPbU4,2820
107
108
  invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/subcommunity/index.html,sha256=eEYjTnVL-L30Dm_1LvSNKSx3QEHRoxMGHLupvu_1nMM,1453
108
109
  invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/subcommunity-invitation/index.html,sha256=347Saf8Fv78uevCbK2nFiOtNFUT0QyZSZS7lgoNzHdQ,1448
109
110
  invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/user-access-request/index.html,sha256=ltSP9sYPnpmCKMDYpZYU25Wxr3Dfqe2RNDxm6bVjX_I,1779
@@ -148,7 +149,7 @@ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/recor
148
149
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/index.js,sha256=Aax3344oX3S_M4_KDwBsfr2Z8x01vHrNGGvEDmE08wY,342
149
150
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/filters/DeletionStatusFilter.js,sha256=xv0kXgAQUjBmSfBND-qjdXSXMqMQV9O7ntNkXTQGFSk,3291
150
151
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/filters/index.js,sha256=wNAQbt_8N5_jhPzCWazdb0wufYoUGH2wfTvbLL7JM50,309
151
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchResultItem.js,sha256=Oc-7VG0XPVQWAmqz3o5yfF7lYJ83UEQzuEBcXL1o1Lc,2860
152
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchResultItem.js,sha256=XF8KZI48xwr2LrMju7uHffK7wqB92PhN9ROXh9toe4U,2695
152
153
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchbarLayout.js,sha256=w-u6zyo4yTeoqBu4uYeUwHulUjmK2X2kCP2Iw1aLuUQ,1587
153
154
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/index.js,sha256=nzN98yzW92VnPwxdovrySsVkZSZ3qm0El4_hBD6nvYQ,899
154
155
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/ModerationActions.js,sha256=Il9iTiHv8HQHoCHH1aBEWv_KiBcrJVkqhb4WkIf6jtQ,3193
@@ -177,14 +178,15 @@ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CompactSt
177
178
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CopyButton.js,sha256=uBcEXzGJYZ7dPIdQBxPqxLvwP6Z5QVg1x-YRncRDW3k,3550
178
179
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayPartOfCommunities.js,sha256=bSmhuwSWk4CW80mqa4ZZbjfa-_NsiJ1IxQ9veDy6sAM,2751
179
180
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayVerifiedCommunity.js,sha256=m3rT8jJ3440ZX22zZog8bHatWltYXwvmw_tu6tJUM9k,1506
180
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion.js,sha256=0rAS8mGVKNqJtBdWoGa1G1FMnY3QaKAs1Gd--91JqIA,2297
181
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/FileModificationUntil.js,sha256=3GtEW_IaP6TBKzMBBX1eYD-DuJbM31ps-dbjdgpLfc8,1254
182
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion.js,sha256=AZOgoxAfI19_KXfGGaKP8rtyJDbYjnYzu43hspAIKCk,2272
181
183
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordsResultsListItem.js,sha256=RTSQBlGQY7ww7fVGHDvDfWQNyJ07mnEoyboTGIcCgD4,6694
182
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionModal.js,sha256=kXME7Lr51ygS6PdA355Q2gh7bVcHLOBBW1ZClI_R4_E,12131
184
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionModal.js,sha256=u5ta6jcMl_s0Wj52ExgHlfviW6bsnNmUrYXgIUi6URs,12033
183
185
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionRadioGroup.js,sha256=qMFdPQkVQQsaS0P9KdPyFcuunZmGlEALjfABPueuoVU,1227
184
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js,sha256=wC3-MSDufkBkj3C1tDkuppzTpUaizhJNGe71dcnOQNw,34914
186
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js,sha256=tLytkGYgCBN-9JSRmcxonu3EdxJjuUmKUE6l9vvnSI0,35840
185
187
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/ShareDraftButton.js,sha256=ICMV4Ixe-nTe6q7COZ0oyAQf2nVp2cez_-iUZobwUD0,1998
186
188
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/config.js,sha256=rd2wqiwmYOkh4kWe8AiGWJar2kA8R8TkGMnX5XZvihs,1473
187
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/index.js,sha256=r9MvsucIXEyW7Bbb8vuEP2ZTRMzA-GJCn7GEpvqO0tY,1710
189
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/index.js,sha256=hvgwIw_mCDL6tWmXVYehdHJaZ2W44Kp3mzWdDOpCng4,1781
188
190
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/frontpage/RecordsList.js,sha256=PkLpiCl7sNSlQoCo7xxZ_H6QvWqK_TydoseIiKvtuMw,4176
189
191
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/frontpage/index.js,sha256=X0tsSvLwGPzSFQEf4J1zPZbFRCiYeJq5CnEXr_J5LsU,900
190
192
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/AccessRequestForm.js,sha256=5GRlVkJQpwrY9wk4KI5Tmqmll2d3cEls8isJZjvoA9Q,8798
@@ -192,13 +194,13 @@ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/Communi
192
194
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/CommunitiesManagementDropdown.js,sha256=qocsinvtbWEqAi8kgqNqx7c0X-_evRmCz2bPTaMQlcI,5953
193
195
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/EditButton.js,sha256=WJ5lNpbPcd_Kymn_TYklSTfkCJRPhpFeT6cWcR48mSQ,1452
194
196
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ExportDropdown.js,sha256=fDqs5sel6Zo1oPkJT1XbR3dtHXvvgVuDhe_sg_-D690,1969
195
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageButton.js,sha256=Lx9zHYxuqNKLPdOsPM019HgO_hqo2p3auqSpaPyRveg,4287
197
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageButton.js,sha256=Sf5mBYLq3ydpb10cwBFbqUGqn0hsQ3aap3ujkdMTB9g,3872
196
198
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCitationField.js,sha256=XYfXsQejNeC1R0spndn0qDrqvz6w3bj5UlPEIgT4U24,4757
197
199
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesList.js,sha256=wORVCOjlyX2mIsDU9J0MwWFE4Zw9CCL5inWpV7m8lsM,4004
198
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js,sha256=N4_pyfqVY698DmVv2oJMMgzvgNvVNm4ptoSSONfAR64,4106
200
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js,sha256=cViV1fQ_1xvd_JUV3toffX-nuWgkKiy7WGtZcg5tV5Y,4297
199
201
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordVersionsList.js,sha256=ZJaD4fW2z00tcektXVz0eLXu6oGLLW-NUjV86neuDjM,7141
200
202
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/access.js,sha256=FVcpKl22zMi1GssbLZAj1pO98c6Em_wg_yBIdfBJor0,938
201
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/index.js,sha256=2gwIJGItno7I0U_avhYQ6wNzMZ9w5zqWnWam_EvX50I,5060
203
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/index.js,sha256=ETWFzdM61Uy94bUwT2uzjM11aIk6Lt2MOzxmPswrjoA,5177
202
204
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/theme.js,sha256=TieqbbmJrxVKlkD5Kvsw6F-sbpucxSV9dv30Y6pXKjI,3144
203
205
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageDefaultBrandingAction/ManageDefaultBrandingAction.js,sha256=qNWpe3KyZ8NDHKocG6XKJzb6w3fIQk3muWN126pUo9w,3529
204
206
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/PendingCommunitiesModal/PendingCommunitiesModal.js,sha256=G9OwLxKqX73w_7D1k7BHOzMeLmokowMfJQg5Km7J8RA,1797
@@ -225,7 +227,6 @@ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOp
225
227
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/UserGroupAccessSearchResultItem.js,sha256=TYluO2lRliHcIoJBiTnAy8H4B-sEsa5h2TZ6mC1Xb7I,5750
226
228
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/api/api.js,sha256=WpRWWdlN_8TqeaMdB7RV2rQJSluetA91qIuJcAddfLY,926
227
229
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/index.js,sha256=xktX9vqs7xPTrKmGD93T-faSmg07LNsmK3GepA9F6j0,424
228
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/mapping.js,sha256=kRIVYx1pkzq6kNry3M6Cn5hykDkNJAaG7sQ0BdwGSj8,434
229
230
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/AccessRequestExpiration.js,sha256=1h-Vkn-34-D3d-nfvg0de7-yi29NAifc2BJ-D4Z0kbQ,1940
230
231
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/index.js,sha256=FZ_XVB-5V7k_wOYeiI06RXQn3aIeh7beyBhcK5AIvCg,75
231
232
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineEdit.js,sha256=xd0uVbKLC23Y3RHlHDs0NdQ2vq9PNhimPwANkEtLSJ8,5727
@@ -277,7 +278,7 @@ invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/rese
277
278
  invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/reset.variables,sha256=Luyh-V1w5wDFv2j77bYmTxfn22Cp7h1vLjRsqhf207Y,139
278
279
  invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides,sha256=EBhnYyEUy057UPvqLBBov-tORBgUEOio-cWHUVUevNs,9127
279
280
  invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.variables,sha256=IQZqcNQ1AwmrpiPwkWZ6Zk67kyCMf8DJBqNgC1porDY,3043
280
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides,sha256=DSPOm3I4dFfRrO73IYCBkj3A_T_wKW9J-Y1BlKb2Vg4,3508
281
+ invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides,sha256=Hh05CyqHwtZLzSX8bg1LFZKo7364JV-h52HJfAddLqc,3517
281
282
  invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.variables,sha256=JFUnfiL_Xve48EwxRjYq0T-QJA8jboC606L08IjrBXg,322
282
283
  invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/checkbox.overrides,sha256=VV-V1ez1AT-2ULq8kh9akUZncGOx6ESGnEUqDlvRihY,137
283
284
  invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/checkbox.variables,sha256=fknu9A-l5L6-tH7KOYKK6cHhxx8cKMlig7EGYI7zIU0,137
@@ -475,7 +476,7 @@ invenio_app_rdm/upgrade_scripts/fix_migrated_records_from_8_0_to_9_0.py,sha256=p
475
476
  invenio_app_rdm/upgrade_scripts/migrate_10_0_to_11_0.py,sha256=TX6FCWXY4qM4z7IYzDO5qaMTheo3zAjFrmR1sXaEf4U,1333
476
477
  invenio_app_rdm/upgrade_scripts/migrate_11_0_to_12_0.py,sha256=Tp7jfT2JHrYCFzF2qIYqG7yr7k-GhX2zkw61CWJGA78,6941
477
478
  invenio_app_rdm/upgrade_scripts/migrate_12_0_to_13_0.py,sha256=pyO68jyGyKXVTcja8tpi2XgNx_FxXk7JhgDTV-wx3xM,8205
478
- invenio_app_rdm/upgrade_scripts/migrate_13_0_to_14_0.py,sha256=-JyKmXQolkeh0dUKdEekVhVGTYZ4AncyjZdy4n5DIeQ,11356
479
+ invenio_app_rdm/upgrade_scripts/migrate_13_0_to_14_0.py,sha256=vSixZ-Md5esqabBNbWwN8mjEWSsMv0IroHA2gqy_GJ8,11247
479
480
  invenio_app_rdm/upgrade_scripts/migrate_1_0_records_to_2_0.py,sha256=mRDv_Ao5zMgA6X0aogMfvhspO1CIApKtDW_ziJp5fjI,3325
480
481
  invenio_app_rdm/upgrade_scripts/migrate_2_0_to_3_0.py,sha256=jL_2I61Q9qt3fjBzYYueeT4EMQ9FlNPxYE4nzDQbLEY,2698
481
482
  invenio_app_rdm/upgrade_scripts/migrate_3_0_to_4_0.py,sha256=BNjGufwLBvLHnu0gz5b_Are-FuxYjXlCtkLgNQckV3U,4768
@@ -496,9 +497,9 @@ invenio_app_rdm/users_ui/views/__init__.py,sha256=SMdY2NJj9GICfr3Xuok7qdNYVtA2bJ
496
497
  invenio_app_rdm/users_ui/views/dashboard.py,sha256=iUn2PrODAwb8ugmMosJKAjPhUzjCiWiAWoXQr9RUFuc,1793
497
498
  invenio_app_rdm/users_ui/views/ui.py,sha256=W_eXM8dLVIrNHQB2UEh37C9BYoHauft6RyvcDNFHovA,1742
498
499
  invenio_app_rdm/utils/files.py,sha256=CruDyO2gDVadSlWEJD-WHpWHeOQ0juh-Ei9jz3D9yjc,3923
499
- invenio_app_rdm-14.0.0b2.dev4.dist-info/licenses/LICENSE,sha256=AZXFHRrZa5s4m9DV7zZr4bPGTMUvcEPCodeV_AmFI8k,1204
500
- invenio_app_rdm-14.0.0b2.dev4.dist-info/METADATA,sha256=zgGEIcnup8IgzO2OpK3IoYv1KJcPxi-KGN-BsqtZhhs,19737
501
- invenio_app_rdm-14.0.0b2.dev4.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
502
- invenio_app_rdm-14.0.0b2.dev4.dist-info/entry_points.txt,sha256=MwtT1SN5saWOgTYhNb5y0YGA9VGAi0kXN0cykIfsb4U,2405
503
- invenio_app_rdm-14.0.0b2.dev4.dist-info/top_level.txt,sha256=quZejDUw2vLfKQboNIuVLJ9fxZifdnCT_s2PNf1dfmk,16
504
- invenio_app_rdm-14.0.0b2.dev4.dist-info/RECORD,,
500
+ invenio_app_rdm-14.0.0b3.dev1.dist-info/licenses/LICENSE,sha256=AZXFHRrZa5s4m9DV7zZr4bPGTMUvcEPCodeV_AmFI8k,1204
501
+ invenio_app_rdm-14.0.0b3.dev1.dist-info/METADATA,sha256=c76GBlb6VHyI3UeMcKXAkbOJ9azqGeHaKbkzZ4lF5vI,20808
502
+ invenio_app_rdm-14.0.0b3.dev1.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
503
+ invenio_app_rdm-14.0.0b3.dev1.dist-info/entry_points.txt,sha256=MwtT1SN5saWOgTYhNb5y0YGA9VGAi0kXN0cykIfsb4U,2405
504
+ invenio_app_rdm-14.0.0b3.dev1.dist-info/top_level.txt,sha256=quZejDUw2vLfKQboNIuVLJ9fxZifdnCT_s2PNf1dfmk,16
505
+ invenio_app_rdm-14.0.0b3.dev1.dist-info/RECORD,,
@@ -1,12 +0,0 @@
1
- // This file is part of InvenioRDM
2
- // Copyright (C) 2023 CERN.
3
- //
4
- // Invenio App RDM is free software; you can redistribute it and/or modify it
5
- // under the terms of the MIT License; see LICENSE file for more details.
6
-
7
- import { TimelineFeedHeader } from "../requests/timeline/overrides/TimelineFeedHeader";
8
-
9
- export const overriddenComponents = {
10
- // Guest Access Request customisation
11
- "TimelineFeed.header": TimelineFeedHeader,
12
- };