invenio-app-rdm 8.0.0.dev9__py2.py3-none-any.whl → 14.0.0b4.dev4__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 +13 -4
- invenio_app_rdm/administration/__init__.py +8 -0
- invenio_app_rdm/administration/audit_logs/__init__.py +12 -0
- invenio_app_rdm/administration/audit_logs/audit_logs.py +81 -0
- invenio_app_rdm/administration/domains/__init__.py +22 -0
- invenio_app_rdm/administration/domains/domains.py +159 -0
- invenio_app_rdm/administration/moderation/__init__.py +11 -0
- invenio_app_rdm/administration/moderation/requests.py +175 -0
- invenio_app_rdm/administration/records/__init__.py +15 -0
- invenio_app_rdm/administration/records/records.py +163 -0
- invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/audit_logs.html +14 -0
- invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/domains_search.html +13 -0
- invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/records/drafts.html +14 -0
- invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/records/records.html +14 -0
- 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 +93 -0
- invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/user_moderation.html +14 -0
- invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/user_moderation_details.html +14 -0
- invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/users_search.html +14 -0
- invenio_app_rdm/administration/user_moderation/__init__.py +11 -0
- invenio_app_rdm/administration/user_moderation/user_moderation.py +175 -0
- invenio_app_rdm/administration/users/__init__.py +12 -0
- invenio_app_rdm/administration/users/users.py +130 -0
- invenio_app_rdm/administration/views/__init__.py +11 -0
- invenio_app_rdm/administration/views/ui.py +21 -0
- invenio_app_rdm/cli.py +95 -0
- invenio_app_rdm/communities_ui/__init__.py +9 -0
- invenio_app_rdm/communities_ui/searchapp.py +27 -0
- invenio_app_rdm/communities_ui/sitemap.py +63 -0
- invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/collections/collection.html +60 -0
- invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/collections/macros.html +43 -0
- invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/details/browse/index.html +59 -0
- invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/records/index.html +24 -0
- invenio_app_rdm/communities_ui/views/__init__.py +13 -0
- invenio_app_rdm/communities_ui/views/communities.py +206 -0
- invenio_app_rdm/communities_ui/views/ui.py +93 -0
- invenio_app_rdm/config.py +1072 -182
- invenio_app_rdm/ext.py +157 -0
- invenio_app_rdm/fixtures/__init__.py +56 -0
- invenio_app_rdm/fixtures/data/oai_sets.yaml +6 -0
- invenio_app_rdm/fixtures/oai_sets.py +20 -0
- invenio_app_rdm/fixtures/pages/.gitkeep +1 -0
- invenio_app_rdm/fixtures/pages.py +76 -0
- invenio_app_rdm/records_ui/previewer/__init__.py +9 -0
- invenio_app_rdm/records_ui/previewer/iiif_simple.py +51 -0
- invenio_app_rdm/records_ui/searchapp.py +46 -232
- invenio_app_rdm/records_ui/sitemap.py +44 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html +63 -18
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html +316 -169
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/access-form.html +64 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/citation.html +4 -3
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/contact.html +2 -1
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/creatibutors.html +22 -20
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/description.html +7 -5
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/details.html +299 -167
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/doi.html +3 -24
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/meta.html +36 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/citations.html +6 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/communities.html +34 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/details.html +20 -15
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/export.html +18 -41
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/external_resources.html +55 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/keywords_subjects.html +9 -5
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/licenses.html +62 -49
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/locations.html +23 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/manage_menu.html +33 -6
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/metrics.html +5 -9
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/technical_metadata.html +21 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/versions.html +15 -5
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/stats.html +112 -90
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/subjects.html +21 -19
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/draft_not_found.html +17 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/export.html +3 -2
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/iiif_preview.html +3 -7
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/creatibutors.html +69 -48
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/detail.html +234 -49
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/doi.html +36 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/files.html +170 -71
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/locations.html +62 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/stats_popup.html +21 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/version.html +3 -2
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/restricted_with_doi_tombstone.html +33 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/search.html +3 -1
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/tombstone.html +55 -12
- invenio_app_rdm/records_ui/utils.py +127 -2
- invenio_app_rdm/records_ui/views/__init__.py +114 -38
- invenio_app_rdm/records_ui/views/decorators.py +395 -117
- invenio_app_rdm/records_ui/views/deposits.py +414 -104
- invenio_app_rdm/records_ui/views/filters.py +118 -11
- invenio_app_rdm/records_ui/views/records.py +395 -66
- invenio_app_rdm/redirector/__init__.py +8 -0
- invenio_app_rdm/redirector/resource.py +106 -0
- invenio_app_rdm/redirector/views.py +18 -0
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-inclusion/index.html +14 -0
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-invitation/community_dashboard.html +38 -0
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-invitation/user_dashboard.html +26 -0
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-submission/index.html +129 -0
- 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 +66 -0
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/macros/request_header.html +78 -0
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/record-deletion/index.html +95 -0
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/subcommunity/index.html +49 -0
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/subcommunity-invitation/index.html +49 -0
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/user-access-request/index.html +59 -0
- invenio_app_rdm/requests_ui/views/__init__.py +1 -3
- invenio_app_rdm/requests_ui/views/requests.py +345 -53
- invenio_app_rdm/requests_ui/views/ui.py +38 -9
- invenio_app_rdm/tasks.py +45 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/AuditLogActions.js +136 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/ViewJson.js +35 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/ViewRecentChanges.js +119 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/index.js +31 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/search/SearchResultItemLayout.js +87 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/search/index.js +9 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/CompareRevisionsDropdown.js +89 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/ImpersonateUser.js +92 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/ImpersonateUserForm.js +199 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/RevisionsDiffViewer.js +80 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/SetQuotaAction.js +109 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/SetQuotaForm.js +196 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/index.js +9 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domains/index.js +27 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domains/search/SearchResultItemLayout.js +185 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domains/search/index.js +9 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/drafts/index.js +32 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/CompareRevisions.js +129 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RecordActions.js +75 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RecordResourceActions.js +185 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RemovalReasonsSelect.js +85 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RestoreConfirmation.js +108 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/TombstoneForm.js +212 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/api/api.js +38 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/api/index.js +9 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/api/routes.js +30 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/index.js +40 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/AdministrationSearchLayout.js +56 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/RecordSearchLayout.js +84 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/SearchResultItemLayout.js +171 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/filters/DeletionStatusFilter.js +121 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/filters/index.js +9 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/index.js +10 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchResultItem.js +79 -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/administration/userModeration/ModerationActions.js +103 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/index.js +29 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/SearchResultItemLayout.js +151 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/UserModerationBulkActions.js +0 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/UserModerationSearchLayout.js +56 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/index.js +10 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/UserActions.js +263 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/api/api.js +42 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/api/index.js +8 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/api/routes.js +38 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/index.js +30 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/SearchResultItemLayout.js +202 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/UserSearchLayout.js +81 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/filters/UserStatusFilterComponent.js +114 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/filters/index.js +1 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/index.js +10 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/collectionRecordsSearch/index.js +61 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSearchAppLayout.js +84 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSearchBarElement.js +44 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSingleSearchBarElement.js +46 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/components.js +3 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/index.js +66 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CompactStats.js +52 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CopyButton.js +61 -39
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayPartOfCommunities.js +78 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayVerifiedCommunity.js +54 -0
- 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/components/RecordsResultsListItem.js +189 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js +788 -307
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/ShareDraftButton.js +65 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/config.js +48 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/index.js +27 -13
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/frontpage/RecordsList.js +165 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/frontpage/index.js +23 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/AccessRequestForm.js +254 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/CommunitiesManagement.js +179 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/CommunitiesManagementDropdown.js +186 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/EditButton.js +30 -16
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ExportDropdown.js +68 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageButton.js +140 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageDefaultBrandingAction/ManageDefaultBrandingAction.js +129 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/PendingCommunitiesModal/PendingCommunitiesModal.js +63 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/PendingCommunitiesModal/PendingCommunitiesSearch.js +89 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/PendingCommunitiesModal/PendingCommunityRequestItem.js +33 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCitationField.js +68 -73
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesList.js +150 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesListModal.js +90 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesSearch.js +109 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesSearchItem.js +58 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/index.js +3 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitySubmission/RecordCommunitySubmissionModal.js +171 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js +123 -43
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordVersionsList.js +143 -79
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RemoveFromCommunity/RemoveFromCommunityAction.js +188 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/AccessDropdown.js +93 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/CreateAccessLink.js +111 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksSearchItem.js +170 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksSearchResultContainer.js +236 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksTab.js +106 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessRequests/AccessRequestsTab.js +239 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/AccessUsersGroups.js +178 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/AddUserGroupAccessModal.js +172 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/GroupsTab.js +88 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/PeopleTab.js +88 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/UserGroupAccessSearchResultItem.js +158 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/{ShareButton.js → ShareOptions/ShareButton.js} +23 -6
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/ShareModal.js +252 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/api/api.js +39 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/access.js +24 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/index.js +92 -124
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/theme.js +131 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/index.js +13 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/mapping.js +12 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/AccessRequestExpiration.js +61 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/index.js +1 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineEdit.js +177 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineRead.js +50 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/overrides/TimelineFeedHeader.js +34 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/search/components.js +165 -299
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/search/index.js +48 -20
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/subcommunity/browse.js +28 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/theme.js +164 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/base.js +210 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/communities.js +56 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/requests.js +78 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads.js +210 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/ComputerTabletUploadsItem.js +155 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/MobileUploadsItem.js +154 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/utils.js +85 -74
- 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/creatibutors.less +26 -70
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/landing_page/licenses.less +5 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/previewer/iiif_simple.less +16 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/form.overrides +170 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/form.variables +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/grid.overrides +110 -17
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/grid.variables +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/menu.overrides +395 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/menu.variables +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/message.overrides +34 -8
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/message.variables +6 -9
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/table.overrides +185 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/table.variables +1 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/button.overrides +103 -15
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/button.variables +5 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/container.overrides +121 -13
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/container.variables +6 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/header.overrides +61 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/header.variables +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/icon.overrides +29 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/icon.variables +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/image.overrides +115 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/image.variables +4 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/input.overrides +50 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/input.variables +5 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/label.overrides +116 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/label.variables +0 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/list.overrides +68 -37
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/list.variables +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/segment.overrides +80 -7
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/segment.variables +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/reset.overrides +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/reset.variables +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides +557 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.variables +142 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides +161 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.variables +9 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/checkbox.overrides +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/checkbox.variables +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/dropdown.overrides +116 -12
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/dropdown.variables +4 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/modal.overrides +151 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/modal.variables +5 -0
- 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/less/invenio_app_rdm/theme/modules/tab.overrides +3 -23
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/tab.variables +3 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/transition.overrides +67 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/transition.variables +3 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/theme.less +71 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/card.overrides +168 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/card.variables +2 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/feed.overrides +463 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/feed.variables +1 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/item.overrides +164 -10
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/item.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 +951 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ar/translations.json +307 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/messages.po +895 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/messages.po +896 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/messages.po +961 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/translations.json +295 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/messages.po +897 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/messages.po +830 -160
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/translations.json +282 -88
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/messages.po +883 -4
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/translations.json +259 -65
- 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 +290 -63
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/messages.po +960 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/messages.po +896 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/messages.po +895 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/messages.po +960 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/messages.po +901 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/translations.json +289 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/messages.po +952 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/index.js +17 -6
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/messages.po +905 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/messages.po +889 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/translations.json +277 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/messages.po +895 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/translations.json +283 -0
- 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 +907 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/lt/translations.json +295 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/messages.po +895 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/messages.po +910 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/translations.json +295 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/messages.po +901 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/messages.po +908 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/translations.json +289 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/messages.po +958 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/translations.json +295 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/messages.po +908 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/translations.json +295 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/messages.po +951 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/messages.po +952 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/translations.json +283 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/messages.po +910 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/translations.json +295 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/messages.po +891 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/translations.json +277 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/messages.po +889 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/translations.json +277 -0
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/package.json +5 -8
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/translations.pot +872 -142
- invenio_app_rdm/theme/static/images/gnd-icon.svg +27 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/administration_page.html +19 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/default_static_page.html +33 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/files_integrity_report/email/files_integrity_report.html +31 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/footer.html +32 -79
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/frontpage.html +40 -57
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header.html +114 -76
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header_frontpage.html +16 -13
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header_login.html +151 -61
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.de.html +3 -3
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.en.html +12 -7
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.sv.html +254 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/statistics.en.html +197 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/statistics.sv.html +196 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/versioning.en.html +149 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/versioning.sv.html +143 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/intro_section.html +98 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/javascript.html +12 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/macros/records_list.html +50 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/page.html +36 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/page_cover.html +13 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/robots.txt +15 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/searchbar.html +63 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/settings/notifications.html +17 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/site_footer.html +29 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_communities/default_static_page.html +26 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_previewer/latest_record.html +18 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_previewer/rdm_abstract_previewer.html +30 -0
- invenio_app_rdm/theme/templates/themes/default/invenio_app_rdm/header.html +147 -0
- invenio_app_rdm/theme/templates/themes/default/invenio_app_rdm/site_footer.html +42 -0
- invenio_app_rdm/theme/views.py +106 -37
- invenio_app_rdm/theme/webpack.py +72 -36
- invenio_app_rdm/translations/ar/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ar/LC_MESSAGES/messages.po +1389 -0
- invenio_app_rdm/translations/bg/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/bg/LC_MESSAGES/messages.po +1361 -0
- invenio_app_rdm/translations/ca/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ca/LC_MESSAGES/messages.po +1362 -0
- invenio_app_rdm/translations/cs/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/cs/LC_MESSAGES/messages.po +1398 -0
- invenio_app_rdm/translations/da/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/da/LC_MESSAGES/messages.po +1363 -0
- invenio_app_rdm/translations/de/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/de/LC_MESSAGES/messages.po +1085 -372
- invenio_app_rdm/translations/el/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/el/LC_MESSAGES/messages.po +987 -367
- invenio_app_rdm/translations/es/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/es/LC_MESSAGES/messages.po +1389 -0
- invenio_app_rdm/translations/et/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/et/LC_MESSAGES/messages.po +1364 -0
- invenio_app_rdm/translations/fa/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/fa/LC_MESSAGES/messages.po +1361 -0
- invenio_app_rdm/translations/fr/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/fr/LC_MESSAGES/messages.po +1390 -0
- invenio_app_rdm/translations/hr/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/hr/LC_MESSAGES/messages.po +1361 -0
- invenio_app_rdm/translations/hu/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/hu/LC_MESSAGES/messages.po +1402 -0
- invenio_app_rdm/translations/it/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/it/LC_MESSAGES/messages.po +1366 -0
- invenio_app_rdm/translations/ja/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ja/LC_MESSAGES/messages.po +1361 -0
- invenio_app_rdm/translations/ka/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ka/LC_MESSAGES/messages.po +1361 -0
- 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 +1361 -0
- invenio_app_rdm/translations/messages.pot +1046 -271
- invenio_app_rdm/translations/no/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/no/LC_MESSAGES/messages.po +1361 -0
- invenio_app_rdm/translations/pl/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/pl/LC_MESSAGES/messages.po +1361 -0
- invenio_app_rdm/translations/pt/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/pt/LC_MESSAGES/messages.po +1361 -0
- invenio_app_rdm/translations/ro/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ro/LC_MESSAGES/messages.po +1391 -0
- invenio_app_rdm/translations/ru/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ru/LC_MESSAGES/messages.po +1384 -0
- invenio_app_rdm/translations/sk/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/sk/LC_MESSAGES/messages.po +1362 -0
- invenio_app_rdm/translations/sv/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/sv/LC_MESSAGES/messages.po +1400 -0
- invenio_app_rdm/translations/tr/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/tr/LC_MESSAGES/messages.po +1340 -63
- invenio_app_rdm/translations/uk/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/uk/LC_MESSAGES/messages.po +1363 -0
- invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.po +1363 -0
- invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.po +1361 -0
- invenio_app_rdm/upgrade_scripts/fix_migrated_records_from_1_0_to_2_0.py +1 -0
- invenio_app_rdm/upgrade_scripts/fix_migrated_records_from_8_0_to_9_0.py +90 -0
- invenio_app_rdm/upgrade_scripts/migrate_10_0_to_11_0.py +47 -0
- invenio_app_rdm/upgrade_scripts/migrate_11_0_to_12_0.py +205 -0
- invenio_app_rdm/upgrade_scripts/migrate_12_0_to_13_0.py +235 -0
- invenio_app_rdm/upgrade_scripts/migrate_13_0_to_14_0.py +268 -0
- invenio_app_rdm/upgrade_scripts/migrate_2_0_to_3_0.py +7 -3
- invenio_app_rdm/upgrade_scripts/migrate_3_0_to_4_0.py +4 -6
- invenio_app_rdm/upgrade_scripts/migrate_4_0_to_6_0.py +30 -43
- invenio_app_rdm/upgrade_scripts/migrate_6_0_to_7_0.py +1 -5
- invenio_app_rdm/upgrade_scripts/migrate_7_0_to_8_0.py +7 -11
- invenio_app_rdm/upgrade_scripts/migrate_8_0_to_9_0.py +98 -0
- invenio_app_rdm/upgrade_scripts/migrate_9_0_to_10_0.py +43 -0
- invenio_app_rdm/users/schemas.py +27 -0
- invenio_app_rdm/users_ui/__init__.py +9 -0
- invenio_app_rdm/users_ui/searchapp.py +53 -0
- invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/base.html +21 -0
- invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/communities.html +25 -0
- invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/header.html +46 -0
- invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/requests.html +24 -0
- invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/uploads.html +25 -0
- invenio_app_rdm/users_ui/views/__init__.py +14 -0
- invenio_app_rdm/users_ui/views/dashboard.py +59 -0
- invenio_app_rdm/users_ui/views/ui.py +68 -0
- invenio_app_rdm/utils/files.py +120 -0
- invenio_app_rdm/views.py +21 -0
- invenio_app_rdm-14.0.0b4.dev4.dist-info/METADATA +627 -0
- invenio_app_rdm-14.0.0b4.dev4.dist-info/RECORD +508 -0
- {invenio_app_rdm-8.0.0.dev9.dist-info → invenio_app_rdm-14.0.0b4.dev4.dist-info}/WHEEL +1 -1
- invenio_app_rdm-14.0.0b4.dev4.dist-info/entry_points.txt +44 -0
- invenio_app_rdm/admin.py +0 -36
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/dashboard.html +0 -47
- invenio_app_rdm/records_ui/views/utils.py +0 -27
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/Image.js +0 -36
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareModal.js +0 -257
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/components/base.js +0 -140
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/components/communities.js +0 -200
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/components/requests.js +0 -394
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/components/uploads.js +0 -287
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/index.js +0 -155
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm_requests/menuTabInit.js +0 -24
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/deposit.less +0 -158
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/export_page.less +0 -20
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/footer.less +0 -88
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/frontpage.less +0 -97
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/landing_page/details.less +0 -53
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/landing_page/sidebar.less +0 -47
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/landing_page.less +0 -423
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/navbar.less +0 -305
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/search.less +0 -52
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme.less +0 -492
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/variables.less +0 -60
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm_requests/theme.less +0 -22
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/i18next-scanner.config.js +0 -63
- 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 -39
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/scripts/initCatalog.js +0 -20
- invenio_app_rdm/theme/templates/semantic-ui/invenio_requests/community-submission/index.html +0 -67
- invenio_app_rdm/version.py +0 -23
- invenio_app_rdm-8.0.0.dev9.dist-info/AUTHORS.rst +0 -11
- invenio_app_rdm-8.0.0.dev9.dist-info/METADATA +0 -74
- invenio_app_rdm-8.0.0.dev9.dist-info/RECORD +0 -179
- invenio_app_rdm-8.0.0.dev9.dist-info/entry_points.txt +0 -14
- /invenio_app_rdm/{translations/.gitkeep → fixtures/data/pages.yaml} +0 -0
- {invenio_app_rdm-8.0.0.dev9.dist-info → invenio_app_rdm-14.0.0b4.dev4.dist-info/licenses}/LICENSE +0 -0
- {invenio_app_rdm-8.0.0.dev9.dist-info → invenio_app_rdm-14.0.0b4.dev4.dist-info}/top_level.txt +0 -0
|
@@ -1,40 +1,61 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2019-
|
|
3
|
+
# Copyright (C) 2019-2025 CERN.
|
|
4
4
|
# Copyright (C) 2019-2021 Northwestern University.
|
|
5
5
|
# Copyright (C) 2021 TU Wien.
|
|
6
|
+
# Copyright (C) 2022-2025 KTH Royal Institute of Technology
|
|
7
|
+
# Copyright (C) 2023-2024 Graz University of Technology.
|
|
6
8
|
#
|
|
7
9
|
# Invenio App RDM is free software; you can redistribute it and/or modify it
|
|
8
10
|
# under the terms of the MIT License; see LICENSE file for more details.
|
|
9
11
|
|
|
10
12
|
"""Routes for record-related pages provided by Invenio-App-RDM."""
|
|
11
13
|
|
|
12
|
-
from
|
|
13
|
-
|
|
14
|
-
from
|
|
14
|
+
from copy import deepcopy
|
|
15
|
+
|
|
16
|
+
from flask import current_app, g, redirect
|
|
15
17
|
from flask_login import login_required
|
|
16
|
-
from
|
|
18
|
+
from invenio_communities.communities.resources.serializer import (
|
|
19
|
+
UICommunityJSONSerializer,
|
|
20
|
+
)
|
|
21
|
+
from invenio_communities.errors import CommunityDeletedError
|
|
22
|
+
from invenio_communities.proxies import current_communities
|
|
23
|
+
from invenio_communities.views.communities import render_community_theme_template
|
|
24
|
+
from invenio_i18n import lazy_gettext as _
|
|
17
25
|
from invenio_i18n.ext import current_i18n
|
|
18
26
|
from invenio_rdm_records.proxies import current_rdm_records
|
|
27
|
+
from invenio_rdm_records.records.api import get_files_quota
|
|
19
28
|
from invenio_rdm_records.resources.serializers import UIJSONSerializer
|
|
20
29
|
from invenio_rdm_records.services.schemas import RDMRecordSchema
|
|
21
30
|
from invenio_rdm_records.services.schemas.utils import dump_empty
|
|
22
|
-
from
|
|
31
|
+
from invenio_rdm_records.views import file_transfer_type
|
|
32
|
+
from invenio_records_resources.proxies import current_transfer_registry
|
|
33
|
+
from invenio_records_resources.services.errors import PermissionDeniedError
|
|
34
|
+
from invenio_search.engine import dsl
|
|
23
35
|
from invenio_vocabularies.proxies import current_service as vocabulary_service
|
|
24
36
|
from invenio_vocabularies.records.models import VocabularyScheme
|
|
25
37
|
from marshmallow_utils.fields.babel import gettext_from_dict
|
|
26
38
|
from sqlalchemy.orm import load_only
|
|
27
39
|
|
|
28
|
-
from ..utils import
|
|
29
|
-
|
|
40
|
+
from ..utils import (
|
|
41
|
+
evaluate_file_modification,
|
|
42
|
+
evaluate_record_deletion,
|
|
43
|
+
set_default_value,
|
|
44
|
+
)
|
|
45
|
+
from .decorators import (
|
|
46
|
+
no_cache_response,
|
|
47
|
+
pass_draft,
|
|
48
|
+
pass_draft_community,
|
|
49
|
+
pass_draft_files,
|
|
50
|
+
secret_link_or_login_required,
|
|
51
|
+
)
|
|
30
52
|
from .filters import get_scheme_label
|
|
31
|
-
from .utils import get_community_uuid
|
|
32
53
|
|
|
33
54
|
|
|
34
55
|
#
|
|
35
56
|
# Helpers
|
|
36
57
|
#
|
|
37
|
-
def get_form_pids_config():
|
|
58
|
+
def get_form_pids_config(record=None):
|
|
38
59
|
"""Prepare configuration for the pids field.
|
|
39
60
|
|
|
40
61
|
Currently supporting only doi.
|
|
@@ -44,37 +65,89 @@ def get_form_pids_config():
|
|
|
44
65
|
# FIXME: User provider.is_managed() requires tiny fix in config
|
|
45
66
|
can_be_managed = True
|
|
46
67
|
can_be_unmanaged = True
|
|
68
|
+
# We initialize the optional doi to empty to indicate that there is no restriction on the transitions
|
|
69
|
+
# This is valid for new uploads and when the DOI is required in an instance
|
|
70
|
+
optional_doi_transitions = []
|
|
47
71
|
for scheme in service.config.pids_providers.keys():
|
|
48
72
|
if not scheme == "doi":
|
|
49
73
|
continue
|
|
74
|
+
|
|
50
75
|
record_pid_config = current_app.config["RDM_PERSISTENT_IDENTIFIERS"]
|
|
51
76
|
scheme_label = record_pid_config.get(scheme, {}).get("label", scheme)
|
|
77
|
+
is_doi_required = record_pid_config.get(scheme, {}).get("required")
|
|
78
|
+
default_selected = (
|
|
79
|
+
record_pid_config.get(scheme, {}).get("ui", {}).get("default_selected")
|
|
80
|
+
)
|
|
81
|
+
if record is not None and not is_doi_required:
|
|
82
|
+
sitename = current_app.config.get("THEME_SITENAME", "this repository")
|
|
83
|
+
previous_published_record = (
|
|
84
|
+
service.record_cls.get_latest_published_by_parent(record.parent)
|
|
85
|
+
)
|
|
86
|
+
validate_optional_doi = current_app.config["RDM_OPTIONAL_DOI_VALIDATOR"]
|
|
87
|
+
optional_doi_transitions = validate_optional_doi(
|
|
88
|
+
record, previous_published_record, errors=[]
|
|
89
|
+
)
|
|
90
|
+
if optional_doi_transitions:
|
|
91
|
+
optional_doi_transitions["message"] = optional_doi_transitions.get(
|
|
92
|
+
"message"
|
|
93
|
+
).format(sitename=sitename)
|
|
94
|
+
if (
|
|
95
|
+
"external" not in optional_doi_transitions["allowed_providers"]
|
|
96
|
+
and "not_needed"
|
|
97
|
+
not in optional_doi_transitions["allowed_providers"]
|
|
98
|
+
):
|
|
99
|
+
# In case we have locally managed provider(s) as allowed ones, we need to
|
|
100
|
+
# select it by default. That is relevant for the case when the
|
|
101
|
+
# user creates a new version of the record and the previous version
|
|
102
|
+
# had a datacite DOI.
|
|
103
|
+
default_selected = "no"
|
|
104
|
+
|
|
105
|
+
# if the DOI is required but the default selected is not_needed then we set it to yes
|
|
106
|
+
# to force the user to mint a DOI
|
|
107
|
+
if is_doi_required and default_selected == "not_needed":
|
|
108
|
+
default_selected = "yes"
|
|
109
|
+
|
|
52
110
|
pids_provider = {
|
|
53
111
|
"scheme": scheme,
|
|
54
|
-
"field_label": "Digital Object Identifier",
|
|
55
|
-
"pid_label": "DOI",
|
|
56
|
-
"pid_placeholder": "Copy/paste your existing DOI here...",
|
|
112
|
+
"field_label": _("Digital Object Identifier"),
|
|
113
|
+
"pid_label": _("DOI"),
|
|
114
|
+
"pid_placeholder": _("Copy/paste your existing DOI here..."),
|
|
57
115
|
"can_be_managed": can_be_managed,
|
|
58
116
|
"can_be_unmanaged": can_be_unmanaged,
|
|
59
|
-
"btn_label_discard_pid": _(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
117
|
+
"btn_label_discard_pid": _(
|
|
118
|
+
"Discard the reserved %(scheme_label)s.", scheme_label=scheme_label
|
|
119
|
+
),
|
|
120
|
+
"btn_label_get_pid": _(
|
|
121
|
+
"Get a %(scheme_label)s now!", scheme_label=scheme_label
|
|
122
|
+
),
|
|
63
123
|
"managed_help_text": _(
|
|
64
|
-
"Reserve a
|
|
65
|
-
"
|
|
66
|
-
" when your upload is published."
|
|
67
|
-
|
|
124
|
+
"Reserve a %(scheme_label)s by pressing the button "
|
|
125
|
+
"(so it can be included in files prior to upload). "
|
|
126
|
+
"The %(scheme_label)s is registered when your upload is published.",
|
|
127
|
+
scheme_label=scheme_label,
|
|
128
|
+
),
|
|
68
129
|
"unmanaged_help_text": _(
|
|
69
|
-
"A
|
|
70
|
-
"unambiguously cited. Example: 10.1234/foo.bar"
|
|
71
|
-
|
|
130
|
+
"A %(scheme_label)s allows your upload to be easily and "
|
|
131
|
+
"unambiguously cited. Example: 10.1234/foo.bar",
|
|
132
|
+
scheme_label=scheme_label,
|
|
133
|
+
),
|
|
134
|
+
"default_selected": default_selected,
|
|
135
|
+
"optional_doi_transitions": optional_doi_transitions,
|
|
72
136
|
}
|
|
73
137
|
pids_providers.append(pids_provider)
|
|
74
138
|
|
|
75
139
|
return pids_providers
|
|
76
140
|
|
|
77
141
|
|
|
142
|
+
def get_record_permissions(actions, record=None):
|
|
143
|
+
"""Helper for generating (default) record action permissions."""
|
|
144
|
+
service = current_rdm_records.records_service
|
|
145
|
+
return {
|
|
146
|
+
f"can_{action}": service.check_permission(g.identity, action, record=record)
|
|
147
|
+
for action in actions
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
|
|
78
151
|
class VocabulariesOptions:
|
|
79
152
|
"""Holds React form vocabularies options."""
|
|
80
153
|
|
|
@@ -88,7 +161,7 @@ class VocabulariesOptions:
|
|
|
88
161
|
return gettext_from_dict(
|
|
89
162
|
hit["title"],
|
|
90
163
|
current_i18n.locale,
|
|
91
|
-
current_app.config.get(
|
|
164
|
+
current_app.config.get("BABEL_DEFAULT_LOCALE", "en"),
|
|
92
165
|
)
|
|
93
166
|
|
|
94
167
|
def _get_type_subtype_label(self, hit, type_labels):
|
|
@@ -107,64 +180,69 @@ class VocabulariesOptions:
|
|
|
107
180
|
|
|
108
181
|
def _resource_types(self, extra_filter):
|
|
109
182
|
"""Dump resource type vocabulary."""
|
|
110
|
-
type_ =
|
|
183
|
+
type_ = "resourcetypes"
|
|
111
184
|
all_resource_types = vocabulary_service.read_all(
|
|
112
|
-
|
|
185
|
+
g.identity,
|
|
113
186
|
fields=["id", "props", "title", "icon"],
|
|
114
187
|
type=type_,
|
|
115
188
|
# Sorry, we have over 100+ resource types entry at NU actually
|
|
116
|
-
max_records=150
|
|
189
|
+
max_records=150,
|
|
117
190
|
)
|
|
118
191
|
type_labels = {
|
|
119
192
|
hit["id"]: self._get_label(hit)
|
|
120
193
|
for hit in all_resource_types.to_dict()["hits"]["hits"]
|
|
121
194
|
}
|
|
122
195
|
subset_resource_types = vocabulary_service.read_all(
|
|
123
|
-
|
|
196
|
+
g.identity,
|
|
124
197
|
fields=["id", "props", "title", "icon"],
|
|
125
198
|
type=type_,
|
|
126
199
|
extra_filter=extra_filter,
|
|
127
200
|
# Sorry, we have over 100+ resource types entry at NU actually
|
|
128
|
-
max_records=150
|
|
201
|
+
max_records=150,
|
|
129
202
|
)
|
|
130
203
|
|
|
131
204
|
return [
|
|
132
205
|
{
|
|
133
206
|
"icon": hit.get("icon", ""),
|
|
134
207
|
"id": hit["id"],
|
|
135
|
-
"subtype_name": self._get_type_subtype_label(hit, type_labels)[1],
|
|
208
|
+
"subtype_name": self._get_type_subtype_label(hit, type_labels)[1],
|
|
136
209
|
"type_name": self._get_type_subtype_label(hit, type_labels)[0],
|
|
137
|
-
}
|
|
210
|
+
}
|
|
211
|
+
for hit in subset_resource_types.to_dict()["hits"]["hits"]
|
|
138
212
|
]
|
|
139
213
|
|
|
140
|
-
def _dump_vocabulary_w_basic_fields(self, vocabulary_type):
|
|
214
|
+
def _dump_vocabulary_w_basic_fields(self, vocabulary_type, extra_filter=None):
|
|
141
215
|
"""Dump vocabulary with id and title field."""
|
|
142
216
|
results = vocabulary_service.read_all(
|
|
143
|
-
|
|
217
|
+
g.identity,
|
|
218
|
+
fields=["id", "title"],
|
|
219
|
+
type=vocabulary_type,
|
|
220
|
+
extra_filter=extra_filter,
|
|
221
|
+
)
|
|
144
222
|
return [
|
|
145
223
|
{
|
|
146
224
|
"text": self._get_label(hit),
|
|
147
225
|
"value": hit["id"],
|
|
148
|
-
}
|
|
226
|
+
}
|
|
227
|
+
for hit in results.to_dict()["hits"]["hits"]
|
|
149
228
|
]
|
|
150
229
|
|
|
151
230
|
# Vocabularies
|
|
152
231
|
def depositable_resource_types(self):
|
|
153
232
|
"""Return depositable resource type options (value, label) pairs."""
|
|
154
|
-
self._vocabularies["resource_type"] = (
|
|
155
|
-
|
|
233
|
+
self._vocabularies["resource_type"] = self._resource_types(
|
|
234
|
+
dsl.Q("term", tags="depositable")
|
|
156
235
|
)
|
|
157
236
|
return self._vocabularies["resource_type"]
|
|
158
237
|
|
|
159
238
|
def subjects(self):
|
|
160
239
|
"""Dump subjects vocabulary (limitTo really)."""
|
|
161
240
|
subjects = (
|
|
162
|
-
VocabularyScheme.query
|
|
163
|
-
.
|
|
164
|
-
.options(load_only("id"))
|
|
241
|
+
VocabularyScheme.query.filter_by(parent_id="subjects")
|
|
242
|
+
.options(load_only(VocabularyScheme.id))
|
|
165
243
|
.all()
|
|
166
244
|
)
|
|
167
|
-
limit_to = [{"text": "All", "value": "all"}]
|
|
245
|
+
limit_to = [{"text": _("All"), "value": "all"}]
|
|
168
246
|
# id is human readable and shorter, so we use it
|
|
169
247
|
limit_to += [{"text": s.id, "value": s.id} for s in subjects]
|
|
170
248
|
|
|
@@ -174,67 +252,80 @@ class VocabulariesOptions:
|
|
|
174
252
|
def title_types(self):
|
|
175
253
|
"""Dump title type vocabulary."""
|
|
176
254
|
self._vocabularies["titles"] = dict(
|
|
177
|
-
type=self._dump_vocabulary_w_basic_fields(
|
|
255
|
+
type=self._dump_vocabulary_w_basic_fields("titletypes")
|
|
178
256
|
)
|
|
179
257
|
return self._vocabularies["titles"]
|
|
180
258
|
|
|
181
259
|
def creator_roles(self):
|
|
182
260
|
"""Dump creators role vocabulary."""
|
|
183
261
|
self._vocabularies["creators"] = dict(
|
|
184
|
-
role=self._dump_vocabulary_w_basic_fields(
|
|
262
|
+
role=self._dump_vocabulary_w_basic_fields("creatorsroles")
|
|
185
263
|
)
|
|
186
264
|
return self._vocabularies["creators"]
|
|
187
265
|
|
|
188
266
|
def contributor_roles(self):
|
|
189
267
|
"""Dump contributors role vocabulary."""
|
|
190
268
|
self._vocabularies["contributors"] = dict(
|
|
191
|
-
role=self._dump_vocabulary_w_basic_fields(
|
|
269
|
+
role=self._dump_vocabulary_w_basic_fields("contributorsroles")
|
|
192
270
|
)
|
|
193
271
|
return self._vocabularies["contributors"]
|
|
194
272
|
|
|
195
273
|
def description_types(self):
|
|
196
274
|
"""Dump description type vocabulary."""
|
|
197
275
|
self._vocabularies["descriptions"] = dict(
|
|
198
|
-
type=self._dump_vocabulary_w_basic_fields(
|
|
276
|
+
type=self._dump_vocabulary_w_basic_fields("descriptiontypes")
|
|
199
277
|
)
|
|
200
278
|
return self._vocabularies["descriptions"]
|
|
201
279
|
|
|
202
280
|
def date_types(self):
|
|
203
281
|
"""Dump date type vocabulary."""
|
|
204
282
|
self._vocabularies["dates"] = dict(
|
|
205
|
-
type=self._dump_vocabulary_w_basic_fields(
|
|
283
|
+
type=self._dump_vocabulary_w_basic_fields("datetypes")
|
|
206
284
|
)
|
|
207
285
|
return self._vocabularies["dates"]
|
|
208
286
|
|
|
209
287
|
def relation_types(self):
|
|
210
288
|
"""Dump relation type vocabulary."""
|
|
211
|
-
return self._dump_vocabulary_w_basic_fields(
|
|
289
|
+
return self._dump_vocabulary_w_basic_fields("relationtypes")
|
|
212
290
|
|
|
213
291
|
def linkable_resource_types(self):
|
|
214
292
|
"""Dump linkable resource type vocabulary."""
|
|
215
|
-
return self._resource_types(Q(
|
|
293
|
+
return self._resource_types(dsl.Q("term", tags="linkable"))
|
|
216
294
|
|
|
217
|
-
def
|
|
218
|
-
"""Dump
|
|
219
|
-
|
|
220
|
-
"Fake" because identifiers scheme is not a vocabulary.
|
|
221
|
-
"""
|
|
295
|
+
def _dump_identifier_schemes(self, config_key):
|
|
296
|
+
"""Dump identifier schemes from a given config key."""
|
|
222
297
|
return [
|
|
223
|
-
{
|
|
224
|
-
|
|
225
|
-
"value": scheme
|
|
226
|
-
} for scheme in current_app.config.get(
|
|
227
|
-
"RDM_RECORDS_IDENTIFIERS_SCHEMES", {})
|
|
298
|
+
{"text": get_scheme_label(scheme), "value": scheme}
|
|
299
|
+
for scheme in current_app.config.get(config_key, {})
|
|
228
300
|
]
|
|
229
301
|
|
|
230
|
-
def
|
|
231
|
-
"""Dump
|
|
232
|
-
self._vocabularies[
|
|
302
|
+
def _dump_identifiers(self, vocab_key, config_key):
|
|
303
|
+
"""Dump identifiers vocabulary for a given vocab/config key pair."""
|
|
304
|
+
self._vocabularies[vocab_key] = {
|
|
233
305
|
"relations": self.relation_types(),
|
|
234
306
|
"resource_type": self.linkable_resource_types(),
|
|
235
|
-
"scheme": self.
|
|
307
|
+
"scheme": self._dump_identifier_schemes(config_key),
|
|
236
308
|
}
|
|
237
309
|
|
|
310
|
+
def identifiers(self):
|
|
311
|
+
"""Dump identifiers vocabulary."""
|
|
312
|
+
self._dump_identifiers("identifiers", "RDM_RECORDS_IDENTIFIERS_SCHEMES")
|
|
313
|
+
|
|
314
|
+
def related_identifiers(self):
|
|
315
|
+
"""Dump related identifiers vocabulary."""
|
|
316
|
+
self._dump_identifiers(
|
|
317
|
+
"related_identifiers", "RDM_RECORDS_RELATED_IDENTIFIERS_SCHEMES"
|
|
318
|
+
)
|
|
319
|
+
|
|
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
|
+
)
|
|
326
|
+
)
|
|
327
|
+
return self._vocabularies["deletion_request_removal_reasons"]
|
|
328
|
+
|
|
238
329
|
def dump(self):
|
|
239
330
|
"""Dump into dict."""
|
|
240
331
|
# TODO: Nest vocabularies inside "metadata" key so that frontend dumber
|
|
@@ -246,24 +337,109 @@ class VocabulariesOptions:
|
|
|
246
337
|
self.contributor_roles()
|
|
247
338
|
self.subjects()
|
|
248
339
|
self.identifiers()
|
|
340
|
+
self.related_identifiers()
|
|
341
|
+
self.deletion_request_removal_reasons()
|
|
249
342
|
# We removed
|
|
250
343
|
# vocabularies["relation_type"] = _dump_relation_types_vocabulary()
|
|
251
344
|
return self._vocabularies
|
|
252
345
|
|
|
253
346
|
|
|
347
|
+
def load_custom_fields():
|
|
348
|
+
"""Load custom fields configuration."""
|
|
349
|
+
conf = current_app.config
|
|
350
|
+
conf_ui = conf.get("RDM_CUSTOM_FIELDS_UI", [])
|
|
351
|
+
conf_backend = {cf.name: cf for cf in conf.get("RDM_CUSTOM_FIELDS", [])}
|
|
352
|
+
_vocabulary_fields = []
|
|
353
|
+
error_labels = {}
|
|
354
|
+
|
|
355
|
+
for section_cfg in conf_ui:
|
|
356
|
+
fields = section_cfg["fields"]
|
|
357
|
+
for field in fields:
|
|
358
|
+
field_instance = conf_backend.get(field["field"])
|
|
359
|
+
# Compute the dictionary to map field path to error labels
|
|
360
|
+
# for each custom field. This is the label shown at the top of the upload
|
|
361
|
+
# form
|
|
362
|
+
field_error_label = field.get("props", {}).get("label")
|
|
363
|
+
# Add the field ID to the props to allow overriding the React widgets of custom fields
|
|
364
|
+
field["props"]["id"] = field["field"]
|
|
365
|
+
if field_error_label:
|
|
366
|
+
error_labels[f"custom_fields.{field['field']}"] = field_error_label
|
|
367
|
+
if getattr(field_instance, "relation_cls", None):
|
|
368
|
+
sort_by = field.get("props", {}).get("sort_by")
|
|
369
|
+
if sort_by:
|
|
370
|
+
field_instance.sort_by = sort_by
|
|
371
|
+
# add vocabulary options to field's properties
|
|
372
|
+
field["props"]["options"] = field_instance.options(g.identity)
|
|
373
|
+
# mark field as vocabulary
|
|
374
|
+
field["is_vocabulary"] = True
|
|
375
|
+
_vocabulary_fields.append(field["field"])
|
|
376
|
+
return {
|
|
377
|
+
"ui": conf_ui,
|
|
378
|
+
"vocabularies": _vocabulary_fields,
|
|
379
|
+
"error_labels": error_labels,
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
def get_user_communities_memberships():
|
|
384
|
+
"""Return current identity communities memberships."""
|
|
385
|
+
memberships = current_communities.service.members.read_memberships(g.identity)
|
|
386
|
+
return {id: role for (id, role) in memberships["memberships"]}
|
|
387
|
+
|
|
388
|
+
|
|
254
389
|
def get_form_config(**kwargs):
|
|
255
390
|
"""Get the react form configuration."""
|
|
391
|
+
conf = current_app.config
|
|
392
|
+
custom_fields = load_custom_fields()
|
|
393
|
+
# keep only upload form configurable custom fields
|
|
394
|
+
custom_fields["ui"] = [
|
|
395
|
+
cf for cf in custom_fields["ui"] if not cf.get("hide_from_upload_form", False)
|
|
396
|
+
]
|
|
397
|
+
quota = deepcopy(conf.get("APP_RDM_DEPOSIT_FORM_QUOTA", {}))
|
|
398
|
+
max_file_size = conf.get("RDM_FILES_DEFAULT_MAX_FILE_SIZE", None)
|
|
399
|
+
record_quota = kwargs.pop("quota", None)
|
|
400
|
+
if record_quota:
|
|
401
|
+
quota["maxStorage"] = record_quota["quota_size"]
|
|
402
|
+
|
|
403
|
+
record = kwargs.pop("record", None)
|
|
404
|
+
|
|
256
405
|
return dict(
|
|
257
406
|
vocabularies=VocabulariesOptions().dump(),
|
|
258
|
-
autocomplete_names=
|
|
259
|
-
|
|
407
|
+
autocomplete_names=conf.get(
|
|
408
|
+
"APP_RDM_DEPOSIT_FORM_AUTOCOMPLETE_NAMES", "search"
|
|
409
|
+
),
|
|
260
410
|
current_locale=str(current_i18n.locale),
|
|
261
|
-
default_locale=
|
|
262
|
-
pids=get_form_pids_config(),
|
|
263
|
-
**
|
|
411
|
+
default_locale=conf.get("BABEL_DEFAULT_LOCALE", "en"),
|
|
412
|
+
pids=get_form_pids_config(record=record),
|
|
413
|
+
quota=dict(**quota, maxFileSize=max_file_size),
|
|
414
|
+
decimal_size_display=conf.get("APP_RDM_DISPLAY_DECIMAL_FILE_SIZES", True),
|
|
415
|
+
links=dict(
|
|
416
|
+
user_dashboard_request=conf["RDM_REQUESTS_ROUTES"][
|
|
417
|
+
"user-dashboard-request-details"
|
|
418
|
+
]
|
|
419
|
+
),
|
|
420
|
+
user_communities_memberships=get_user_communities_memberships(),
|
|
421
|
+
custom_fields=custom_fields,
|
|
422
|
+
publish_modal_extra=current_app.config.get(
|
|
423
|
+
"APP_RDM_DEPOSIT_FORM_PUBLISH_MODAL_EXTRA"
|
|
424
|
+
),
|
|
425
|
+
default_transfer_type=current_transfer_registry.default_transfer_type,
|
|
426
|
+
enabled_transfer_types=list(current_transfer_registry.get_transfer_types()),
|
|
427
|
+
transfer_types=file_transfer_type()["transfer_types"],
|
|
428
|
+
**kwargs,
|
|
264
429
|
)
|
|
265
430
|
|
|
266
431
|
|
|
432
|
+
def get_actual_files_quota(draft):
|
|
433
|
+
"""Report the actual effective quota from the draft's bucket, if available."""
|
|
434
|
+
if draft is not None and draft.bucket is not None:
|
|
435
|
+
return {
|
|
436
|
+
"quota_size": draft.bucket.quota_size,
|
|
437
|
+
"max_file_size": draft.bucket.max_file_size,
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
return get_files_quota(draft)
|
|
441
|
+
|
|
442
|
+
|
|
267
443
|
def get_search_url():
|
|
268
444
|
"""Get the search URL."""
|
|
269
445
|
# TODO: this should not be used
|
|
@@ -273,11 +449,21 @@ def get_search_url():
|
|
|
273
449
|
def new_record():
|
|
274
450
|
"""Create an empty record with default values."""
|
|
275
451
|
record = dump_empty(RDMRecordSchema)
|
|
276
|
-
record["files"] = {"enabled":
|
|
452
|
+
record["files"] = {"enabled": current_app.config.get("RDM_DEFAULT_FILES_ENABLED")}
|
|
277
453
|
if "doi" in current_rdm_records.records_service.config.pids_providers:
|
|
278
|
-
|
|
454
|
+
if (
|
|
455
|
+
current_app.config["RDM_PERSISTENT_IDENTIFIERS"]
|
|
456
|
+
.get("doi", {})
|
|
457
|
+
.get("ui", {})
|
|
458
|
+
.get("default_selected")
|
|
459
|
+
== "yes" # yes, no or not_needed
|
|
460
|
+
):
|
|
461
|
+
record["pids"] = {"doi": {"provider": "external", "identifier": ""}}
|
|
462
|
+
else:
|
|
463
|
+
record["pids"] = {}
|
|
279
464
|
else:
|
|
280
465
|
record["pids"] = {}
|
|
466
|
+
record["status"] = "draft"
|
|
281
467
|
defaults = current_app.config.get("APP_RDM_DEPOSIT_FORM_DEFAULTS") or {}
|
|
282
468
|
for key, value in defaults.items():
|
|
283
469
|
set_default_value(record, value, key)
|
|
@@ -288,52 +474,176 @@ def new_record():
|
|
|
288
474
|
# Views
|
|
289
475
|
#
|
|
290
476
|
@login_required
|
|
291
|
-
|
|
292
|
-
"""Display user dashboard page."""
|
|
293
|
-
if not current_app.config["COMMUNITIES_ENABLED"] or not dashboard_name:
|
|
294
|
-
dashboard_name = current_app.config["_DASHBOARD_ROUTES"][0]
|
|
295
|
-
return render_template(
|
|
296
|
-
"invenio_app_rdm/records/dashboard.html",
|
|
297
|
-
dashboard_name=dashboard_name,
|
|
298
|
-
searchbar_config=dict(searchUrl=get_search_url()),
|
|
299
|
-
communities_enabled=current_app.config["COMMUNITIES_ENABLED"],
|
|
300
|
-
username=current_userprofile.full_name
|
|
301
|
-
)
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
@login_required
|
|
477
|
+
@no_cache_response
|
|
305
478
|
@pass_draft_community
|
|
306
|
-
def deposit_create(community=None):
|
|
479
|
+
def deposit_create(community=None, community_ui=None):
|
|
307
480
|
"""Create a new deposit."""
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
481
|
+
can_create = current_rdm_records.records_service.check_permission(
|
|
482
|
+
g.identity, "create"
|
|
483
|
+
)
|
|
484
|
+
if not can_create:
|
|
485
|
+
raise PermissionDeniedError()
|
|
486
|
+
|
|
487
|
+
community_theme = None
|
|
488
|
+
if community is not None:
|
|
489
|
+
community_theme = community_ui.get("theme", {})
|
|
490
|
+
|
|
491
|
+
community_use_jinja_header = bool(community_theme)
|
|
492
|
+
dashboard_routes = current_app.config["APP_RDM_USER_DASHBOARD_ROUTES"]
|
|
493
|
+
is_doi_required = (
|
|
494
|
+
current_app.config.get("RDM_PERSISTENT_IDENTIFIERS", {})
|
|
495
|
+
.get("doi", {})
|
|
496
|
+
.get("required")
|
|
497
|
+
)
|
|
498
|
+
|
|
499
|
+
return render_community_theme_template(
|
|
500
|
+
current_app.config["APP_RDM_DEPOSIT_FORM_TEMPLATE"],
|
|
501
|
+
theme=community_theme,
|
|
502
|
+
forms_config=get_form_config(
|
|
503
|
+
dashboard_routes=dashboard_routes,
|
|
504
|
+
createUrl="/api/records",
|
|
505
|
+
quota=get_actual_files_quota(None),
|
|
506
|
+
hide_community_selection=community_use_jinja_header,
|
|
507
|
+
is_doi_required=is_doi_required,
|
|
508
|
+
),
|
|
311
509
|
searchbar_config=dict(searchUrl=get_search_url()),
|
|
312
510
|
record=new_record(),
|
|
313
|
-
|
|
314
|
-
|
|
511
|
+
community=community,
|
|
512
|
+
community_ui=community_ui,
|
|
513
|
+
community_use_jinja_header=community_use_jinja_header,
|
|
514
|
+
files=dict(default_preview=None, entries=[], links={}),
|
|
515
|
+
preselectedCommunity=community_ui,
|
|
516
|
+
files_locked=False,
|
|
517
|
+
permissions=get_record_permissions(
|
|
518
|
+
[
|
|
519
|
+
"manage",
|
|
520
|
+
"manage_files",
|
|
521
|
+
"delete_draft",
|
|
522
|
+
"manage_record_access",
|
|
523
|
+
]
|
|
315
524
|
),
|
|
316
|
-
communities_enabled=current_app.config["COMMUNITIES_ENABLED"],
|
|
317
|
-
community=community
|
|
318
525
|
)
|
|
319
526
|
|
|
320
527
|
|
|
321
|
-
@
|
|
322
|
-
@pass_draft
|
|
528
|
+
@secret_link_or_login_required()
|
|
529
|
+
@pass_draft(expand=True)
|
|
323
530
|
@pass_draft_files
|
|
324
|
-
|
|
531
|
+
@no_cache_response
|
|
532
|
+
def deposit_edit(pid_value, draft=None, draft_files=None, files_locked=True):
|
|
325
533
|
"""Edit an existing deposit."""
|
|
326
|
-
|
|
327
|
-
|
|
534
|
+
# don't show draft's deposit form if the user can't edit it
|
|
535
|
+
service = current_rdm_records.records_service
|
|
536
|
+
can_edit_draft = service.check_permission(
|
|
537
|
+
g.identity, "update_draft", record=draft._record
|
|
538
|
+
)
|
|
539
|
+
can_preview_draft = service.check_permission(
|
|
540
|
+
g.identity, "preview", record=draft._record
|
|
541
|
+
)
|
|
542
|
+
if not can_edit_draft:
|
|
543
|
+
if can_preview_draft:
|
|
544
|
+
return redirect(draft["links"]["preview_html"])
|
|
545
|
+
raise PermissionDeniedError()
|
|
546
|
+
|
|
547
|
+
files_dict = None if draft_files is None else draft_files.to_dict()
|
|
548
|
+
ui_serializer = UIJSONSerializer()
|
|
549
|
+
record = ui_serializer.dump_obj(draft.to_dict())
|
|
550
|
+
|
|
551
|
+
published_record = None
|
|
552
|
+
if record["is_published"]:
|
|
553
|
+
published_record_result = service.read(
|
|
554
|
+
g.identity, id_=record["id"], expand=True
|
|
555
|
+
)
|
|
556
|
+
published_record = ui_serializer.dump_obj(published_record_result.to_dict())
|
|
557
|
+
|
|
558
|
+
record_deletion = evaluate_record_deletion(
|
|
559
|
+
published_record_result._record, g.identity
|
|
560
|
+
)
|
|
561
|
+
file_modification = evaluate_file_modification(
|
|
562
|
+
published_record_result._record, g.identity
|
|
563
|
+
)
|
|
564
|
+
else:
|
|
565
|
+
record_deletion = {}
|
|
566
|
+
file_modification = {}
|
|
567
|
+
|
|
568
|
+
community_ui = None
|
|
569
|
+
community_theme = None
|
|
570
|
+
community = record.get("expanded", {}).get("parent", {}).get("review", {}).get(
|
|
571
|
+
"receiver"
|
|
572
|
+
) or record.get("expanded", {}).get("parent", {}).get("communities", {}).get(
|
|
573
|
+
"default"
|
|
574
|
+
)
|
|
575
|
+
|
|
576
|
+
if community:
|
|
577
|
+
# TODO: handle deleted community
|
|
578
|
+
try:
|
|
579
|
+
community = current_communities.service.read(
|
|
580
|
+
id_=community["id"], identity=g.identity
|
|
581
|
+
)
|
|
582
|
+
community_theme = community.to_dict().get("theme", {})
|
|
583
|
+
community_ui = UICommunityJSONSerializer().dump_obj(community.to_dict())
|
|
584
|
+
except CommunityDeletedError:
|
|
585
|
+
pass
|
|
586
|
+
|
|
587
|
+
# show the community branded header when there is a theme and record is published
|
|
588
|
+
# for unpublished records we fallback to the react component so users can change
|
|
589
|
+
# communities
|
|
590
|
+
community_use_jinja_header = bool(community_theme)
|
|
591
|
+
dashboard_routes = current_app.config["APP_RDM_USER_DASHBOARD_ROUTES"]
|
|
592
|
+
is_doi_required = (
|
|
593
|
+
current_app.config.get("RDM_PERSISTENT_IDENTIFIERS", {})
|
|
594
|
+
.get("doi", {})
|
|
595
|
+
.get("required")
|
|
596
|
+
)
|
|
597
|
+
form_config = get_form_config(
|
|
598
|
+
apiUrl=f"/api/records/{pid_value}/draft",
|
|
599
|
+
dashboard_routes=dashboard_routes,
|
|
600
|
+
# maybe quota should be serialized into the record e.g for admins
|
|
601
|
+
quota=get_actual_files_quota(draft._record),
|
|
602
|
+
# hide react community component
|
|
603
|
+
hide_community_selection=community_use_jinja_header,
|
|
604
|
+
is_doi_required=is_doi_required,
|
|
605
|
+
record=draft._record,
|
|
606
|
+
published_record=published_record,
|
|
607
|
+
)
|
|
328
608
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
609
|
+
if is_doi_required and not record.get("pids", {}).get("doi"):
|
|
610
|
+
# if the DOI is required but there is no value, we set the default selected pid
|
|
611
|
+
# to no i.e. system should automatically mint a local DOI
|
|
612
|
+
if record["status"] == "new_version_draft":
|
|
613
|
+
doi_provider_config = [
|
|
614
|
+
pid_config
|
|
615
|
+
for pid_config in form_config["pids"]
|
|
616
|
+
if pid_config.get("scheme") == "doi"
|
|
617
|
+
]
|
|
618
|
+
if doi_provider_config:
|
|
619
|
+
doi_provider_config[0]["default_selected"] = "no"
|
|
620
|
+
|
|
621
|
+
return render_community_theme_template(
|
|
622
|
+
current_app.config["APP_RDM_DEPOSIT_FORM_TEMPLATE"],
|
|
623
|
+
theme=community_theme,
|
|
624
|
+
forms_config=form_config,
|
|
333
625
|
record=record,
|
|
334
|
-
community=
|
|
335
|
-
|
|
336
|
-
|
|
626
|
+
community=community,
|
|
627
|
+
community_ui=community_ui,
|
|
628
|
+
community_use_jinja_header=community_use_jinja_header,
|
|
629
|
+
files=files_dict,
|
|
337
630
|
searchbar_config=dict(searchUrl=get_search_url()),
|
|
338
|
-
|
|
631
|
+
files_locked=files_locked,
|
|
632
|
+
permissions=draft.has_permissions_to(
|
|
633
|
+
[
|
|
634
|
+
"manage",
|
|
635
|
+
"new_version",
|
|
636
|
+
"delete_draft",
|
|
637
|
+
"manage_files",
|
|
638
|
+
"manage_record_access",
|
|
639
|
+
]
|
|
640
|
+
),
|
|
641
|
+
record_deletion=record_deletion,
|
|
642
|
+
file_modification=file_modification,
|
|
339
643
|
)
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
def community_upload(pid_value):
|
|
647
|
+
"""Redirection for upload to community."""
|
|
648
|
+
routes = current_app.config.get("APP_RDM_ROUTES")
|
|
649
|
+
return redirect(f"{routes['deposit_create']}?community={pid_value}")
|