invenio-app-rdm 14.0.0b3.dev0__py2.py3-none-any.whl → 14.0.0b3.dev2__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 (26) hide show
  1. invenio_app_rdm/__init__.py +1 -1
  2. invenio_app_rdm/administration/moderation/requests.py +1 -1
  3. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html +3 -0
  4. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/detail.html +3 -2
  5. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/tombstone.html +6 -1
  6. invenio_app_rdm/records_ui/utils.py +33 -8
  7. invenio_app_rdm/records_ui/views/decorators.py +1 -5
  8. invenio_app_rdm/records_ui/views/deposits.py +13 -2
  9. invenio_app_rdm/records_ui/views/records.py +1 -1
  10. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/file-modification/index.html +88 -0
  11. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchResultItem.js +2 -4
  12. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/FileModificationUntil.js +45 -0
  13. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionModal.js +23 -25
  14. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion.js +2 -1
  15. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js +22 -2
  16. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/index.js +1 -0
  17. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageButton.js +6 -2
  18. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js +6 -2
  19. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/mapping.js +1 -1
  20. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides +1 -1
  21. {invenio_app_rdm-14.0.0b3.dev0.dist-info → invenio_app_rdm-14.0.0b3.dev2.dist-info}/METADATA +26 -2
  22. {invenio_app_rdm-14.0.0b3.dev0.dist-info → invenio_app_rdm-14.0.0b3.dev2.dist-info}/RECORD +26 -24
  23. {invenio_app_rdm-14.0.0b3.dev0.dist-info → invenio_app_rdm-14.0.0b3.dev2.dist-info}/WHEEL +0 -0
  24. {invenio_app_rdm-14.0.0b3.dev0.dist-info → invenio_app_rdm-14.0.0b3.dev2.dist-info}/entry_points.txt +0 -0
  25. {invenio_app_rdm-14.0.0b3.dev0.dist-info → invenio_app_rdm-14.0.0b3.dev2.dist-info}/licenses/LICENSE +0 -0
  26. {invenio_app_rdm-14.0.0b3.dev0.dist-info → invenio_app_rdm-14.0.0b3.dev2.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.0b3.dev0"
20
+ __version__ = "14.0.0b3.dev2"
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
  }
@@ -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"
@@ -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,13 +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
16
17
  from invenio_rdm_records.records.api import RDMRecord
17
18
  from invenio_rdm_records.requests.record_deletion import RecordDeletion
18
- from invenio_rdm_records.services.config import RDMRecordDeletionPolicy
19
+ from invenio_rdm_records.services.config import (
20
+ FileModificationPolicyEvaluator,
21
+ RDMRecordDeletionPolicy,
22
+ )
19
23
  from invenio_records.dictutils import dict_set
20
24
  from invenio_records.errors import MissingModelError
21
25
  from invenio_records_files.api import FileObject
@@ -115,14 +119,11 @@ def get_existing_deletion_request(record_id):
115
119
 
116
120
  def evaluate_record_deletion(record: RDMRecord, identity):
117
121
  """Evaluate whether a given record can be deleted by an identity."""
118
- rec_del = RDMRecordDeletionPolicy().evaluate(identity, record._record)
122
+ rec_del = RDMRecordDeletionPolicy().evaluate(identity, record)
119
123
 
120
124
  immediate, request = rec_del["immediate_deletion"], rec_del["request_deletion"]
121
125
  rd_enabled = immediate.enabled or request.enabled
122
- rd_valid_user = (
123
- rec_del["immediate_deletion"].valid_user
124
- or rec_del["request_deletion"].valid_user
125
- )
126
+ rd_valid_user = immediate.valid_user or request.valid_user
126
127
  rd_allowed = immediate.allowed or request.allowed
127
128
 
128
129
  if rd_allowed:
@@ -138,7 +139,7 @@ def evaluate_record_deletion(record: RDMRecord, identity):
138
139
  ),
139
140
  "context": {
140
141
  "files": record.files.count,
141
- "internalDoi": record.pids["doi"]["provider"] != "external",
142
+ "internalDoi": record.pids.get("doi", {}).get("provider") != "external",
142
143
  },
143
144
  }
144
145
  else:
@@ -149,9 +150,33 @@ def evaluate_record_deletion(record: RDMRecord, identity):
149
150
  }
150
151
  record_deletion["existing_request"] = (
151
152
  # We show existing requests to valid users (even if they are not allowed to delete a record anymore).
152
- get_existing_deletion_request(record.id)
153
+ get_existing_deletion_request(record.pid.pid_value)
153
154
  if rd_valid_user
154
155
  else None
155
156
  )
