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.
- invenio_app_rdm/__init__.py +1 -1
- invenio_app_rdm/administration/moderation/requests.py +1 -1
- invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests_details.html +3 -1
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html +3 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html +0 -3
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/manage_menu.html +2 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/detail.html +3 -2
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/tombstone.html +6 -1
- invenio_app_rdm/records_ui/utils.py +73 -2
- invenio_app_rdm/records_ui/views/decorators.py +1 -5
- invenio_app_rdm/records_ui/views/deposits.py +19 -43
- invenio_app_rdm/records_ui/views/records.py +13 -37
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/file-modification/index.html +88 -0
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/record-deletion/index.html +3 -1
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchResultItem.js +2 -4
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/FileModificationUntil.js +45 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionModal.js +23 -25
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion.js +2 -2
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js +26 -3
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/index.js +1 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageButton.js +9 -28
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js +8 -1
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/index.js +3 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides +1 -1
- invenio_app_rdm/upgrade_scripts/migrate_13_0_to_14_0.py +0 -2
- {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/METADATA +26 -2
- {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/RECORD +31 -30
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/mapping.js +0 -12
- {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/WHEEL +0 -0
- {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/entry_points.txt +0 -0
- {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/licenses/LICENSE +0 -0
- {invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/top_level.txt +0 -0
invenio_app_rdm/__init__.py
CHANGED
|
@@ -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
|
-
"
|
|
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
|
-
|
|
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 |
|
|
79
|
+
{{ desc_text | safe }}
|
|
79
80
|
</div>
|
|
80
81
|
{% else %}
|
|
81
|
-
{{ desc_text |
|
|
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
|
|
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
|
|
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
|
|
318
|
-
"""Dump removal reasons vocabulary."""
|
|
319
|
-
self._vocabularies["
|
|
320
|
-
|
|
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["
|
|
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.
|
|
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
|
-
|
|
554
|
-
|
|
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
|
-
|
|
563
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
164
|
+
record_deletion = evaluate_record_deletion(record._record, g.identity)
|
|
162
165
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
|
invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/file-modification/index.html
ADDED
|
@@ -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 %}
|
invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/record-deletion/index.html
CHANGED
|
@@ -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
|
-
|
|
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
|
-
{
|
|
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
|
-
|
|
44
|
+
linkToDetailView={`/administration/requests?q=created_by.user:${result.created_by.user}`}
|
|
47
45
|
/>
|
|
48
46
|
{toRelativeTime(result.created)}
|
|
49
47
|
</Table.Cell>
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/FileModificationUntil.js
ADDED
|
@@ -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.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
-
}
|
|
132
|
-
this.setState({ error:
|
|
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
|
|
193
|
-
|
|
194
|
-
]["description"]
|
|
192
|
+
recordDeletion.recordDeletion?.immediate_deletion?.policy
|
|
193
|
+
?.description
|
|
195
194
|
}
|
|
196
195
|
</p>
|
|
197
196
|
) : (
|
|
198
197
|
<p>
|
|
199
198
|
{
|
|
200
|
-
recordDeletion
|
|
201
|
-
|
|
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
|
|
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={
|
|
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={
|
|
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
|
|
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
|
|
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={
|
|
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
|
|
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 }) => {
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js
CHANGED
|
@@ -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
|
|
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
|
|
@@ -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",
|
{invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: invenio-app-rdm
|
|
3
|
-
Version: 14.0.
|
|
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<
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
54
|
-
invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
93
|
-
invenio_app_rdm/records_ui/views/deposits.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
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.
|
|
500
|
-
invenio_app_rdm-14.0.
|
|
501
|
-
invenio_app_rdm-14.0.
|
|
502
|
-
invenio_app_rdm-14.0.
|
|
503
|
-
invenio_app_rdm-14.0.
|
|
504
|
-
invenio_app_rdm-14.0.
|
|
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
|
-
};
|
|
File without changes
|
{invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{invenio_app_rdm-14.0.0b2.dev4.dist-info → invenio_app_rdm-14.0.0b3.dev1.dist-info}/top_level.txt
RENAMED
|
File without changes
|