invenio-app-rdm 13.0.0b4.dev1__py2.py3-none-any.whl → 14.0.0b1.dev8__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/__init__.py +11 -0
- invenio_app_rdm/administration/moderation/requests.py +175 -0
- invenio_app_rdm/administration/records/records.py +9 -7
- invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests.html +14 -0
- invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests_details.html +91 -0
- invenio_app_rdm/administration/user_moderation/user_moderation.py +4 -4
- invenio_app_rdm/administration/users/users.py +0 -5
- invenio_app_rdm/communities_ui/views/communities.py +9 -5
- invenio_app_rdm/config.py +73 -4
- invenio_app_rdm/ext.py +2 -2
- invenio_app_rdm/fixtures/pages.py +5 -2
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html +11 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html +2 -5
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/citation.html +2 -2
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/details.html +2 -2
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/communities.html +8 -7
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/external_resources.html +5 -6
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/licenses.html +9 -13
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/manage_menu.html +8 -5
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/stats.html +2 -4
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/detail.html +1 -1
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/doi.html +7 -5
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/files.html +21 -4
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/tombstone.html +6 -1
- invenio_app_rdm/records_ui/utils.py +93 -1
- invenio_app_rdm/records_ui/views/decorators.py +24 -14
- invenio_app_rdm/records_ui/views/deposits.py +100 -27
- invenio_app_rdm/records_ui/views/filters.py +11 -4
- invenio_app_rdm/records_ui/views/records.py +23 -13
- 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/guest-access-request/index.html +5 -5
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/record-deletion/index.html +95 -0
- invenio_app_rdm/requests_ui/views/requests.py +54 -87
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/ViewRecentChanges.js +8 -8
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/ImpersonateUserForm.js +12 -17
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/RevisionsDiffViewer.js +14 -16
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/SetQuotaAction.js +1 -1
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/api/routes.js +1 -2
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchResultItem.js +81 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchbarLayout.js +48 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/index.js +22 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSearchAppLayout.js +3 -4
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CopyButton.js +38 -19
- 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 +354 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionRadioGroup.js +44 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion.js +81 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js +55 -5
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/index.js +4 -1
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/CommunitiesManagement.js +2 -2
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ExportDropdown.js +7 -2
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageButton.js +52 -19
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCitationField.js +15 -14
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesListModal.js +4 -4
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitySubmission/RecordCommunitySubmissionModal.js +1 -1
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js +17 -3
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordVersionsList.js +16 -17
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RemoveFromCommunity/RemoveFromCommunityAction.js +5 -5
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/index.js +42 -40
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/theme.js +9 -5
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineEdit.js +5 -5
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineRead.js +2 -2
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/search/components.js +14 -19
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/theme.js +9 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/file_uploader/uppy.less +37 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/landing_page/licenses.less +5 -3
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides +6 -1
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides +10 -1
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/search.overrides +7 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/search.variables +0 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/i18next.js +1 -1
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/_generatedTranslations.js +66 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ar/messages.po +804 -137
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ar/translations.json +277 -249
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/messages.po +689 -70
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/translations.json +102 -82
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/messages.po +699 -80
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/translations.json +112 -92
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/messages.po +821 -138
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/translations.json +290 -262
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/messages.po +691 -66
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/translations.json +91 -71
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/messages.po +818 -138
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/translations.json +260 -240
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/messages.po +698 -78
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/translations.json +108 -88
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/en/messages.po +1000 -5
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/en/translations.json +81 -28
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/messages.po +810 -137
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/translations.json +253 -233
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/messages.po +746 -133
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/translations.json +130 -110
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/messages.po +688 -69
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/translations.json +103 -79
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/messages.po +809 -126
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/translations.json +277 -257
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/messages.po +695 -70
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/translations.json +101 -79
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/messages.po +801 -135
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/translations.json +254 -234
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/index.js +16 -65
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/messages.po +712 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/translations.json +116 -96
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/messages.po +683 -70
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/translations.json +96 -78
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/messages.po +689 -70
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/translations.json +109 -85
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ko/messages.po +889 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ko/translations.json +277 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/lt/messages.po +702 -71
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/lt/translations.json +113 -85
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/messages.po +689 -70
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/translations.json +102 -82
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/messages.po +704 -70
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/translations.json +119 -91
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/messages.po +694 -69
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/translations.json +93 -73
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/messages.po +717 -85
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/translations.json +155 -133
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/messages.po +806 -124
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/translations.json +288 -260
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/messages.po +713 -82
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/translations.json +119 -91
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/messages.po +807 -141
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/translations.json +260 -240
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/messages.po +799 -128
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/translations.json +259 -239
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/messages.po +756 -131
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/translations.json +124 -96
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/messages.po +736 -123
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/translations.json +130 -108
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/messages.po +683 -70
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/translations.json +100 -78
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/package.json +3 -37
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/translations.pot +243 -94
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.de.html +2 -2
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.en.html +4 -4
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.sv.html +4 -4
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/intro_section.html +7 -6
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/macros/records_list.html +2 -1
- invenio_app_rdm/theme/templates/semantic-ui/invenio_communities/default_static_page.html +26 -0
- invenio_app_rdm/theme/webpack.py +3 -2
- invenio_app_rdm/translations/ar/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ar/LC_MESSAGES/messages.po +972 -376
- invenio_app_rdm/translations/bg/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/bg/LC_MESSAGES/messages.po +907 -278
- invenio_app_rdm/translations/ca/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ca/LC_MESSAGES/messages.po +912 -283
- invenio_app_rdm/translations/cs/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/cs/LC_MESSAGES/messages.po +1069 -405
- invenio_app_rdm/translations/da/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/da/LC_MESSAGES/messages.po +908 -273
- invenio_app_rdm/translations/de/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/de/LC_MESSAGES/messages.po +1017 -406
- invenio_app_rdm/translations/el/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/el/LC_MESSAGES/messages.po +915 -286
- invenio_app_rdm/translations/es/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/es/LC_MESSAGES/messages.po +963 -371
- invenio_app_rdm/translations/et/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/et/LC_MESSAGES/messages.po +938 -362
- invenio_app_rdm/translations/fa/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/fa/LC_MESSAGES/messages.po +906 -277
- invenio_app_rdm/translations/fr/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/fr/LC_MESSAGES/messages.po +1032 -375
- invenio_app_rdm/translations/hr/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/hr/LC_MESSAGES/messages.po +907 -278
- invenio_app_rdm/translations/hu/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/hu/LC_MESSAGES/messages.po +985 -369
- invenio_app_rdm/translations/it/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/it/LC_MESSAGES/messages.po +928 -298
- invenio_app_rdm/translations/ja/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ja/LC_MESSAGES/messages.po +907 -278
- invenio_app_rdm/translations/ka/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ka/LC_MESSAGES/messages.po +909 -280
- invenio_app_rdm/translations/ko/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ko/LC_MESSAGES/messages.po +1361 -0
- invenio_app_rdm/translations/lt/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/lt/LC_MESSAGES/messages.po +910 -281
- invenio_app_rdm/translations/messages.pot +486 -303
- invenio_app_rdm/translations/no/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/no/LC_MESSAGES/messages.po +907 -278
- invenio_app_rdm/translations/pl/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/pl/LC_MESSAGES/messages.po +907 -278
- invenio_app_rdm/translations/pt/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/pt/LC_MESSAGES/messages.po +906 -277
- invenio_app_rdm/translations/ro/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ro/LC_MESSAGES/messages.po +1042 -384
- invenio_app_rdm/translations/ru/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ru/LC_MESSAGES/messages.po +1022 -370
- invenio_app_rdm/translations/sk/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/sk/LC_MESSAGES/messages.po +916 -287
- invenio_app_rdm/translations/sv/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/sv/LC_MESSAGES/messages.po +989 -380
- invenio_app_rdm/translations/tr/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/tr/LC_MESSAGES/messages.po +992 -341
- invenio_app_rdm/translations/uk/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/uk/LC_MESSAGES/messages.po +935 -356
- invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.po +939 -347
- invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.po +907 -278
- invenio_app_rdm/upgrade_scripts/migrate_12_0_to_13_0.py +190 -62
- {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/METADATA +118 -7
- {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/RECORD +209 -225
- {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/entry_points.txt +2 -0
- {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/top_level.txt +0 -1
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/i18next-scanner.config.js +0 -64
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/package-lock.json +0 -1512
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/scripts/compileCatalog.js +0 -40
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/scripts/initCatalog.js +0 -20
- tests/__init__.py +0 -8
- tests/api/__init__.py +0 -8
- tests/api/conftest.py +0 -24
- tests/api/test_protect_files_rest.py +0 -73
- tests/api/test_record_api.py +0 -175
- tests/api/test_stats_api.py +0 -26
- tests/conftest.py +0 -390
- tests/fixtures/__init__.py +0 -8
- tests/fixtures/app_data/oai_sets.yaml +0 -3
- tests/fixtures/app_data/pages/about.html +0 -1
- tests/fixtures/app_data/pages.yaml +0 -4
- tests/fixtures/conftest.py +0 -27
- tests/fixtures/test_cli.py +0 -25
- tests/fixtures/test_fixtures.py +0 -46
- tests/mock_module/__init__.py +0 -7
- tests/mock_module/templates/mock_mail.html +0 -27
- tests/mock_module/views.py +0 -32
- tests/redirector/__init__.py +0 -8
- tests/redirector/conftest.py +0 -54
- tests/redirector/test_redirector.py +0 -28
- tests/test_tasks.py +0 -209
- tests/test_utils.py +0 -67
- tests/test_version.py +0 -16
- tests/test_views.py +0 -43
- tests/ui/__init__.py +0 -8
- tests/ui/conftest.py +0 -115
- tests/ui/test_deposits.py +0 -115
- tests/ui/test_export_formats.py +0 -37
- tests/ui/test_file_download.py +0 -73
- tests/ui/test_filters.py +0 -10
- tests/ui/test_robotstxt.py +0 -35
- tests/ui/test_signposting_ui.py +0 -95
- tests/ui/test_sitemaps.py +0 -85
- tests/ui/test_stats_ui.py +0 -92
- {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/WHEEL +0 -0
- {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/licenses/LICENSE +0 -0
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
DeleteButton,
|
|
21
21
|
DepositStatusBox,
|
|
22
22
|
FileUploader,
|
|
23
|
+
UppyUploader,
|
|
23
24
|
FormFeedback,
|
|
24
25
|
IdentifiersField,
|
|
25
26
|
PIDField,
|
|
@@ -46,13 +47,14 @@ import Overridable from "react-overridable";
|
|
|
46
47
|
import { CopyrightsField } from "@js/invenio_rdm_records/src/deposit/fields/CopyrightsField/CopyrightsField";
|
|
47
48
|
import { ShareDraftButton } from "./ShareDraftButton";
|
|
48
49
|
import { depositFormSectionsConfig, severityChecksConfig } from "./config";
|
|
50
|
+
import { RecordDeletion } from "../components/RecordDeletion";
|
|
51
|
+
import { FileModificationUntil } from "../components/FileModificationUntil";
|
|
49
52
|
|
|
50
53
|
export class RDMDepositForm extends Component {
|
|
51
54
|
constructor(props) {
|
|
52
55
|
super(props);
|
|
53
56
|
this.config = props.config || {};
|
|
54
57
|
const { files, record } = this.props;
|
|
55
|
-
|
|
56
58
|
// TODO: Make ALL vocabulary be generated by backend.
|
|
57
59
|
// Currently, some vocabulary is generated by backend and some is
|
|
58
60
|
// generated by frontend here. Iteration is faster and abstractions can be
|
|
@@ -112,8 +114,11 @@ export class RDMDepositForm extends Component {
|
|
|
112
114
|
filesLocked,
|
|
113
115
|
recordRestrictionGracePeriod,
|
|
114
116
|
allowRecordRestriction,
|
|
117
|
+
recordDeletion,
|
|
118
|
+
fileModification,
|
|
115
119
|
groupsEnabled,
|
|
116
120
|
allowEmptyFiles,
|
|
121
|
+
useUppy,
|
|
117
122
|
} = this.props;
|
|
118
123
|
|
|
119
124
|
// Adding section id to custom fields UI, to be used for accordions
|
|
@@ -121,6 +126,7 @@ export class RDMDepositForm extends Component {
|
|
|
121
126
|
...section,
|
|
122
127
|
id: section.section.toLowerCase().replace(/\s+/g, "-") + "-section",
|
|
123
128
|
}));
|
|
129
|
+
const UploaderField = useUppy ? UppyUploader : FileUploader;
|
|
124
130
|
|
|
125
131
|
return (
|
|
126
132
|
<Overridable
|
|
@@ -133,6 +139,8 @@ export class RDMDepositForm extends Component {
|
|
|
133
139
|
filesLocked={filesLocked}
|
|
134
140
|
recordRestrictionGracePeriod={recordRestrictionGracePeriod}
|
|
135
141
|
allowRecordRestriction={allowRecordRestriction}
|
|
142
|
+
recordDeletion={recordDeletion}
|
|
143
|
+
fileModification={fileModification}
|
|
136
144
|
groupsEnabled={groupsEnabled}
|
|
137
145
|
allowEmptyFiles={allowEmptyFiles}
|
|
138
146
|
customFieldsUI={customFieldsUI}
|
|
@@ -143,6 +151,7 @@ export class RDMDepositForm extends Component {
|
|
|
143
151
|
preselectedCommunity={preselectedCommunity}
|
|
144
152
|
files={files}
|
|
145
153
|
permissions={permissions}
|
|
154
|
+
errors={record.errors}
|
|
146
155
|
>
|
|
147
156
|
<Overridable
|
|
148
157
|
id="InvenioAppRdm.Deposit.FormFeedback.container"
|
|
@@ -175,12 +184,25 @@ export class RDMDepositForm extends Component {
|
|
|
175
184
|
record={record}
|
|
176
185
|
config={this.config}
|
|
177
186
|
noFiles={this.noFiles}
|
|
187
|
+
fileModification={fileModification}
|
|
188
|
+
filesLocked={filesLocked}
|
|
178
189
|
>
|
|
179
190
|
<AccordionField
|
|
180
191
|
includesPaths={this.sectionsConfig["files-section"]}
|
|
181
192
|
severityChecks={this.severityChecks}
|
|
182
193
|
active
|
|
183
|
-
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
|
+
}
|
|
184
206
|
id="files-section"
|
|
185
207
|
>
|
|
186
208
|
{this.noFiles && record.is_published && (
|
|
@@ -196,13 +218,15 @@ export class RDMDepositForm extends Component {
|
|
|
196
218
|
filesLocked={filesLocked}
|
|
197
219
|
allowEmptyFiles={allowEmptyFiles}
|
|
198
220
|
>
|
|
199
|
-
<
|
|
221
|
+
<UploaderField
|
|
200
222
|
isDraftRecord={!record.is_published}
|
|
201
223
|
quota={this.config.quota}
|
|
202
224
|
decimalSizeDisplay={this.config.decimal_size_display}
|
|
203
225
|
showMetadataOnlyToggle={permissions?.can_manage_files}
|
|
204
226
|
allowEmptyFiles={allowEmptyFiles}
|
|
205
227
|
filesLocked={filesLocked}
|
|
228
|
+
fileUploadConcurrency={config.fileUploadConcurrency}
|
|
229
|
+
fileModification={fileModification}
|
|
206
230
|
/>
|
|
207
231
|
</Overridable>
|
|
208
232
|
</AccordionField>
|
|
@@ -672,6 +696,7 @@ export class RDMDepositForm extends Component {
|
|
|
672
696
|
(widget) => import(`react-invenio-forms`),
|
|
673
697
|
]}
|
|
674
698
|
fieldPathPrefix="custom_fields"
|
|
699
|
+
severityChecks={this.severityChecks}
|
|
675
700
|
/>
|
|
676
701
|
</Overridable>
|
|
677
702
|
)}
|
|
@@ -755,7 +780,26 @@ export class RDMDepositForm extends Component {
|
|
|
755
780
|
>
|
|
756
781
|
<Card>
|
|
757
782
|
<Card.Content>
|
|
758
|
-
<
|
|
783
|
+
<Grid relaxed>
|
|
784
|
+
<Grid.Column width={16}>
|
|
785
|
+
<DeleteButton fluid />
|
|
786
|
+
</Grid.Column>
|
|
787
|
+
|
|
788
|
+
{record.is_published && recordDeletion["enabled"] && (
|
|
789
|
+
<Grid.Column width={16} className="pt-0">
|
|
790
|
+
<RecordDeletion
|
|
791
|
+
record={record}
|
|
792
|
+
permissions={permissions}
|
|
793
|
+
recordDeletion={recordDeletion}
|
|
794
|
+
options={
|
|
795
|
+
this.vocabularies.metadata
|
|
796
|
+
.deletion_request_removal_reasons
|
|
797
|
+
}
|
|
798
|
+
disabled={!recordDeletion["allowed"]}
|
|
799
|
+
/>
|
|
800
|
+
</Grid.Column>
|
|
801
|
+
)}
|
|
802
|
+
</Grid>
|
|
759
803
|
</Card.Content>
|
|
760
804
|
</Card>
|
|
761
805
|
</Overridable>
|
|
@@ -776,18 +820,24 @@ RDMDepositForm.propTypes = {
|
|
|
776
820
|
config: PropTypes.object.isRequired,
|
|
777
821
|
recordRestrictionGracePeriod: PropTypes.number.isRequired,
|
|
778
822
|
allowRecordRestriction: PropTypes.bool.isRequired,
|
|
823
|
+
recordDeletion: PropTypes.object,
|
|
824
|
+
fileModification: PropTypes.object,
|
|
779
825
|
record: PropTypes.object.isRequired,
|
|
780
826
|
preselectedCommunity: PropTypes.object,
|
|
781
827
|
files: PropTypes.object,
|
|
782
828
|
permissions: PropTypes.object,
|
|
783
829
|
filesLocked: PropTypes.bool,
|
|
784
830
|
allowEmptyFiles: PropTypes.bool,
|
|
831
|
+
useUppy: PropTypes.bool,
|
|
785
832
|
};
|
|
786
833
|
|
|
787
834
|
RDMDepositForm.defaultProps = {
|
|
788
835
|
preselectedCommunity: undefined,
|
|
789
|
-
permissions: null,
|
|
790
836
|
files: null,
|
|
837
|
+
permissions: null,
|
|
791
838
|
filesLocked: false,
|
|
792
839
|
allowEmptyFiles: true,
|
|
840
|
+
useUppy: false,
|
|
841
|
+
recordDeletion: {},
|
|
842
|
+
fileModification: {},
|
|
793
843
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// This file is part of InvenioRDM
|
|
2
|
-
// Copyright (C) 2020-
|
|
2
|
+
// Copyright (C) 2020-2025 CERN.
|
|
3
3
|
// Copyright (C) 2020-2022 Northwestern University.
|
|
4
4
|
// Copyright (C) 2022-2024 KTH Royal Institute of Technology.
|
|
5
5
|
//
|
|
@@ -21,12 +21,15 @@ ReactDOM.render(
|
|
|
21
21
|
preselectedCommunity={getInputFromDOM("deposits-draft-community")}
|
|
22
22
|
files={getInputFromDOM("deposits-record-files")}
|
|
23
23
|
config={getInputFromDOM("deposits-config")}
|
|
24
|
+
useUppy={getInputFromDOM("deposits-use-uppy-ui")}
|
|
24
25
|
permissions={getInputFromDOM("deposits-record-permissions")}
|
|
25
26
|
filesLocked={getInputFromDOM("deposits-record-locked-files")}
|
|
26
27
|
recordRestrictionGracePeriod={getInputFromDOM(
|
|
27
28
|
"deposits-record-restriction-grace-period"
|
|
28
29
|
)}
|
|
29
30
|
allowRecordRestriction={getInputFromDOM("deposits-allow-record-restriction")}
|
|
31
|
+
recordDeletion={getInputFromDOM("deposits-record-deletion")}
|
|
32
|
+
fileModification={getInputFromDOM("deposits-file-modification")}
|
|
30
33
|
groupsEnabled={getInputFromDOM("config-groups-enabled")}
|
|
31
34
|
allowEmptyFiles={getInputFromDOM("records-resources-allow-empty-files")}
|
|
32
35
|
isDoiRequired={getInputFromDOM("deposits-is-doi-required")}
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/CommunitiesManagement.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// This file is part of InvenioRDM
|
|
2
|
-
// Copyright (C) 2023-
|
|
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.
|
|
@@ -135,7 +135,7 @@ export class CommunitiesManagement extends Component {
|
|
|
135
135
|
successActionCallback={this.handleRefresh}
|
|
136
136
|
recordCommunityEndpoint={recordCommunityEndpoint}
|
|
137
137
|
permissions={permissions}
|
|
138
|
-
|
|
138
|
+
recordParent={record.parent}
|
|
139
139
|
/>
|
|
140
140
|
|
|
141
141
|
{!loading && communities?.length > MAX_COMMUNITIES && (
|
|
@@ -9,6 +9,7 @@ import React, { Component } from "react";
|
|
|
9
9
|
import PropTypes from "prop-types";
|
|
10
10
|
import { Grid, Dropdown, Button } from "semantic-ui-react";
|
|
11
11
|
import { i18next } from "@translations/invenio_app_rdm/i18next";
|
|
12
|
+
import { CopyButton } from "@js/invenio_app_rdm/components/CopyButton";
|
|
12
13
|
|
|
13
14
|
export class ExportDropdown extends Component {
|
|
14
15
|
constructor(props) {
|
|
@@ -18,6 +19,7 @@ export class ExportDropdown extends Component {
|
|
|
18
19
|
selectedFormatUrl: formats[0]?.export_url,
|
|
19
20
|
};
|
|
20
21
|
}
|
|
22
|
+
|
|
21
23
|
render() {
|
|
22
24
|
const { formats } = this.props;
|
|
23
25
|
const { selectedFormatUrl } = this.state;
|
|
@@ -31,7 +33,7 @@ export class ExportDropdown extends Component {
|
|
|
31
33
|
|
|
32
34
|
return (
|
|
33
35
|
<Grid>
|
|
34
|
-
<Grid.Column width={
|
|
36
|
+
<Grid.Column width={10}>
|
|
35
37
|
<Dropdown
|
|
36
38
|
aria-label={i18next.t("Export selection")}
|
|
37
39
|
selection
|
|
@@ -42,7 +44,7 @@ export class ExportDropdown extends Component {
|
|
|
42
44
|
defaultValue={selectedFormatUrl}
|
|
43
45
|
/>
|
|
44
46
|
</Grid.Column>
|
|
45
|
-
<Grid.Column width={
|
|
47
|
+
<Grid.Column width={4} className="pl-0">
|
|
46
48
|
<Button
|
|
47
49
|
as="a"
|
|
48
50
|
role="button"
|
|
@@ -53,6 +55,9 @@ export class ExportDropdown extends Component {
|
|
|
53
55
|
{i18next.t("Export")}
|
|
54
56
|
</Button>
|
|
55
57
|
</Grid.Column>
|
|
58
|
+
<Grid.Column width={2} className="pl-0">
|
|
59
|
+
<CopyButton url={selectedFormatUrl} />
|
|
60
|
+
</Grid.Column>
|
|
56
61
|
</Grid>
|
|
57
62
|
);
|
|
58
63
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// This file is part of InvenioRDM
|
|
2
|
-
// Copyright (C) 2023-
|
|
2
|
+
// Copyright (C) 2023-2025 CERN.
|
|
3
3
|
//
|
|
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.
|
|
@@ -10,8 +10,15 @@ import { i18next } from "@translations/invenio_app_rdm/i18next";
|
|
|
10
10
|
import PropTypes from "prop-types";
|
|
11
11
|
import { http } from "react-invenio-forms";
|
|
12
12
|
import { APIRoutes } from "../administration/users/api/routes";
|
|
13
|
+
import { RecordDeletion } from "../components/RecordDeletion";
|
|
13
14
|
|
|
14
|
-
export const ManageButton = ({
|
|
15
|
+
export const ManageButton = ({
|
|
16
|
+
record,
|
|
17
|
+
recordOwnerID,
|
|
18
|
+
permissions,
|
|
19
|
+
recordDeletion,
|
|
20
|
+
recordDeletionOptions,
|
|
21
|
+
}) => {
|
|
15
22
|
return (
|
|
16
23
|
<Dropdown
|
|
17
24
|
fluid
|
|
@@ -23,30 +30,56 @@ export const ManageButton = ({ recid, recordOwnerID }) => {
|
|
|
23
30
|
className="icon text-align-center"
|
|
24
31
|
>
|
|
25
32
|
<Dropdown.Menu>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
{
|
|
33
|
+
{recordDeletion["valid_user"] && (
|
|
34
|
+
<>
|
|
35
|
+
<Dropdown.Item>
|
|
36
|
+
<RecordDeletion
|
|
37
|
+
record={record}
|
|
38
|
+
permissions={permissions}
|
|
39
|
+
recordDeletion={recordDeletion}
|
|
40
|
+
options={recordDeletionOptions}
|
|
41
|
+
disabled={!recordDeletion["allowed"]}
|
|
42
|
+
/>
|
|
43
|
+
</Dropdown.Item>
|
|
44
|
+
|
|
45
|
+
{permissions.can_moderate && <Dropdown.Divider />}
|
|
46
|
+
</>
|
|
47
|
+
)}
|
|
48
|
+
{permissions.can_moderate && (
|
|
49
|
+
<>
|
|
50
|
+
<Dropdown.Item
|
|
51
|
+
as="a"
|
|
52
|
+
href={`/administration/records?q=id:${record["id"]}`}
|
|
53
|
+
target="_blank"
|
|
54
|
+
key="manage_record"
|
|
55
|
+
text={i18next.t("Manage record")}
|
|
56
|
+
/>
|
|
57
|
+
<Dropdown.Item
|
|
58
|
+
as="a"
|
|
59
|
+
href={`/administration/users?q=id:${recordOwnerID}`}
|
|
60
|
+
target="_blank"
|
|
61
|
+
key="manage_user"
|
|
62
|
+
text={i18next.t("Manage user")}
|
|
63
|
+
/>
|
|
64
|
+
<Dropdown.Divider />
|
|
65
|
+
{recordOwnerID && <BlockUserItem recordOwnerID={recordOwnerID} />}
|
|
66
|
+
</>
|
|
67
|
+
)}
|
|
42
68
|
</Dropdown.Menu>
|
|
43
69
|
</Dropdown>
|
|
44
70
|
);
|
|
45
71
|
};
|
|
46
72
|
|
|
47
73
|
ManageButton.propTypes = {
|
|
48
|
-
|
|
74
|
+
record: PropTypes.object.isRequired,
|
|
49
75
|
recordOwnerID: PropTypes.string.isRequired,
|
|
76
|
+
permissions: PropTypes.object.isRequired,
|
|
77
|
+
recordDeletion: PropTypes.object,
|
|
78
|
+
recordDeletionOptions: PropTypes.array.isRequired,
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
ManageButton.defaultProps = {
|
|
82
|
+
recordDeletion: {},
|
|
50
83
|
};
|
|
51
84
|
|
|
52
85
|
const BlockUserItem = ({ recordOwnerID }) => {
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCitationField.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// This file is part of InvenioRDM
|
|
2
|
-
// Copyright (C) 2021-
|
|
2
|
+
// Copyright (C) 2021-2025 CERN.
|
|
3
3
|
// Copyright (C) 2021 Graz University of Technology.
|
|
4
4
|
// Copyright (C) 2021 TU Wien
|
|
5
5
|
//
|
|
@@ -28,18 +28,18 @@ export class RecordCitationField extends Component {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
componentDidMount() {
|
|
31
|
-
const {
|
|
32
|
-
this.getCitation(
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
componentWillUnmount() {
|
|
36
|
-
this.cancellableFetchCitation?.cancel();
|
|
31
|
+
const { recordLinks, defaultStyle, includeDeleted } = this.props;
|
|
32
|
+
this.getCitation(recordLinks, defaultStyle, includeDeleted);
|
|
37
33
|
}
|
|
38
34
|
|
|
39
35
|
async componentDidUpdate() {
|
|
40
36
|
await window.MathJax?.typesetPromise();
|
|
41
37
|
}
|
|
42
38
|
|
|
39
|
+
componentWillUnmount() {
|
|
40
|
+
this.cancellableFetchCitation?.cancel();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
43
|
placeholderLoader = () => {
|
|
44
44
|
return (
|
|
45
45
|
<Placeholder>
|
|
@@ -56,9 +56,9 @@ export class RecordCitationField extends Component {
|
|
|
56
56
|
return <Message negative>{message}</Message>;
|
|
57
57
|
};
|
|
58
58
|
|
|
59
|
-
fetchCitation = async (
|
|
59
|
+
fetchCitation = async (recordLinks, style, includeDeleted) => {
|
|
60
60
|
const includeDeletedParam = includeDeleted === true ? "&include_deleted=1" : "";
|
|
61
|
-
const url = `${
|
|
61
|
+
const url = `${recordLinks.self}?locale=${navigator.language}&style=${style}${includeDeletedParam}`;
|
|
62
62
|
return await http.get(url, {
|
|
63
63
|
headers: {
|
|
64
64
|
Accept: "text/x-bibliography",
|
|
@@ -66,7 +66,7 @@ export class RecordCitationField extends Component {
|
|
|
66
66
|
});
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
-
getCitation = async (
|
|
69
|
+
getCitation = async (recordLinks, style, includeDeleted) => {
|
|
70
70
|
this.setState({
|
|
71
71
|
loading: true,
|
|
72
72
|
citation: "",
|
|
@@ -74,7 +74,7 @@ export class RecordCitationField extends Component {
|
|
|
74
74
|
});
|
|
75
75
|
|
|
76
76
|
this.cancellableFetchCitation = withCancel(
|
|
77
|
-
this.fetchCitation(
|
|
77
|
+
this.fetchCitation(recordLinks, style, includeDeleted)
|
|
78
78
|
);
|
|
79
79
|
|
|
80
80
|
try {
|
|
@@ -95,7 +95,7 @@ export class RecordCitationField extends Component {
|
|
|
95
95
|
};
|
|
96
96
|
|
|
97
97
|
render() {
|
|
98
|
-
const { styles,
|
|
98
|
+
const { styles, recordLinks, defaultStyle, includeDeleted } = this.props;
|
|
99
99
|
const { loading, citation, error } = this.state;
|
|
100
100
|
const citationOptions = styles.map((style) => {
|
|
101
101
|
return {
|
|
@@ -140,7 +140,8 @@ export class RecordCitationField extends Component {
|
|
|
140
140
|
options={citationOptions}
|
|
141
141
|
selection
|
|
142
142
|
onChange={_debounce(
|
|
143
|
-
(event, data) =>
|
|
143
|
+
(event, data) =>
|
|
144
|
+
this.getCitation(recordLinks, data.value, includeDeleted),
|
|
144
145
|
500
|
|
145
146
|
)}
|
|
146
147
|
/>
|
|
@@ -155,7 +156,7 @@ export class RecordCitationField extends Component {
|
|
|
155
156
|
|
|
156
157
|
RecordCitationField.propTypes = {
|
|
157
158
|
styles: PropTypes.array.isRequired,
|
|
158
|
-
|
|
159
|
+
recordLinks: PropTypes.object.isRequired,
|
|
159
160
|
defaultStyle: PropTypes.string.isRequired,
|
|
160
161
|
includeDeleted: PropTypes.bool.isRequired,
|
|
161
162
|
};
|
|
@@ -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
|
// InvenioRDM 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.
|
|
@@ -13,9 +13,9 @@ import { RecordCommunitiesSearch } from "./RecordCommunitiesSearch";
|
|
|
13
13
|
export class RecordCommunitiesListModal extends Component {
|
|
14
14
|
constructor(props) {
|
|
15
15
|
super(props);
|
|
16
|
-
const {
|
|
16
|
+
const { recordParent } = this.props;
|
|
17
17
|
this.state = {
|
|
18
|
-
recordParent:
|
|
18
|
+
recordParent: recordParent,
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
|
|
@@ -77,7 +77,7 @@ RecordCommunitiesListModal.propTypes = {
|
|
|
77
77
|
handleOnClose: PropTypes.func.isRequired,
|
|
78
78
|
handleOnOpen: PropTypes.func.isRequired,
|
|
79
79
|
permissions: PropTypes.object.isRequired,
|
|
80
|
-
|
|
80
|
+
recordParent: PropTypes.object.isRequired,
|
|
81
81
|
};
|
|
82
82
|
|
|
83
83
|
RecordCommunitiesListModal.defaultProps = {
|
|
@@ -91,7 +91,7 @@ export class RecordCommunitySubmissionModal extends Component {
|
|
|
91
91
|
} catch (error) {
|
|
92
92
|
console.error(error);
|
|
93
93
|
this.setState({
|
|
94
|
-
error: error
|
|
94
|
+
error: error["message"],
|
|
95
95
|
});
|
|
96
96
|
} finally {
|
|
97
97
|
this.setState({ loading: false });
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// This file is part of InvenioRDM
|
|
2
|
-
// Copyright (C) 2020-
|
|
2
|
+
// Copyright (C) 2020-2025 CERN.
|
|
3
3
|
// Copyright (C) 2020-2021 Northwestern University.
|
|
4
4
|
// Copyright (C) 2021 Graz University of Technology.
|
|
5
5
|
//
|
|
@@ -34,6 +34,8 @@ export class RecordManagement extends Component {
|
|
|
34
34
|
currentUserId,
|
|
35
35
|
recordOwnerID,
|
|
36
36
|
groupsEnabled,
|
|
37
|
+
recordDeletion,
|
|
38
|
+
recordDeletionOptions,
|
|
37
39
|
} = this.props;
|
|
38
40
|
const { error } = this.state;
|
|
39
41
|
const { id: recid } = record;
|
|
@@ -44,9 +46,15 @@ export class RecordManagement extends Component {
|
|
|
44
46
|
|
|
45
47
|
return (
|
|
46
48
|
<Grid columns={1} className="record-management">
|
|
47
|
-
{permissions.can_moderate && (
|
|
49
|
+
{(recordDeletion["valid_user"] || permissions.can_moderate) && (
|
|
48
50
|
<Grid.Column className="pb-5">
|
|
49
|
-
<ManageButton
|
|
51
|
+
<ManageButton
|
|
52
|
+
record={record}
|
|
53
|
+
recordOwnerID={recordOwnerID}
|
|
54
|
+
permissions={permissions}
|
|
55
|
+
recordDeletion={recordDeletion}
|
|
56
|
+
recordDeletionOptions={recordDeletionOptions}
|
|
57
|
+
/>
|
|
50
58
|
</Grid.Column>
|
|
51
59
|
)}
|
|
52
60
|
{permissions.can_edit && !isDraft && (
|
|
@@ -120,4 +128,10 @@ RecordManagement.propTypes = {
|
|
|
120
128
|
isPreviewSubmissionRequest: PropTypes.bool.isRequired,
|
|
121
129
|
currentUserId: PropTypes.string.isRequired,
|
|
122
130
|
recordOwnerID: PropTypes.string.isRequired,
|
|
131
|
+
recordDeletion: PropTypes.object,
|
|
132
|
+
recordDeletionOptions: PropTypes.array.isRequired,
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
RecordManagement.defaultProps = {
|
|
136
|
+
recordDeletion: {},
|
|
123
137
|
};
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordVersionsList.js
CHANGED
|
@@ -11,7 +11,6 @@ import React, { useEffect, useState } from "react";
|
|
|
11
11
|
import { Grid, Icon, Message, Placeholder, List, Divider } from "semantic-ui-react";
|
|
12
12
|
import { i18next } from "@translations/invenio_app_rdm/i18next";
|
|
13
13
|
import PropTypes from "prop-types";
|
|
14
|
-
import { Trans } from "react-i18next";
|
|
15
14
|
import { withCancel, http, ErrorMessage } from "react-invenio-forms";
|
|
16
15
|
|
|
17
16
|
const deserializeRecord = (record) => ({
|
|
@@ -179,28 +178,28 @@ export const RecordVersionsList = ({ record, isPreview }) => {
|
|
|
179
178
|
{recordParentDOI ? (
|
|
180
179
|
<List.Item className="parent-doi pr-0">
|
|
181
180
|
<List.Content floated="left">
|
|
182
|
-
<
|
|
183
|
-
<
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
This DOI represents all versions, and will always resolve to the latest
|
|
188
|
-
|
|
189
|
-
</
|
|
190
|
-
</
|
|
181
|
+
<p className="text-muted">
|
|
182
|
+
<strong>{i18next.t("Cite all versions?")}</strong>{" "}
|
|
183
|
+
{i18next.t("You can cite all versions by using the DOI")}{" "}
|
|
184
|
+
<a href={recordDeserialized.links.parent_doi}>{recordParentDOI}</a>.{" "}
|
|
185
|
+
{i18next.t(
|
|
186
|
+
"This DOI represents all versions, and will always resolve to the latest one."
|
|
187
|
+
)}{" "}
|
|
188
|
+
<a href="/help/versioning">{i18next.t("Read more")}</a>.
|
|
189
|
+
</p>
|
|
191
190
|
</List.Content>
|
|
192
191
|
</List.Item>
|
|
193
192
|
) : recordDraftParentDOIFormat ? (
|
|
194
193
|
// new drafts without registered parent dois yet
|
|
195
194
|
<List.Item className="parent-doi pr-0">
|
|
196
195
|
<List.Content floated="left">
|
|
197
|
-
<
|
|
198
|
-
<
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
</
|
|
203
|
-
</
|
|
196
|
+
<p className="text-muted">
|
|
197
|
+
<strong>{i18next.t("Cite all versions?")}</strong>{" "}
|
|
198
|
+
{i18next.t("You can cite all versions by using the DOI")}{" "}
|
|
199
|
+
{recordDraftParentDOIFormat}.{" "}
|
|
200
|
+
{i18next.t("The DOI is registered when the first version is published.")}{" "}
|
|
201
|
+
<a href="/help/versioning">{i18next.t("Read more")}</a>.
|
|
202
|
+
</p>
|
|
204
203
|
</List.Content>
|
|
205
204
|
</List.Item>
|
|
206
205
|
) : null}
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
import React, { Component } from "react";
|
|
9
9
|
import { Button, Modal, Message, Icon, Checkbox } from "semantic-ui-react";
|
|
10
10
|
import { i18next } from "@translations/invenio_app_rdm/i18next";
|
|
11
|
-
import { Trans } from "react-i18next";
|
|
12
11
|
import { http, ErrorMessage } from "react-invenio-forms";
|
|
13
12
|
import PropTypes from "prop-types";
|
|
14
13
|
|
|
@@ -124,10 +123,11 @@ export class RemoveFromCommunityAction extends Component {
|
|
|
124
123
|
label={
|
|
125
124
|
/* eslint-disable-next-line jsx-a11y/label-has-associated-control */
|
|
126
125
|
<label>
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
</
|
|
126
|
+
{i18next.t("Members of the community ")}
|
|
127
|
+
<b>"{communityTitle}"</b>
|
|
128
|
+
{i18next.t(" will ")}
|
|
129
|
+
<u>{i18next.t("lose their access")}</u>
|
|
130
|
+
{i18next.t(" to the record.")}
|
|
131
131
|
</label>
|
|
132
132
|
}
|
|
133
133
|
checked={checkboxMembers}
|