156
157
 
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
@@ -37,7 +37,11 @@ from invenio_vocabularies.records.models import VocabularyScheme
37
37
  from marshmallow_utils.fields.babel import gettext_from_dict
38
38
  from sqlalchemy.orm import load_only
39
39
 
40
- from ..utils import evaluate_record_deletion, set_default_value
40
+ from ..utils import (
41
+ evaluate_file_modification,
42
+ evaluate_record_deletion,
43
+ set_default_value,
44
+ )
41
45
  from .decorators import (
42
46
  no_cache_response,
43
47
  pass_draft,
@@ -551,9 +555,15 @@ def deposit_edit(pid_value, draft=None, draft_files=None, files_locked=True):
551
555
  )
552
556
  published_record = ui_serializer.dump_obj(published_record_result.to_dict())
553
557
 
554
- record_deletion = evaluate_record_deletion(published_record_result, g.identity)
558
+ record_deletion = evaluate_record_deletion(
559
+ published_record_result._record, g.identity
560
+ )
561
+ file_modification = evaluate_file_modification(
562
+ published_record_result._record, g.identity
563
+ )
555
564
  else:
556
565
  record_deletion = {}
566
+ file_modification = {}
557
567
 
558
568
  community_ui = None
559
569
  community_theme = None
@@ -629,6 +639,7 @@ def deposit_edit(pid_value, draft=None, draft_files=None, files_locked=True):
629
639
  ]
630
640
  ),
631
641
  record_deletion=record_deletion,
642
+ file_modification=file_modification,
632
643
  )
633
644
 
634
645
 
@@ -161,7 +161,7 @@ def record_detail(
161
161
 
162
162
  record_ui = UIJSONSerializer().dump_obj(record.to_dict())
163
163
 
164
- record_deletion = evaluate_record_deletion(record, g.identity)
164
+ record_deletion = evaluate_record_deletion(record._record, g.identity)
165
165
 
166
166
  # The deletion options are only needed if the user is allowed to delete the given record.
167
167
  record_deletion_options = (
@@ -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 %}
@@ -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
  )}
@@ -71,10 +71,11 @@ RecordDeletion.propTypes = {
71
71
  disabled: PropTypes.bool,
72
72
  record: PropTypes.object.isRequired,
73
73
  permissions: PropTypes.object.isRequired,
74
- recordDeletion: PropTypes.object.isRequired,
74
+ recordDeletion: PropTypes.object,
75
75
  options: PropTypes.array.isRequired,
76
76
  };
77
77
 
