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
invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/scripts/compileCatalog.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
// This file is part of React-Invenio-Deposit
|
|
2
|
-
// Copyright (C) 2021 Graz University of Technology.
|
|
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
|
-
const { readFileSync, writeFileSync } = require("fs");
|
|
8
|
-
const { gettextToI18next } = require("i18next-conv");
|
|
9
|
-
|
|
10
|
-
const PACKAGE_JSON_BASE_PATH = "./";
|
|
11
|
-
const { languages } = require(`../package`).config;
|
|
12
|
-
|
|
13
|
-
// it accepts the same options as the cli.
|
|
14
|
-
// https://github.com/i18next/i18next-gettext-converter#options
|
|
15
|
-
const options = {
|
|
16
|
-
/* you options here */
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
function save(target) {
|
|
20
|
-
return (result) => {
|
|
21
|
-
writeFileSync(target, result);
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if ("lang" === process.argv[2]) {
|
|
26
|
-
const lang = process.argv[3];
|
|
27
|
-
gettextToI18next(
|
|
28
|
-
lang,
|
|
29
|
-
readFileSync(`${PACKAGE_JSON_BASE_PATH}messages/${lang}/messages.po`),
|
|
30
|
-
options
|
|
31
|
-
).then(save(`${PACKAGE_JSON_BASE_PATH}messages/${lang}/translations.json`));
|
|
32
|
-
} else {
|
|
33
|
-
for (const lang of languages) {
|
|
34
|
-
gettextToI18next(
|
|
35
|
-
lang,
|
|
36
|
-
readFileSync(`${PACKAGE_JSON_BASE_PATH}messages/${lang}/messages.po`),
|
|
37
|
-
options
|
|
38
|
-
).then(save(`${PACKAGE_JSON_BASE_PATH}messages/${lang}/translations.json`));
|
|
39
|
-
}
|
|
40
|
-
}
|
invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/scripts/initCatalog.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
// This file is part of React-Invenio-Deposit
|
|
2
|
-
// Copyright (C) 2021 Graz University of Technology.
|
|
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
|
-
const { writeFileSync } = require("fs");
|
|
8
|
-
const packageJson = require("../package");
|
|
9
|
-
|
|
10
|
-
const { languages } = packageJson.config;
|
|
11
|
-
if ("lang" === process.argv[2]) {
|
|
12
|
-
const addedLang = process.argv[3];
|
|
13
|
-
languages.push(addedLang);
|
|
14
|
-
packageJson.config.languages = [...new Set(languages)];
|
|
15
|
-
writeFileSync(`package.json`, JSON.stringify(packageJson, null, 2));
|
|
16
|
-
} else {
|
|
17
|
-
console.error(
|
|
18
|
-
"Error:Please provide a language by running `npm run init_catalog lang <lang>`"
|
|
19
|
-
);
|
|
20
|
-
}
|
tests/__init__.py
DELETED
tests/api/__init__.py
DELETED
tests/api/conftest.py
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2019 CERN.
|
|
4
|
-
# Copyright (C) 2019 Northwestern University.
|
|
5
|
-
#
|
|
6
|
-
# Invenio App RDM 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
|
-
"""Pytest fixtures and plugins for the API application."""
|
|
10
|
-
|
|
11
|
-
import pytest
|
|
12
|
-
from invenio_app.factory import create_api
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@pytest.fixture(scope="module")
|
|
16
|
-
def create_app():
|
|
17
|
-
"""Create test app."""
|
|
18
|
-
return create_api
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
@pytest.fixture(scope="module")
|
|
22
|
-
def headers():
|
|
23
|
-
"""Return typical API headers."""
|
|
24
|
-
return {"content-type": "application/json", "accept": "application/json"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2021 CERN.
|
|
4
|
-
# Copyright (C) 2021 Northwestern University.
|
|
5
|
-
#
|
|
6
|
-
# Invenio-RDM-Records is free software; you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the MIT License; see LICENSE file for more details.
|
|
8
|
-
|
|
9
|
-
"""Test files-rest is protected."""
|
|
10
|
-
|
|
11
|
-
from io import BytesIO
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def create_draft(client, record, headers):
|
|
15
|
-
"""Create draft and return its id."""
|
|
16
|
-
response = client.post("/records", json=record, headers=headers)
|
|
17
|
-
assert response.status_code == 201
|
|
18
|
-
return response.json["id"]
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def init_file(client, recid, headers):
|
|
22
|
-
"""Init a file for draft with given recid."""
|
|
23
|
-
return client.post(
|
|
24
|
-
f"/records/{recid}/draft/files", headers=headers, json=[{"key": "test.pdf"}]
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def upload_file(client, recid):
|
|
29
|
-
"""Create draft and return its id."""
|
|
30
|
-
return client.put(
|
|
31
|
-
f"/records/{recid}/draft/files/test.pdf/content",
|
|
32
|
-
headers={
|
|
33
|
-
"content-type": "application/octet-stream",
|
|
34
|
-
"accept": "application/json",
|
|
35
|
-
},
|
|
36
|
-
data=BytesIO(b"testfile"),
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def commit_file(client, recid, headers):
|
|
41
|
-
"""Create draft and return its id."""
|
|
42
|
-
return client.post(f"/records/{recid}/draft/files/test.pdf/commit", headers=headers)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
# NOTE: It seems like it was already the case that a logged in user wouldn't be
|
|
46
|
-
# able to access files-rest. We are just making doubly-clear.
|
|
47
|
-
def test_files_rest_endpoint_is_protected(
|
|
48
|
-
running_app, client_with_login, headers, es_clear, minimal_record
|
|
49
|
-
):
|
|
50
|
-
client = client_with_login
|
|
51
|
-
|
|
52
|
-
# Create draft with file
|
|
53
|
-
minimal_record["files"] = {"enabled": True}
|
|
54
|
-
recid = create_draft(client, minimal_record, headers)
|
|
55
|
-
init_file(client, recid, headers)
|
|
56
|
-
upload_file(client, recid)
|
|
57
|
-
commit_file(client, recid, headers)
|
|
58
|
-
|
|
59
|
-
# Get bucket information
|
|
60
|
-
url = f"/records/{recid}/draft/files/test.pdf"
|
|
61
|
-
response = client.get(url, headers=headers)
|
|
62
|
-
bucket_id = response.json["bucket_id"]
|
|
63
|
-
|
|
64
|
-
# Nobody is allowed to use the invenio-files-rest endpoints
|
|
65
|
-
# (even logged-in user). Just testing for the GET of each is enough
|
|
66
|
-
|
|
67
|
-
bucket_url = f"/files/{bucket_id}"
|
|
68
|
-
response = client.get(bucket_url, headers=headers)
|
|
69
|
-
assert 404 == response.status_code # because of files-rest hiding feature
|
|
70
|
-
|
|
71
|
-
bucket_key_url = f"/files/{bucket_id}/test.pdf"
|
|
72
|
-
response = client.get(bucket_key_url, headers=headers)
|
|
73
|
-
assert 404 == response.status_code
|
tests/api/test_record_api.py
DELETED
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2019-2021 CERN.
|
|
4
|
-
# Copyright (C) 2019-2021 Northwestern University.
|
|
5
|
-
# Copyright (C) 2024 Graz University of Technology.
|
|
6
|
-
#
|
|
7
|
-
# Invenio-RDM-Records is free software; you can redistribute it and/or modify
|
|
8
|
-
# it under the terms of the MIT License; see LICENSE file for more details.
|
|
9
|
-
|
|
10
|
-
"""Module tests."""
|
|
11
|
-
|
|
12
|
-
import pytest
|
|
13
|
-
from invenio_pidstore.models import PersistentIdentifier
|
|
14
|
-
|
|
15
|
-
SINGLE_RECORD_API_URL = "/records/{}"
|
|
16
|
-
LIST_RECORDS_API_URL = "/records"
|
|
17
|
-
DRAFT_API_URL = "/records/{}/draft"
|
|
18
|
-
DRAFT_ACTION_API_URL = "/records/{}/draft/actions/{}"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def test_record_read_non_existing_pid(client, location, minimal_record, es_clear):
|
|
22
|
-
"""Retrieve a non existing record."""
|
|
23
|
-
# retrieve unknown record
|
|
24
|
-
response = client.get(SINGLE_RECORD_API_URL.format("notfound"))
|
|
25
|
-
assert response.status_code == 404
|
|
26
|
-
assert response.json["status"] == 404
|
|
27
|
-
assert response.json["message"] == "The persistent identifier does not exist."
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def test_record_draft_create_and_read(
|
|
31
|
-
client_with_login, running_app, minimal_record, es_clear
|
|
32
|
-
):
|
|
33
|
-
"""Test draft creation of a non-existing record."""
|
|
34
|
-
# create a record
|
|
35
|
-
client = client_with_login
|
|
36
|
-
response = client.post(LIST_RECORDS_API_URL, json=minimal_record)
|
|
37
|
-
|
|
38
|
-
assert response.status_code == 201
|
|
39
|
-
|
|
40
|
-
response_fields = response.json.keys()
|
|
41
|
-
fields_to_check = ["id", "metadata", "revision_id", "created", "updated", "links"]
|
|
42
|
-
|
|
43
|
-
for field in fields_to_check:
|
|
44
|
-
assert field in response_fields
|
|
45
|
-
|
|
46
|
-
recid = response.json["id"]
|
|
47
|
-
|
|
48
|
-
# retrieve record draft
|
|
49
|
-
response = client.get(DRAFT_API_URL.format(recid))
|
|
50
|
-
assert response.status_code == 200
|
|
51
|
-
assert response.json is not None
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def test_record_draft_publish(
|
|
55
|
-
client_with_login, headers, running_app, minimal_record, es_clear
|
|
56
|
-
):
|
|
57
|
-
"""Test draft publication of a non-existing record.
|
|
58
|
-
|
|
59
|
-
It has to first create said draft and includes record read.
|
|
60
|
-
"""
|
|
61
|
-
# Create the draft
|
|
62
|
-
client = client_with_login
|
|
63
|
-
response = client.post(LIST_RECORDS_API_URL, json=minimal_record, headers=headers)
|
|
64
|
-
|
|
65
|
-
assert response.status_code == 201
|
|
66
|
-
recid = response.json["id"]
|
|
67
|
-
|
|
68
|
-
# Publish it
|
|
69
|
-
response = client.post(
|
|
70
|
-
DRAFT_ACTION_API_URL.format(recid, "publish"), headers=headers
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
assert response.status_code == 202
|
|
74
|
-
response_fields = response.json.keys()
|
|
75
|
-
fields_to_check = ["id", "metadata", "revision_id", "created", "updated", "links"]
|
|
76
|
-
|
|
77
|
-
for field in fields_to_check:
|
|
78
|
-
assert field in response_fields
|
|
79
|
-
|
|
80
|
-
response = client.get(DRAFT_API_URL.format(recid), headers=headers)
|
|
81
|
-
assert response.status_code == 404
|
|
82
|
-
|
|
83
|
-
# Test record exists
|
|
84
|
-
response = client.get(SINGLE_RECORD_API_URL.format(recid), headers=headers)
|
|
85
|
-
|
|
86
|
-
assert response.status_code == 200
|
|
87
|
-
|
|
88
|
-
response_fields = response.json.keys()
|
|
89
|
-
fields_to_check = ["id", "metadata", "revision_id", "created", "updated", "links"]
|
|
90
|
-
|
|
91
|
-
for field in fields_to_check:
|
|
92
|
-
assert field in response_fields
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
def test_read_record_with_redirected_pid(
|
|
96
|
-
client_with_login, headers, running_app, minimal_record, es_clear
|
|
97
|
-
):
|
|
98
|
-
"""Test read a record with a redirected pid."""
|
|
99
|
-
# Create dummy record
|
|
100
|
-
client = client_with_login
|
|
101
|
-
response = client.post(LIST_RECORDS_API_URL, headers=headers, json=minimal_record)
|
|
102
|
-
assert response.status_code == 201
|
|
103
|
-
# Publish it
|
|
104
|
-
pid1_value = response.json["id"]
|
|
105
|
-
response = client.post(
|
|
106
|
-
DRAFT_ACTION_API_URL.format(pid1_value, "publish"), headers=headers
|
|
107
|
-
)
|
|
108
|
-
assert response.status_code == 202
|
|
109
|
-
|
|
110
|
-
# Create another dummy record
|
|
111
|
-
response = client.post(LIST_RECORDS_API_URL, headers=headers, json=minimal_record)
|
|
112
|
-
assert response.status_code == 201
|
|
113
|
-
pid2_value = response.json["id"]
|
|
114
|
-
# Publish it
|
|
115
|
-
response = client.post(
|
|
116
|
-
DRAFT_ACTION_API_URL.format(pid2_value, "publish"), headers=headers
|
|
117
|
-
)
|
|
118
|
-
assert response.status_code == 202
|
|
119
|
-
|
|
120
|
-
# redirect pid1 to pid2
|
|
121
|
-
pid1 = PersistentIdentifier.get("recid", pid1_value)
|
|
122
|
-
pid2 = PersistentIdentifier.get("recid", pid2_value)
|
|
123
|
-
pid1.redirect(pid2)
|
|
124
|
-
|
|
125
|
-
response = client.get(SINGLE_RECORD_API_URL.format(pid1.pid_value), headers=headers)
|
|
126
|
-
assert response.status_code == 301
|
|
127
|
-
|
|
128
|
-
assert response.json["status"] == 301
|
|
129
|
-
assert response.json["message"] == "Moved Permanently."
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
@pytest.mark.skip()
|
|
133
|
-
def test_read_deleted_record(
|
|
134
|
-
client_with_login, headers, location, minimal_record, es_clear, administration_user
|
|
135
|
-
):
|
|
136
|
-
"""Test read a deleted record."""
|
|
137
|
-
client = client_with_login
|
|
138
|
-
|
|
139
|
-
# Create dummy record to test delete
|
|
140
|
-
response = client.post(LIST_RECORDS_API_URL, headers=headers, json=minimal_record)
|
|
141
|
-
assert response.status_code == 201
|
|
142
|
-
recid = response.json["id"]
|
|
143
|
-
# Publish it
|
|
144
|
-
response = client.post(
|
|
145
|
-
DRAFT_ACTION_API_URL.format(recid, "publish"), headers=headers
|
|
146
|
-
)
|
|
147
|
-
assert response.status_code == 202
|
|
148
|
-
|
|
149
|
-
# Delete the record
|
|
150
|
-
response = client.delete(SINGLE_RECORD_API_URL.format(recid), headers=headers)
|
|
151
|
-
assert response.status_code == 204
|
|
152
|
-
|
|
153
|
-
# Read the deleted record
|
|
154
|
-
response = client.get(SINGLE_RECORD_API_URL.format(recid), headers=headers)
|
|
155
|
-
assert response.status_code == 410
|
|
156
|
-
assert response.json["message"] == "The record has been deleted."
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
def test_record_search(client, headers, running_app, es_clear):
|
|
160
|
-
"""Test record search."""
|
|
161
|
-
expected_response_keys = set(["hits", "links", "aggregations"])
|
|
162
|
-
expected_metadata_keys = set(["resource_type", "creators", "titles"])
|
|
163
|
-
|
|
164
|
-
# Get published bibliographic records
|
|
165
|
-
response = client.get(LIST_RECORDS_API_URL, headers=headers)
|
|
166
|
-
|
|
167
|
-
assert response.status_code == 200
|
|
168
|
-
response_keys = set(response.json.keys())
|
|
169
|
-
# The datamodel has other tests (jsonschemas, mappings, schemas)
|
|
170
|
-
# Here we just want to crosscheck the important ones are there.
|
|
171
|
-
assert expected_response_keys.issubset(response_keys)
|
|
172
|
-
|
|
173
|
-
for r in response.json["hits"]["hits"]:
|
|
174
|
-
metadata_keys = set(r["metadata"])
|
|
175
|
-
assert expected_metadata_keys.issubset(metadata_keys)
|
tests/api/test_stats_api.py
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2023 CERN.
|
|
4
|
-
# Copyright (C) 2024 Graz University of Technology.
|
|
5
|
-
#
|
|
6
|
-
# Invenio App RDM 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
|
-
"""Test the statistics integration."""
|
|
10
|
-
|
|
11
|
-
from invenio_accounts.testutils import login_user_via_session
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def test_ui_event_emission(running_app, headers, client, administration_user):
|
|
15
|
-
"""It is expected that the REST API endpoint for the statistics is disabled."""
|
|
16
|
-
login_user_via_session(client, email=administration_user.email)
|
|
17
|
-
|
|
18
|
-
# NOTE: the permissions are only relevant per requested query type ("stat")
|
|
19
|
-
data = {"my-query": {"stat": "record-view", "params": {"recid": "doesnt-matter"}}}
|
|
20
|
-
result = client.post("/stats", headers=headers, json=data)
|
|
21
|
-
assert result.status_code == 403
|
|
22
|
-
|
|
23
|
-
# i.e. if no queries are requested, nothing will be denied
|
|
24
|
-
result = client.post("/stats", headers=headers, json={})
|
|
25
|
-
assert result.status_code == 200
|
|
26
|
-
assert result.json == {}
|