invenio-app-rdm 12.0.0.dev8__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 +3 -2
- invenio_app_rdm/{stats/templates/events/record_view/v7 → administration}/__init__.py +1 -3
- invenio_app_rdm/{stats/templates/events/record_view → administration/audit_logs}/__init__.py +6 -4
- 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 +91 -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/{stats/templates/aggregations/aggr_record_view/v7 → administration/user_moderation}/__init__.py +4 -3
- 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/{stats/templates/events/file_download/v7 → administration/views}/__init__.py +4 -3
- invenio_app_rdm/administration/views/ui.py +21 -0
- invenio_app_rdm/cli.py +37 -14
- invenio_app_rdm/communities_ui/searchapp.py +1 -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/{details → records}/index.html +1 -1
- invenio_app_rdm/communities_ui/views/communities.py +183 -8
- invenio_app_rdm/communities_ui/views/ui.py +52 -42
- invenio_app_rdm/config.py +586 -90
- invenio_app_rdm/ext.py +157 -0
- invenio_app_rdm/fixtures/__init__.py +2 -2
- invenio_app_rdm/fixtures/pages.py +34 -12
- invenio_app_rdm/records_ui/searchapp.py +43 -0
- invenio_app_rdm/records_ui/sitemap.py +44 -0
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html +59 -16
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html +236 -141
- 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 +290 -230
- 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 +30 -22
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/details.html +20 -19
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/export.html +19 -16
- 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 +24 -4
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/metrics.html +2 -2
- 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 +93 -79
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/subjects.html +1 -1
- 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 +2 -1
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/creatibutors.html +54 -39
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/detail.html +182 -93
- 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 +152 -79
- 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/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/tombstone.html +55 -12
- invenio_app_rdm/records_ui/utils.py +126 -1
- invenio_app_rdm/records_ui/views/__init__.py +75 -17
- invenio_app_rdm/records_ui/views/decorators.py +309 -38
- invenio_app_rdm/records_ui/views/deposits.py +302 -51
- invenio_app_rdm/records_ui/views/filters.py +74 -7
- invenio_app_rdm/records_ui/views/records.py +256 -90
- invenio_app_rdm/redirector/resource.py +1 -0
- invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-submission/index.html +34 -8
- 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 +5 -3
- 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/requests.py +221 -42
- invenio_app_rdm/requests_ui/views/ui.py +17 -4
- invenio_app_rdm/tasks.py +6 -2
- 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 +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/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/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 +2 -2
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSearchBarElement.js +1 -1
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSingleSearchBarElement.js +1 -1
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/index.js +8 -3
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CompactStats.js +51 -0
- 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/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 +61 -31
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js +680 -486
- 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 +14 -2
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/frontpage/RecordsList.js +61 -21
- 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 +171 -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 +10 -1
- 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 +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 +55 -51
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesList.js +87 -89
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesListModal.js +44 -30
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesSearch.js +39 -20
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesSearchItem.js +44 -17
- 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 +111 -62
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordVersionsList.js +99 -61
- 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 +98 -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 +216 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksTab.js +104 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessRequests/AccessRequestsTab.js +230 -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} +13 -4
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/ShareModal.js +238 -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 +72 -25
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/theme.js +10 -6
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/mapping.js +6 -1
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/AccessRequestExpiration.js +56 -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 +15 -13
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/search/index.js +1 -1
- 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 +77 -9
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/base.js +122 -74
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/communities.js +1 -11
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/requests.js +27 -412
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads.js +15 -14
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/ComputerTabletUploadsItem.js +47 -27
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/MobileUploadsItem.js +43 -27
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/utils.js +32 -7
- 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 +15 -4
- 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/collections/form.overrides +15 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/grid.overrides +24 -33
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/menu.overrides +18 -3
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/message.overrides +19 -3
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/message.variables +2 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/table.overrides +78 -6
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/button.overrides +21 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/container.overrides +30 -7
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/header.overrides +17 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/icon.overrides +2 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/image.overrides +34 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/input.overrides +10 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/label.overrides +48 -4
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/list.overrides +10 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/segment.overrides +16 -13
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides +156 -97
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.variables +7 -3
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides +35 -9
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/dropdown.overrides +28 -6
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/dropdown.variables +1 -0
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/modal.overrides +40 -11
- 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/transition.overrides +8 -8
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/theme.less +2 -5
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/card.overrides +4 -2
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/item.overrides +20 -33
- 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 +805 -138
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ar/translations.json +306 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/messages.po +690 -71
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/messages.po +700 -81
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/messages.po +822 -139
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/translations.json +294 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/messages.po +692 -67
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/messages.po +819 -139
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/messages.po +699 -79
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/translations.json +282 -86
- 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 +315 -2
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/messages.po +811 -138
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/messages.po +747 -134
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/messages.po +689 -70
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/messages.po +810 -127
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/messages.po +696 -71
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/translations.json +288 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/messages.po +804 -137
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/index.js +17 -66
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/messages.po +715 -88
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/messages.po +684 -71
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/translations.json +276 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/messages.po +690 -71
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/translations.json +282 -86
- 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 +703 -72
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/lt/translations.json +294 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/messages.po +690 -71
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/messages.po +705 -71
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/translations.json +294 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/messages.po +695 -70
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/messages.po +718 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/translations.json +288 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/messages.po +807 -125
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/translations.json +294 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/messages.po +714 -83
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/translations.json +294 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/messages.po +809 -142
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/messages.po +800 -129
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/translations.json +282 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/messages.po +717 -83
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/translations.json +294 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/messages.po +737 -124
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/translations.json +276 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/messages.po +684 -71
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/translations.json +276 -86
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/package.json +5 -38
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/translations.pot +863 -127
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/administration_page.html +15 -0
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/default_static_page.html +8 -8
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/files_integrity_report/email/files_integrity_report.html +12 -12
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/footer.html +33 -75
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header.html +42 -27
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header_frontpage.html +4 -2
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header_login.html +144 -113
- 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 +11 -6
- 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.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 +15 -16
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/macros/records_list.html +33 -3
- 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 +43 -15
- 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/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 +80 -28
- invenio_app_rdm/theme/webpack.py +38 -7
- invenio_app_rdm/translations/ar/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ar/LC_MESSAGES/messages.po +975 -378
- invenio_app_rdm/translations/bg/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/bg/LC_MESSAGES/messages.po +908 -279
- invenio_app_rdm/translations/ca/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ca/LC_MESSAGES/messages.po +913 -284
- invenio_app_rdm/translations/cs/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/cs/LC_MESSAGES/messages.po +1070 -406
- invenio_app_rdm/translations/da/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/da/LC_MESSAGES/messages.po +909 -274
- invenio_app_rdm/translations/de/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/de/LC_MESSAGES/messages.po +1018 -407
- invenio_app_rdm/translations/el/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/el/LC_MESSAGES/messages.po +916 -287
- invenio_app_rdm/translations/es/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/es/LC_MESSAGES/messages.po +964 -372
- invenio_app_rdm/translations/et/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/et/LC_MESSAGES/messages.po +939 -363
- invenio_app_rdm/translations/fa/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/fa/LC_MESSAGES/messages.po +907 -278
- invenio_app_rdm/translations/fr/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/fr/LC_MESSAGES/messages.po +1033 -376
- invenio_app_rdm/translations/hr/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/hr/LC_MESSAGES/messages.po +908 -279
- invenio_app_rdm/translations/hu/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/hu/LC_MESSAGES/messages.po +989 -372
- invenio_app_rdm/translations/it/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/it/LC_MESSAGES/messages.po +970 -337
- invenio_app_rdm/translations/ja/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ja/LC_MESSAGES/messages.po +908 -279
- invenio_app_rdm/translations/ka/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ka/LC_MESSAGES/messages.po +910 -281
- 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 +911 -282
- invenio_app_rdm/translations/messages.pot +982 -289
- invenio_app_rdm/translations/no/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/no/LC_MESSAGES/messages.po +908 -279
- invenio_app_rdm/translations/pl/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/pl/LC_MESSAGES/messages.po +908 -279
- invenio_app_rdm/translations/pt/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/pt/LC_MESSAGES/messages.po +907 -278
- invenio_app_rdm/translations/ro/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ro/LC_MESSAGES/messages.po +1041 -382
- invenio_app_rdm/translations/ru/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/ru/LC_MESSAGES/messages.po +1023 -371
- invenio_app_rdm/translations/sk/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/sk/LC_MESSAGES/messages.po +917 -288
- invenio_app_rdm/translations/sv/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/sv/LC_MESSAGES/messages.po +1007 -398
- invenio_app_rdm/translations/tr/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/tr/LC_MESSAGES/messages.po +993 -342
- invenio_app_rdm/translations/uk/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/uk/LC_MESSAGES/messages.po +984 -353
- invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.po +940 -348
- invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.po +908 -279
- invenio_app_rdm/upgrade_scripts/fix_migrated_records_from_8_0_to_9_0.py +2 -2
- invenio_app_rdm/upgrade_scripts/migrate_10_0_to_11_0.py +1 -1
- 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_2_0_to_3_0.py +1 -1
- invenio_app_rdm/upgrade_scripts/migrate_4_0_to_6_0.py +2 -3
- invenio_app_rdm/upgrade_scripts/migrate_6_0_to_7_0.py +0 -2
- invenio_app_rdm/upgrade_scripts/migrate_8_0_to_9_0.py +2 -2
- invenio_app_rdm/upgrade_scripts/migrate_9_0_to_10_0.py +1 -1
- invenio_app_rdm/users/schemas.py +27 -0
- invenio_app_rdm/users_ui/searchapp.py +9 -1
- invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/communities.html +1 -0
- invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/header.html +23 -9
- invenio_app_rdm/users_ui/views/__init__.py +1 -1
- invenio_app_rdm/users_ui/views/dashboard.py +6 -1
- invenio_app_rdm/users_ui/views/ui.py +5 -28
- invenio_app_rdm/utils/files.py +1 -1
- invenio_app_rdm/views.py +21 -0
- invenio_app_rdm-14.0.0b1.dev8.dist-info/METADATA +552 -0
- invenio_app_rdm-14.0.0b1.dev8.dist-info/RECORD +505 -0
- {invenio_app_rdm-12.0.0.dev8.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/WHEEL +1 -1
- invenio_app_rdm-14.0.0b1.dev8.dist-info/entry_points.txt +44 -0
- invenio_app_rdm/admin.py +0 -36
- invenio_app_rdm/stats/__init__.py +0 -24
- invenio_app_rdm/stats/event_builders.py +0 -112
- invenio_app_rdm/stats/permissions.py +0 -33
- invenio_app_rdm/stats/templates/aggregations/__init__.py +0 -10
- invenio_app_rdm/stats/templates/aggregations/aggr_file_download/__init__.py +0 -10
- invenio_app_rdm/stats/templates/aggregations/aggr_file_download/os-v1/__init__.py +0 -10
- invenio_app_rdm/stats/templates/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.0.0.json +0 -69
- invenio_app_rdm/stats/templates/aggregations/aggr_file_download/os-v2/__init__.py +0 -10
- invenio_app_rdm/stats/templates/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.0.0.json +0 -69
- invenio_app_rdm/stats/templates/aggregations/aggr_file_download/v7/__init__.py +0 -10
- invenio_app_rdm/stats/templates/aggregations/aggr_file_download/v7/aggr-file-download-v1.0.0.json +0 -69
- invenio_app_rdm/stats/templates/aggregations/aggr_record_view/__init__.py +0 -10
- invenio_app_rdm/stats/templates/aggregations/aggr_record_view/os-v1/__init__.py +0 -10
- invenio_app_rdm/stats/templates/aggregations/aggr_record_view/os-v1/aggr-record-view-v1.0.0.json +0 -46
- invenio_app_rdm/stats/templates/aggregations/aggr_record_view/os-v2/__init__.py +0 -10
- invenio_app_rdm/stats/templates/aggregations/aggr_record_view/os-v2/aggr-record-view-v1.0.0.json +0 -46
- invenio_app_rdm/stats/templates/aggregations/aggr_record_view/v7/aggr-record-view-v1.0.0.json +0 -46
- invenio_app_rdm/stats/templates/events/__init__.py +0 -10
- invenio_app_rdm/stats/templates/events/file_download/__init__.py +0 -10
- invenio_app_rdm/stats/templates/events/file_download/os-v1/__init__.py +0 -10
- invenio_app_rdm/stats/templates/events/file_download/os-v1/file-download-v1.0.0.json +0 -93
- invenio_app_rdm/stats/templates/events/file_download/os-v2/__init__.py +0 -10
- invenio_app_rdm/stats/templates/events/file_download/os-v2/file-download-v1.0.0.json +0 -93
- invenio_app_rdm/stats/templates/events/file_download/v7/file-download-v1.0.0.json +0 -93
- invenio_app_rdm/stats/templates/events/record_view/os-v1/__init__.py +0 -10
- invenio_app_rdm/stats/templates/events/record_view/os-v1/record-view-v1.0.0.json +0 -70
- invenio_app_rdm/stats/templates/events/record_view/os-v2/__init__.py +0 -10
- invenio_app_rdm/stats/templates/events/record_view/os-v2/record-view-v1.0.0.json +0 -70
- invenio_app_rdm/stats/templates/events/record_view/v7/record-view-v1.0.0.json +0 -70
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareModal.js +0 -262
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/requests_items/ComputerTabletRequestsItem.js +0 -74
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/requests_items/MobileRequestsItem.js +0 -70
- 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/messages/af/messages.po +0 -272
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/af/translations.json +0 -87
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et_EE/messages.po +0 -272
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et_EE/translations.json +0 -87
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/gl/messages.po +0 -272
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/gl/translations.json +0 -87
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/rw/messages.po +0 -272
- invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/rw/translations.json +0 -87
- 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
- invenio_app_rdm/theme/static/robots.txt +0 -5
- invenio_app_rdm/translations/af/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/af/LC_MESSAGES/messages.po +0 -728
- invenio_app_rdm/translations/et_EE/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/et_EE/LC_MESSAGES/messages.po +0 -728
- invenio_app_rdm/translations/gl/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/gl/LC_MESSAGES/messages.po +0 -728
- invenio_app_rdm/translations/rw/LC_MESSAGES/messages.mo +0 -0
- invenio_app_rdm/translations/rw/LC_MESSAGES/messages.po +0 -728
- invenio_app_rdm-12.0.0.dev8.dist-info/AUTHORS.rst +0 -11
- invenio_app_rdm-12.0.0.dev8.dist-info/METADATA +0 -103
- invenio_app_rdm-12.0.0.dev8.dist-info/RECORD +0 -402
- invenio_app_rdm-12.0.0.dev8.dist-info/entry_points.txt +0 -26
- /invenio_app_rdm/{translations/.gitkeep → theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/UserModerationBulkActions.js} +0 -0
- {invenio_app_rdm-12.0.0.dev8.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info/licenses}/LICENSE +0 -0
- {invenio_app_rdm-12.0.0.dev8.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/top_level.txt +0 -0
|
@@ -60,7 +60,7 @@ def execute_upgrade_fix():
|
|
|
60
60
|
success = not errors
|
|
61
61
|
|
|
62
62
|
if success:
|
|
63
|
-
secho(
|
|
63
|
+
secho("Committing to DB", nl=True)
|
|
64
64
|
db.session.commit()
|
|
65
65
|
secho(
|
|
66
66
|
"Data migration completed, please rebuild the search indices now.",
|
|
@@ -68,7 +68,7 @@ def execute_upgrade_fix():
|
|
|
68
68
|
)
|
|
69
69
|
|
|
70
70
|
else:
|
|
71
|
-
secho(
|
|
71
|
+
secho("Rollback", nl=True)
|
|
72
72
|
db.session.rollback()
|
|
73
73
|
secho(
|
|
74
74
|
"Upgrade aborted due to the following errors:",
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2023-2024 CERN.
|
|
4
|
+
# Copyright (C) 2024 Graz University of Technology.
|
|
5
|
+
#
|
|
6
|
+
# Invenio-App-RDM 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
|
+
"""Record migration script from InvenioRDM 11.0 to 12.0.
|
|
10
|
+
|
|
11
|
+
Disclaimer: This script is intended to be executed *only once*, namely when
|
|
12
|
+
upgrading from InvenioRDM 11.0 to 12.0!
|
|
13
|
+
If this script is executed at any other time, probably the best case scenario
|
|
14
|
+
is that nothing happens!
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
This script has been tested with following data:
|
|
18
|
+
|
|
19
|
+
- user
|
|
20
|
+
- demo records of v11
|
|
21
|
+
- demo communities of v11
|
|
22
|
+
- cli created user of v11
|
|
23
|
+
- ui created community (com_a)
|
|
24
|
+
- ui created community private (com_b)
|
|
25
|
+
- ui created record (rec_a.v1)
|
|
26
|
+
- ui created v2 of record (rec_a.v1)
|
|
27
|
+
- ui created record (rec_b.v1) added to community (com_a)
|
|
28
|
+
- ui created draft (dra_a)
|
|
29
|
+
- ui created draft (dra_b) added to community (com_b)
|
|
30
|
+
- repository with records without managed doi
|
|
31
|
+
- repository with records with managed doi
|
|
32
|
+
- repository with records with managed doi without parent doi after migration
|
|
33
|
+
- base vocabularies (no customized) usable after migration
|
|
34
|
+
- record (rec_a.v1, rec_a.v2) findable after migration and rebuild of index
|
|
35
|
+
|
|
36
|
+
- administration
|
|
37
|
+
- user panel list of users visible
|
|
38
|
+
- drafts visible
|
|
39
|
+
- records visible
|
|
40
|
+
"""
|
|
41
|
+
import sys
|
|
42
|
+
|
|
43
|
+
from click import secho
|
|
44
|
+
from flask import current_app
|
|
45
|
+
from invenio_access.permissions import system_identity
|
|
46
|
+
from invenio_communities.communities.records.api import Community
|
|
47
|
+
from invenio_communities.communities.records.systemfields.access import ReviewPolicyEnum
|
|
48
|
+
from invenio_db import db
|
|
49
|
+
from invenio_rdm_records.fixtures import PrioritizedVocabulariesFixtures
|
|
50
|
+
from invenio_rdm_records.proxies import current_rdm_records
|
|
51
|
+
from invenio_rdm_records.records.api import RDMDraft, RDMRecord
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def execute_upgrade():
|
|
55
|
+
"""Execute the upgrade from InvenioRDM 11.0 to 12.0.0.
|
|
56
|
+
|
|
57
|
+
Please read the disclaimer on this module before thinking about executing
|
|
58
|
+
this function!
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
def migrate_review_policy(community_record):
|
|
62
|
+
if community_record.is_deleted:
|
|
63
|
+
return
|
|
64
|
+
|
|
65
|
+
community_record["access"].setdefault(
|
|
66
|
+
"review_policy", ReviewPolicyEnum.CLOSED.value
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
def update_parent(record):
|
|
70
|
+
"""Update parent schema and parent communities for older records."""
|
|
71
|
+
new_parent_schema = "local://records/parent-v3.0.0.json"
|
|
72
|
+
record.parent["$schema"] = new_parent_schema
|
|
73
|
+
|
|
74
|
+
if (
|
|
75
|
+
isinstance(record.parent["access"]["owned_by"], list)
|
|
76
|
+
and len(record.parent["access"]["owned_by"]) > 0
|
|
77
|
+
):
|
|
78
|
+
record.parent.access.owned_by = {
|
|
79
|
+
"user": record.parent["access"]["owned_by"][0]["user"]
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if "pids" not in record.parent:
|
|
83
|
+
record.parent["pids"] = {}
|
|
84
|
+
|
|
85
|
+
if (
|
|
86
|
+
current_app.config["DATACITE_ENABLED"]
|
|
87
|
+
and "doi" in current_app.config["RDM_PARENT_PERSISTENT_IDENTIFIERS"]
|
|
88
|
+
and current_app.config["RDM_PARENT_PERSISTENT_IDENTIFIERS"]["doi"][
|
|
89
|
+
"is_enabled"
|
|
90
|
+
]
|
|
91
|
+
):
|
|
92
|
+
pids = current_rdm_records.records_service.pids.parent_pid_manager.create_all(
|
|
93
|
+
record.parent, pids={}, schemes={"doi"}
|
|
94
|
+
)
|
|
95
|
+
current_rdm_records.records_service.pids.parent_pid_manager.reserve_all(
|
|
96
|
+
record.parent, pids
|
|
97
|
+
)
|
|
98
|
+
record.parent["pids"] = pids
|
|
99
|
+
# Have to commit here otherwise register_or_update won't get
|
|
100
|
+
# the above data
|
|
101
|
+
record.parent.commit()
|
|
102
|
+
|
|
103
|
+
if isinstance(record, RDMRecord):
|
|
104
|
+
current_rdm_records.records_service.pids.register_or_update(
|
|
105
|
+
id_=record["id"],
|
|
106
|
+
identity=system_identity,
|
|
107
|
+
scheme="doi",
|
|
108
|
+
parent=True,
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
def update_record(record):
|
|
112
|
+
# skipping deleted records because can't be committed
|
|
113
|
+
if record.is_deleted:
|
|
114
|
+
return
|
|
115
|
+
|
|
116
|
+
try:
|
|
117
|
+
secho(f"Updating record : {record.pid.pid_value}", fg="yellow")
|
|
118
|
+
|
|
119
|
+
# otherwise the save would not work, due to new attributes
|
|
120
|
+
# (media_files, parent_doi) used
|
|
121
|
+
record["$schema"] = "local://records/record-v6.0.0.json"
|
|
122
|
+
|
|
123
|
+
# Initialize media files as disabled if not any
|
|
124
|
+
record.setdefault("media_files", {"enabled": False})
|
|
125
|
+
if record.media_files.bucket is None:
|
|
126
|
+
record.media_files.create_bucket()
|
|
127
|
+
|
|
128
|
+
update_parent(record)
|
|
129
|
+
|
|
130
|
+
record.commit()
|
|
131
|
+
|
|
132
|
+
secho(f"> Updated parent: {record.parent.pid.pid_value}", fg="green")
|
|
133
|
+
secho(f"> Updated record: {record.pid.pid_value}\n", fg="green")
|
|
134
|
+
return None
|
|
135
|
+
except Exception as e:
|
|
136
|
+
secho(f"> Error {repr(e)}", fg="red")
|
|
137
|
+
error = f"Record {record.pid.pid_value} failed to update"
|
|
138
|
+
return error
|
|
139
|
+
|
|
140
|
+
secho("Starting data migration...", fg="green")
|
|
141
|
+
|
|
142
|
+
# upgrading vocabularies
|
|
143
|
+
pvf = PrioritizedVocabulariesFixtures(system_identity)
|
|
144
|
+
pvf.load()
|
|
145
|
+
|
|
146
|
+
# Migrating communities
|
|
147
|
+
communities = Community.model_cls.query.all()
|
|
148
|
+
|
|
149
|
+
for community_data in communities:
|
|
150
|
+
community = Community(community_data.data, model=community_data)
|
|
151
|
+
|
|
152
|
+
# production data could have problems without it
|
|
153
|
+
if community:
|
|
154
|
+
migrate_review_policy(community)
|
|
155
|
+
community.commit()
|
|
156
|
+
|
|
157
|
+
# Migrating records and drafts
|
|
158
|
+
errors = []
|
|
159
|
+
for record_metadata in RDMRecord.model_cls.query.all():
|
|
160
|
+
record = RDMRecord(record_metadata.data, model=record_metadata)
|
|
161
|
+
error = update_record(record)
|
|
162
|
+
|
|
163
|
+
if error:
|
|
164
|
+
errors.append(error)
|
|
165
|
+
|
|
166
|
+
for draft_metadata in RDMDraft.model_cls.query.all():
|
|
167
|
+
draft = RDMDraft(draft_metadata.data, model=draft_metadata)
|
|
168
|
+
error = update_record(draft)
|
|
169
|
+
if error:
|
|
170
|
+
errors.append(error)
|
|
171
|
+
|
|
172
|
+
success = not errors
|
|
173
|
+
|
|
174
|
+
if success:
|
|
175
|
+
secho("Commiting to DB", nl=True)
|
|
176
|
+
db.session.commit()
|
|
177
|
+
secho(
|
|
178
|
+
"Data migration completed, please rebuild the search indices now.",
|
|
179
|
+
fg="green",
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
else:
|
|
183
|
+
secho("Rollback", nl=True)
|
|
184
|
+
db.session.rollback()
|
|
185
|
+
secho(
|
|
186
|
+
"Upgrade aborted due to the following errors:",
|
|
187
|
+
fg="red",
|
|
188
|
+
err=True,
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
for error in errors:
|
|
192
|
+
secho(error, fg="red", err=True)
|
|
193
|
+
|
|
194
|
+
msg = (
|
|
195
|
+
"The changes have been rolled back. "
|
|
196
|
+
"Please fix the above listed errors and try the upgrade again",
|
|
197
|
+
)
|
|
198
|
+
secho(msg, fg="yellow", err=True)
|
|
199
|
+
|
|
200
|
+
sys.exit(1)
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
# if the script is executed on its own, perform the upgrade
|
|
204
|
+
if __name__ == "__main__":
|
|
205
|
+
execute_upgrade()
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2023-2025 CERN.
|
|
4
|
+
# Copyright (C) 2024-2025 Graz University of Technology.
|
|
5
|
+
# Copyright (C) 2025 Northwestern University.
|
|
6
|
+
#
|
|
7
|
+
# Invenio-App-RDM 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
|
+
"""Record migration script from InvenioRDM 12.0 to 13.0.
|
|
11
|
+
|
|
12
|
+
Disclaimer: This script is intended to be executed *only once*, namely when
|
|
13
|
+
upgrading from InvenioRDM 12.0 to 13.0!
|
|
14
|
+
If this script is executed at any other time, probably the best case scenario
|
|
15
|
+
is that nothing happens!
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
This script has been tested with following data:
|
|
19
|
+
|
|
20
|
+
- record
|
|
21
|
+
- internal_notes
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
import sys
|
|
25
|
+
import traceback
|
|
26
|
+
|
|
27
|
+
from click import secho
|
|
28
|
+
from invenio_access.permissions import system_identity
|
|
29
|
+
from invenio_db import db
|
|
30
|
+
from invenio_rdm_records.proxies import current_rdm_records_service as records_service
|
|
31
|
+
from invenio_search import current_search_client as search_client
|
|
32
|
+
from invenio_search.engine import dsl
|
|
33
|
+
from invenio_search.utils import prefix_index
|
|
34
|
+
from invenio_vocabularies.contrib.affiliations.api import Affiliation
|
|
35
|
+
from invenio_vocabularies.contrib.names.api import Name
|
|
36
|
+
from sqlalchemy import select
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def run_upgrade(has, migrate):
|
|
40
|
+
"""Run upgrade."""
|
|
41
|
+
record_success_counter = 0
|
|
42
|
+
record_error_counter = 0
|
|
43
|
+
draft_success_counter = 0
|
|
44
|
+
draft_error_counter = 0
|
|
45
|
+
|
|
46
|
+
# Handle published records
|
|
47
|
+
published_records = records_service.search(
|
|
48
|
+
system_identity,
|
|
49
|
+
params={"allversions": True, "include_deleted": True},
|
|
50
|
+
extra_filter=has,
|
|
51
|
+
)
|
|
52
|
+
for result in published_records.hits:
|
|
53
|
+
record = records_service.record_cls.pid.resolve(result["id"])
|
|
54
|
+
try:
|
|
55
|
+
migrate(record)
|
|
56
|
+
record_success_counter += 1
|
|
57
|
+
except Exception as error:
|
|
58
|
+
secho(f"> Error {repr(error)}", fg="red")
|
|
59
|
+
error = f"Record {record.pid.pid_value} failed to update"
|
|
60
|
+
record_error_counter += 1
|
|
61
|
+
|
|
62
|
+
# Handle draft records
|
|
63
|
+
draft_records = records_service.search_drafts(
|
|
64
|
+
system_identity,
|
|
65
|
+
params={"allversions": True},
|
|
66
|
+
extra_filter=has,
|
|
67
|
+
)
|
|
68
|
+
for result in draft_records.hits:
|
|
69
|
+
draft = records_service.draft_cls.pid.resolve(
|
|
70
|
+
result["id"],
|
|
71
|
+
registered_only=False,
|
|
72
|
+
)
|
|
73
|
+
try:
|
|
74
|
+
migrate(draft)
|
|
75
|
+
draft_success_counter += 1
|
|
76
|
+
except Exception as error:
|
|
77
|
+
secho(f"> Error {repr(error)}", fg="red")
|
|
78
|
+
error = f"Draft {draft.pid.pid_value} failed to update"
|
|
79
|
+
draft_error_counter += 1
|
|
80
|
+
|
|
81
|
+
if draft_error_counter > 0 or record_error_counter > 0:
|
|
82
|
+
db.session.rollback()
|
|
83
|
+
secho(
|
|
84
|
+
f"Migration failed: {record_error_counter} records had failures and {draft_error_counter} drafts had failures",
|
|
85
|
+
fg="red",
|
|
86
|
+
)
|
|
87
|
+
secho(
|
|
88
|
+
"The changes have been rolled back. Please fix the above listed errors and try the upgrade again",
|
|
89
|
+
fg="yellow",
|
|
90
|
+
err=True,
|
|
91
|
+
)
|
|
92
|
+
elif draft_success_counter > 0 or record_success_counter > 0:
|
|
93
|
+
db.session.commit()
|
|
94
|
+
secho(
|
|
95
|
+
f"Migration completed: {record_success_counter} records have been updated and {draft_success_counter} drafts have been updated",
|
|
96
|
+
fg="green",
|
|
97
|
+
)
|
|
98
|
+
else:
|
|
99
|
+
secho(
|
|
100
|
+
"Migration completed: no records or drafts required updating.", fg="green"
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def run_upgrade_for_thesis():
|
|
105
|
+
"""Run upgrade for thesis."""
|
|
106
|
+
|
|
107
|
+
def migrate_thesis_university(record_or_draft):
|
|
108
|
+
custom_fields = record_or_draft.get("custom_fields", {})
|
|
109
|
+
university = custom_fields.get("thesis:university")
|
|
110
|
+
if university and "thesis:thesis" not in custom_fields:
|
|
111
|
+
custom_fields["thesis:thesis"] = {"university": university}
|
|
112
|
+
|
|
113
|
+
record_or_draft.commit()
|
|
114
|
+
|
|
115
|
+
# Common query filter
|
|
116
|
+
has_thesis = dsl.Q("exists", field="custom_fields.thesis:university")
|
|
117
|
+
|
|
118
|
+
secho("Thesis upgrade has started.", fg="green")
|
|
119
|
+
|
|
120
|
+
run_upgrade(has_thesis, migrate_thesis_university)
|
|
121
|
+
|
|
122
|
+
secho("Thesis upgrade has finished.", fg="green")
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def run_upgrade_for_affiliations():
|
|
126
|
+
"""Update affiliations entry so that they conform to new shape."""
|
|
127
|
+
secho("Affiliations upgrade has started.", fg="green")
|
|
128
|
+
|
|
129
|
+
error = False
|
|
130
|
+
# Batch intake to limit memory usage
|
|
131
|
+
stmt = select(Affiliation.model_cls).execution_options(yield_per=250)
|
|
132
|
+
|
|
133
|
+
for affiliation_model in db.session.scalars(stmt):
|
|
134
|
+
try:
|
|
135
|
+
data_for_affiliation = affiliation_model.data
|
|
136
|
+
data_for_affiliation.pop("id", None)
|
|
137
|
+
data_for_affiliation.pop("pid", None)
|
|
138
|
+
affiliation = Affiliation(data_for_affiliation, model=affiliation_model)
|
|
139
|
+
affiliation.commit()
|
|
140
|
+
except Exception as e:
|
|
141
|
+
secho(f"Migration failed with '{repr(e)}'.", fg="red")
|
|
142
|
+
secho(f"Affiliation {affiliation_model.pid} failed to update", fg="red")
|
|
143
|
+
trace = traceback.format_exc()
|
|
144
|
+
secho(f"Traceback {trace}", fg="red")
|
|
145
|
+
error = True
|
|
146
|
+
break
|
|
147
|
+
|
|
148
|
+
if error:
|
|
149
|
+
db.session.rollback()
|
|
150
|
+
secho("Affiliations upgrade failed.", fg="red")
|
|
151
|
+
sys.exit(1)
|
|
152
|
+
else:
|
|
153
|
+
db.session.commit()
|
|
154
|
+
secho("Affiliations upgrade succeeded.", fg="green")
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def run_upgrade_for_names():
|
|
158
|
+
"""Update names entry so that they conform to new shape."""
|
|
159
|
+
secho("Names upgrade has started.", fg="green")
|
|
160
|
+
|
|
161
|
+
error = False
|
|
162
|
+
# Batch intake to limit memory usage
|
|
163
|
+
stmt = select(Name.model_cls).execution_options(yield_per=250)
|
|
164
|
+
|
|
165
|
+
for name_model in db.session.scalars(stmt):
|
|
166
|
+
try:
|
|
167
|
+
data_for_name = name_model.data
|
|
168
|
+
data_for_name.pop("id", None)
|
|
169
|
+
data_for_name.pop("pid", None)
|
|
170
|
+
name = Name(data_for_name, model=name_model)
|
|
171
|
+
name.commit()
|
|
172
|
+
except Exception as e:
|
|
173
|
+
secho(f"Migration failed with '{repr(e)}'.", fg="red")
|
|
174
|
+
secho(f"Name {name_model.pid} failed to update", fg="red")
|
|
175
|
+
trace = traceback.format_exc()
|
|
176
|
+
secho(f"Traceback {trace}", fg="red")
|
|
177
|
+
error = True
|
|
178
|
+
break
|
|
179
|
+
|
|
180
|
+
if error:
|
|
181
|
+
db.session.rollback()
|
|
182
|
+
secho("Names upgrade failed.", fg="red")
|
|
183
|
+
sys.exit(1)
|
|
184
|
+
else:
|
|
185
|
+
db.session.commit()
|
|
186
|
+
secho("Names upgrade succeeded.", fg="green")
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
def run_upgrade_for_event_stats_mappings():
|
|
190
|
+
"""Update the live event stats mappings to add missing fields."""
|
|
191
|
+
secho("Event stats mappings upgrade has started.", fg="green")
|
|
192
|
+
|
|
193
|
+
# Find the latest mappings for views and download stats events
|
|
194
|
+
for event_type in ("record-view", "file-download"):
|
|
195
|
+
try:
|
|
196
|
+
events_index = prefix_index(f"events-stats-{event_type}-*")
|
|
197
|
+
res = search_client.indices.get(events_index)
|
|
198
|
+
last_two_indices = sorted(res.keys())[-2:]
|
|
199
|
+
for index in last_two_indices:
|
|
200
|
+
res = search_client.indices.put_mapping(
|
|
201
|
+
index=index,
|
|
202
|
+
body={"properties": {"is_machine": {"type": "boolean"}}},
|
|
203
|
+
)
|
|
204
|
+
except Exception as e:
|
|
205
|
+
secho(f"Mapping update for {event_type} failed with '{repr(e)}'.", fg="red")
|
|
206
|
+
trace = traceback.format_exc()
|
|
207
|
+
secho(f"Traceback {trace}", fg="red")
|
|
208
|
+
secho("Event stats mappings upgrade succeeded.", fg="green")
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def execute_upgrade():
|
|
212
|
+
"""Execute the upgrade from InvenioRDM 12.0 to 13.0.0.
|
|
213
|
+
|
|
214
|
+
Please read the disclaimer on this module before thinking about executing
|
|
215
|
+
this function!
|
|
216
|
+
|
|
217
|
+
NOTE:
|
|
218
|
+
since the data upgrade steps are more selective now, the approach how to do
|
|
219
|
+
it has been changed. now the records/drafts which should be updated are
|
|
220
|
+
searched by a filter and then the updates are applied to those
|
|
221
|
+
records/drafts explicitly. this should improve speed and should make it
|
|
222
|
+
easier to upgrade large instances
|
|
223
|
+
|
|
224
|
+
"""
|
|
225
|
+
secho("Starting data migration...", fg="green")
|
|
226
|
+
|
|
227
|
+
run_upgrade_for_thesis()
|
|
228
|
+
run_upgrade_for_affiliations()
|
|
229
|
+
run_upgrade_for_names()
|
|
230
|
+
run_upgrade_for_event_stats_mappings()
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
# if the script is executed on its own, perform the upgrade
|
|
234
|
+
if __name__ == "__main__":
|
|
235
|
+
execute_upgrade()
|
|
@@ -68,7 +68,7 @@ def execute_upgrade():
|
|
|
68
68
|
# Cleanup associated deleted drafts.
|
|
69
69
|
|
|
70
70
|
drafts = RDMDraftMetadata.query.filter(
|
|
71
|
-
RDMDraftMetadata.is_deleted == True
|
|
71
|
+
RDMDraftMetadata.is_deleted == True # noqa
|
|
72
72
|
).all() # noqa
|
|
73
73
|
for d in drafts:
|
|
74
74
|
# Delete all file draft records
|
|
@@ -15,7 +15,6 @@ is that nothing happens!
|
|
|
15
15
|
|
|
16
16
|
import yaml
|
|
17
17
|
from flask import current_app
|
|
18
|
-
from invenio_access.permissions import system_identity
|
|
19
18
|
from invenio_db import db
|
|
20
19
|
from invenio_pidstore.models import PersistentIdentifier
|
|
21
20
|
from invenio_rdm_records.records.api import RDMDraft, RDMRecord
|
|
@@ -144,7 +143,7 @@ def check_affiliations():
|
|
|
144
143
|
with open("invalid_affiliations.yaml", "w") as f:
|
|
145
144
|
yaml.dump(list(invalid_affiliations), f)
|
|
146
145
|
else:
|
|
147
|
-
print(
|
|
146
|
+
print("All your instance's affiliations are valid.")
|
|
148
147
|
if needs_ror:
|
|
149
148
|
print(
|
|
150
149
|
"You have affiliations with ROR identifiers, you need to "
|
|
@@ -197,7 +196,7 @@ def check_subjects():
|
|
|
197
196
|
with open("custom_subjects.yaml", "w") as f:
|
|
198
197
|
yaml.dump(list(subjects_to_dump.values()), f)
|
|
199
198
|
else:
|
|
200
|
-
print(
|
|
199
|
+
print("All your instance's subjects are valid.")
|
|
201
200
|
|
|
202
201
|
|
|
203
202
|
def execute_upgrade():
|
|
@@ -67,7 +67,7 @@ def execute_upgrade():
|
|
|
67
67
|
success = not errors
|
|
68
68
|
|
|
69
69
|
if success:
|
|
70
|
-
echo(
|
|
70
|
+
echo("Committing to DB", nl=True)
|
|
71
71
|
db.session.commit()
|
|
72
72
|
secho(
|
|
73
73
|
"Data migration completed, please rebuild the search indices now.",
|
|
@@ -75,7 +75,7 @@ def execute_upgrade():
|
|
|
75
75
|
)
|
|
76
76
|
|
|
77
77
|
else:
|
|
78
|
-
echo(
|
|
78
|
+
echo("Rollback", nl=True)
|
|
79
79
|
db.session.rollback()
|
|
80
80
|
secho(
|
|
81
81
|
"Upgrade aborted due to the following errors:",
|
|
@@ -30,7 +30,7 @@ def execute_upgrade():
|
|
|
30
30
|
echo(f"Updating record: {system_created_set.id}... ", nl=True)
|
|
31
31
|
system_created_set.system_created = True
|
|
32
32
|
|
|
33
|
-
echo(
|
|
33
|
+
echo("Committing to DB", nl=True)
|
|
34
34
|
db.session.commit()
|
|
35
35
|
secho(
|
|
36
36
|
"Data migration completed.",
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2023 Graz University of Technology.
|
|
4
|
+
#
|
|
5
|
+
# Invenio App RDM is free software; you can redistribute it and/or modify it
|
|
6
|
+
# under the terms of the MIT License; see LICENSE file for more details.
|
|
7
|
+
|
|
8
|
+
"""RDM User Schemas."""
|
|
9
|
+
|
|
10
|
+
from invenio_users_resources.services.schemas import (
|
|
11
|
+
NotificationPreferences,
|
|
12
|
+
UserPreferencesSchema,
|
|
13
|
+
UserSchema,
|
|
14
|
+
)
|
|
15
|
+
from marshmallow import fields
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class UserPreferencesNotificationsSchema(UserPreferencesSchema):
|
|
19
|
+
"""Schema extending preferences with notification preferences for model validation."""
|
|
20
|
+
|
|
21
|
+
notifications = fields.Nested(NotificationPreferences)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class NotificationsUserSchema(UserSchema):
|
|
25
|
+
"""Schema extending preferences with notification preferences for user service."""
|
|
26
|
+
|
|
27
|
+
preferences = fields.Nested(UserPreferencesNotificationsSchema)
|
|
@@ -23,6 +23,10 @@ def search_app_context():
|
|
|
23
23
|
current_app.config["RDM_SORT_OPTIONS"],
|
|
24
24
|
"/api/user/records",
|
|
25
25
|
{"Accept": "application/vnd.inveniordm.v1+json"},
|
|
26
|
+
pagination_options=(10, 20),
|
|
27
|
+
initial_filters=[
|
|
28
|
+
["shared_with_me", "false"],
|
|
29
|
+
],
|
|
26
30
|
),
|
|
27
31
|
"search_app_rdm_user_communities_config": partial(
|
|
28
32
|
search_app_config,
|
|
@@ -31,6 +35,7 @@ def search_app_context():
|
|
|
31
35
|
current_app.config["RDM_SORT_OPTIONS"],
|
|
32
36
|
"/api/user/communities",
|
|
33
37
|
{"Accept": "application/vnd.inveniordm.v1+json"},
|
|
38
|
+
pagination_options=(10, 20),
|
|
34
39
|
),
|
|
35
40
|
"search_app_rdm_user_requests_config": partial(
|
|
36
41
|
search_app_config,
|
|
@@ -39,7 +44,10 @@ def search_app_context():
|
|
|
39
44
|
current_app.config["RDM_SORT_OPTIONS"],
|
|
40
45
|
"/api/user/requests",
|
|
41
46
|
{"Accept": "application/json"},
|
|
42
|
-
initial_filters=[
|
|
47
|
+
initial_filters=[
|
|
48
|
+
["is_open", "true"],
|
|
49
|
+
["shared_with_me", "false"],
|
|
50
|
+
],
|
|
43
51
|
hidden_params=[["expand", "1"]],
|
|
44
52
|
),
|
|
45
53
|
}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
<div
|
|
20
20
|
id="invenio-search-config"
|
|
21
21
|
data-invenio-search-config='{{ search_app_rdm_user_communities_config(app_id="InvenioAppRdm.DashboardCommunities") | tojson }}'
|
|
22
|
+
data-can-create-community='{{ can_create_community | tojson }}'
|
|
22
23
|
>
|
|
23
24
|
</div>
|
|
24
25
|
{%- endblock user_dashboard_body %}
|
|
@@ -1,32 +1,46 @@
|
|
|
1
1
|
{# -*- coding: utf-8 -*-
|
|
2
2
|
|
|
3
3
|
This file is part of Invenio.
|
|
4
|
-
Copyright (C) 2022 CERN.
|
|
4
|
+
Copyright (C) 2022-2024 CERN.
|
|
5
5
|
|
|
6
6
|
Invenio is free software; you can redistribute it and/or modify it
|
|
7
7
|
under the terms of the MIT License; see LICENSE file for more details.
|
|
8
8
|
#}
|
|
9
9
|
|
|
10
|
-
<div class="ui container fluid page-subheader-outer shadowless with-submenu ml-0-mobile mr-0-mobile mb-0 rel-pt-2" id="dashboard-user-header-container">
|
|
11
|
-
<div class="ui container page-subheader">
|
|
12
|
-
<div class="ui items unstackable">
|
|
10
|
+
<div class="ui container fluid page-subheader-outer shadowless with-submenu ml-0-mobile mr-0-mobile mb-0 pb-0 rel-pt-2" id="dashboard-user-header-container">
|
|
11
|
+
<div class="ui container page-subheader flex justify-space-between align-items-center">
|
|
12
|
+
<div class="ui items unstackable m-0">
|
|
13
13
|
<div class="item">
|
|
14
14
|
<div class="ui image dashboard-header-avatar">
|
|
15
15
|
<img src="{{ user_avatar }}" alt="" />
|
|
16
16
|
</div>
|
|
17
|
-
<div class="content rel-pl-1">
|
|
18
|
-
<
|
|
19
|
-
|
|
17
|
+
<div class="middle aligned content rel-pl-1">
|
|
18
|
+
<h1 class="ui medium header" aria-label="{{ _('Your dashboard') }}">{{ current_userprofile.full_name or current_user.username or current_userprofile.email or _('Anonymous user')}}</h1>
|
|
19
|
+
{% if current_userprofile.affiliations %}
|
|
20
|
+
<div class="meta">{{ current_userprofile.affiliations }}</div>
|
|
21
|
+
{% endif %}
|
|
20
22
|
</div>
|
|
21
23
|
</div>
|
|
22
24
|
</div>
|
|
25
|
+
{% if active_dashboard_menu_item == "uploads" %}
|
|
26
|
+
<a class="ui tiny button positive left labeled icon m-0" href={{ url_for("invenio_app_rdm_records.deposit_create") }}>
|
|
27
|
+
<i class="upload icon" aria-hidden="true"></i>
|
|
28
|
+
{{ _('New upload') }}
|
|
29
|
+
</a>
|
|
30
|
+
{% endif %}
|
|
31
|
+
|
|
32
|
+
{% if active_dashboard_menu_item == "communities" %}
|
|
33
|
+
<a class="ui tiny button positive left labeled icon m-0" href={{ url_for("invenio_communities.communities_new") }}>
|
|
34
|
+
<i class="plus icon" aria-hidden="true"></i>
|
|
35
|
+
{{ _('New community') }}
|
|
36
|
+
</a>
|
|
37
|
+
{% endif %}
|
|
23
38
|
</div>
|
|
24
39
|
<div class="ui container secondary pointing menu page-subheader pl-0">
|
|
25
|
-
{% for item in current_menu.submenu('dashboard').children %}
|
|
40
|
+
{% for item in current_menu.submenu('dashboard').children if item.visible %}
|
|
26
41
|
<a
|
|
27
42
|
class="item {{ 'active' if active_dashboard_menu_item == item.name }} {{ 'disabled' if not item.url }}"
|
|
28
43
|
href="{{ item.url }}">{{ item.text }}</a>
|
|
29
44
|
{% endfor %}
|
|
30
45
|
</div>
|
|
31
46
|
</div>
|
|
32
|
-
|