78
78
  RecordDeletion.defaultProps = {
79
79
  disabled: false,
80
+ recordDeletion: {},
80
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>
@@ -809,7 +826,8 @@ RDMDepositForm.propTypes = {
809
826
  config: PropTypes.object.isRequired,
810
827
  recordRestrictionGracePeriod: PropTypes.number.isRequired,
811
828
  allowRecordRestriction: PropTypes.bool.isRequired,
812
- recordDeletion: PropTypes.object.isRequired,
829
+ recordDeletion: PropTypes.object,
830
+ fileModification: PropTypes.object,
813
831
  record: PropTypes.object.isRequired,
814
832
  preselectedCommunity: PropTypes.object,
815
833
  files: PropTypes.object,
@@ -826,4 +844,6 @@ RDMDepositForm.defaultProps = {
826
844
  filesLocked: false,
827
845
  allowEmptyFiles: true,
828
846
  useUppy: false,
847
+ recordDeletion: {},
848
+ fileModification: {},
829
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")}
@@ -74,8 +74,12 @@ ManageButton.propTypes = {
74
74
  record: PropTypes.object.isRequired,
75
75
  recordOwnerID: PropTypes.string.isRequired,
76
76
  permissions: PropTypes.object.isRequired,
77
- recordDeletion: PropTypes.object.isRequired,
78
- recordDeletionOptions: PropTypes.object.isRequired,
77
+ recordDeletion: PropTypes.object,
78
+ recordDeletionOptions: PropTypes.array.isRequired,
79
+ };
80
+
81
+ ManageButton.defaultProps = {
82
+ recordDeletion: {},
79
83
  };
80
84
 
81
85
  const BlockUserItem = ({ recordOwnerID }) => {
@@ -128,6 +128,10 @@ RecordManagement.propTypes = {
128
128
  isPreviewSubmissionRequest: PropTypes.bool.isRequired,
129
129
  currentUserId: PropTypes.string.isRequired,
130
130
  recordOwnerID: PropTypes.string.isRequired,
131
- recordDeletion: PropTypes.object.isRequired,
132
- recordDeletionOptions: PropTypes.object.isRequired,
131
+ recordDeletion: PropTypes.object,
132
+ recordDeletionOptions: PropTypes.array.isRequired,
133
+ };
134
+
135
+ RecordManagement.defaultProps = {
136
+ recordDeletion: {},
133
137
  };
@@ -1,5 +1,5 @@
1
1
  // This file is part of InvenioRDM
2
- // Copyright (C) 2023 CERN.
2
+ // Copyright (C) 2023-2025 CERN.
3
3
  //
4
4
  // Invenio App RDM 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.
@@ -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;
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invenio-app-rdm
3
- Version: 14.0.0b3.dev0
3
+ Version: 14.0.0b3.dev2
4
4
  Summary: Invenio Research Data Management.
5
5
  Home-page: https://github.com/inveniosoftware/invenio-app-rdm
6
6
  Author: CERN
@@ -101,7 +101,31 @@ https://inveniordm.docs.cern.ch
101
101
  Changes
102
102
  =======
103
103
 
104
- Version v14.0.0b3.dev0 (released 2025-XX-XX)
104
+ Version v14.0.0b3.dev2 (released 2025-11-21)
105
+
106
+ - fix: revert mapping.js symlink
107
+
108
+ Version v14.0.0b3.dev1 (released 2025-11-21)
109
+
110
+ - UI: add info message about remaining days to publish changes
111
+ - request: add file mod request template
112
+ - fix: set files_locked to `bucket.locked` rather than permission
113
+ * currently the permission is whether you can unlock the files
114
+ * but the files are only unlocked when you create the draft
115
+ * as such as an admin when you edit a published draft, if it was
116
+ created by a user it will look like the files are unlocked but
117
+ this is false
118
+ - feat: pass file modification eval to deposit form
119
+ - fix: align selector with semantic-ui
120
+ - fix(views): pass API record to evaluate record deletion
121
+ - fix(record-ui): do not sanitize additional description in template
122
+ - admin: requests details view improvements
123
+ - Replace `Record deletion` by `Deletion request for "Record name"`
124
+ - Link showing all requests for a given user
125
+ - tombstone: add deletion policy
126
+ - Update release date for version v14.0.0b3.dev0
127
+
128
+ Version v14.0.0b3.dev0 (released 2025-11-12)
105
129
 
106
130
  - setup: bump major version of `invenio-oauthclient`
107
131
 
@@ -1,4 +1,4 @@
1
- invenio_app_rdm/__init__.py,sha256=VZpM1M3jal-5WfNARRhKwtJxRiX18vbpWLDtWQeDq2Q,704
1
+ invenio_app_rdm/__init__.py,sha256=SDbca7QR87fVoWcdzSB1HkMhsF0cwluqvbDUhZjUW-s,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,7 +10,7 @@ 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
@@ -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=3fjY2D1dvQqF7IqOE4hPQqN3ANj1sbPlv-mYTALPWwY,5218
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
53
+ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html,sha256=aBdqSLQMi2nKKoC0dt3c7B8xluy3eE6l9j-M-rAa5Zc,3121
54
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
@@ -82,17 +82,17 @@ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details
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=t0gP0TIreb5RcHRtDd3CIX0yEE-hasUJV6q68fM4veM,24363
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=ciYqS0Ljb0QZZA6aZymVEeVlSdLemwHKTVMN-7AWTtw,16777
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,6 +101,7 @@ 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
107
  invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/record-deletion/index.html,sha256=JzLATsMOLpHMfxlXeBPXgC2VMydCYa9TDjPHAuLPbU4,2820
@@ -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=9ywSA48X-WZlpZ1krtAwzOYRodXYTLt4UJhpqxduF90,2261
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=TGroJZONgyBP2ACE_yoOmWF7Vo4Yr3SG1s3ZMf74z10,35048
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,10 +194,10 @@ 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=OGxcPvhFrm2vv_hzDP7ONdJtezCLjnz13Wo4BWC0Sfk,3828
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=62TbXu96jXUSRxdXOnhu6eSl_tpYTydni4WtdBBQOe8,4249
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
203
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/index.js,sha256=ETWFzdM61Uy94bUwT2uzjM11aIk6Lt2MOzxmPswrjoA,5177
@@ -225,7 +227,7 @@ 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
230
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/mapping.js,sha256=gTGWSI6Ef3y8j63mC-6wETnmKq1JSFGC48x0TG4gJ5A,439
229
231
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/AccessRequestExpiration.js,sha256=1h-Vkn-34-D3d-nfvg0de7-yi29NAifc2BJ-D4Z0kbQ,1940
230
232
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/index.js,sha256=FZ_XVB-5V7k_wOYeiI06RXQn3aIeh7beyBhcK5AIvCg,75
231
233
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineEdit.js,sha256=xd0uVbKLC23Y3RHlHDs0NdQ2vq9PNhimPwANkEtLSJ8,5727
@@ -277,7 +279,7 @@ invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/rese
277
279
  invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/reset.variables,sha256=Luyh-V1w5wDFv2j77bYmTxfn22Cp7h1vLjRsqhf207Y,139
278
280
  invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides,sha256=EBhnYyEUy057UPvqLBBov-tORBgUEOio-cWHUVUevNs,9127
279
281
  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
282
+ invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides,sha256=Hh05CyqHwtZLzSX8bg1LFZKo7364JV-h52HJfAddLqc,3517
281
283
  invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.variables,sha256=JFUnfiL_Xve48EwxRjYq0T-QJA8jboC606L08IjrBXg,322
282
284
  invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/checkbox.overrides,sha256=VV-V1ez1AT-2ULq8kh9akUZncGOx6ESGnEUqDlvRihY,137
283
285
  invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/checkbox.variables,sha256=fknu9A-l5L6-tH7KOYKK6cHhxx8cKMlig7EGYI7zIU0,137
@@ -496,9 +498,9 @@ invenio_app_rdm/users_ui/views/__init__.py,sha256=SMdY2NJj9GICfr3Xuok7qdNYVtA2bJ
496
498
  invenio_app_rdm/users_ui/views/dashboard.py,sha256=iUn2PrODAwb8ugmMosJKAjPhUzjCiWiAWoXQr9RUFuc,1793
497
499
  invenio_app_rdm/users_ui/views/ui.py,sha256=W_eXM8dLVIrNHQB2UEh37C9BYoHauft6RyvcDNFHovA,1742
498
500
  invenio_app_rdm/utils/files.py,sha256=CruDyO2gDVadSlWEJD-WHpWHeOQ0juh-Ei9jz3D9yjc,3923
499
- invenio_app_rdm-14.0.0b3.dev0.dist-info/licenses/LICENSE,sha256=AZXFHRrZa5s4m9DV7zZr4bPGTMUvcEPCodeV_AmFI8k,1204
500
- invenio_app_rdm-14.0.0b3.dev0.dist-info/METADATA,sha256=33XPZ7W9Gjq7xvijIkpcyJ8RwV3j7SVollh4xjpUN6Q,19837
501
- invenio_app_rdm-14.0.0b3.dev0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
502
- invenio_app_rdm-14.0.0b3.dev0.dist-info/entry_points.txt,sha256=MwtT1SN5saWOgTYhNb5y0YGA9VGAi0kXN0cykIfsb4U,2405
503
- invenio_app_rdm-14.0.0b3.dev0.dist-info/top_level.txt,sha256=quZejDUw2vLfKQboNIuVLJ9fxZifdnCT_s2PNf1dfmk,16
504
- invenio_app_rdm-14.0.0b3.dev0.dist-info/RECORD,,
501
+ invenio_app_rdm-14.0.0b3.dev2.dist-info/licenses/LICENSE,sha256=AZXFHRrZa5s4m9DV7zZr4bPGTMUvcEPCodeV_AmFI8k,1204
502
+ invenio_app_rdm-14.0.0b3.dev2.dist-info/METADATA,sha256=TTlOQKxyUHk5f2xFpERIzW_AN2icuVuqdaOE4bur3q8,20888
503
+ invenio_app_rdm-14.0.0b3.dev2.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
504
+ invenio_app_rdm-14.0.0b3.dev2.dist-info/entry_points.txt,sha256=MwtT1SN5saWOgTYhNb5y0YGA9VGAi0kXN0cykIfsb4U,2405
505
+ invenio_app_rdm-14.0.0b3.dev2.dist-info/top_level.txt,sha256=quZejDUw2vLfKQboNIuVLJ9fxZifdnCT_s2PNf1dfmk,16
506
+ invenio_app_rdm-14.0.0b3.dev2.dist-info/RECORD,,