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.
Files changed (479) hide show
  1. invenio_app_rdm/__init__.py +3 -2
  2. invenio_app_rdm/{stats/templates/events/record_view/v7 → administration}/__init__.py +1 -3
  3. invenio_app_rdm/{stats/templates/events/record_view → administration/audit_logs}/__init__.py +6 -4
  4. invenio_app_rdm/administration/audit_logs/audit_logs.py +81 -0
  5. invenio_app_rdm/administration/domains/__init__.py +22 -0
  6. invenio_app_rdm/administration/domains/domains.py +159 -0
  7. invenio_app_rdm/administration/moderation/__init__.py +11 -0
  8. invenio_app_rdm/administration/moderation/requests.py +175 -0
  9. invenio_app_rdm/administration/records/__init__.py +15 -0
  10. invenio_app_rdm/administration/records/records.py +163 -0
  11. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/audit_logs.html +14 -0
  12. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/domains_search.html +13 -0
  13. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/records/drafts.html +14 -0
  14. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/records/records.html +14 -0
  15. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests.html +14 -0
  16. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests_details.html +91 -0
  17. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/user_moderation.html +14 -0
  18. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/user_moderation_details.html +14 -0
  19. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/users_search.html +14 -0
  20. invenio_app_rdm/{stats/templates/aggregations/aggr_record_view/v7 → administration/user_moderation}/__init__.py +4 -3
  21. invenio_app_rdm/administration/user_moderation/user_moderation.py +175 -0
  22. invenio_app_rdm/administration/users/__init__.py +12 -0
  23. invenio_app_rdm/administration/users/users.py +130 -0
  24. invenio_app_rdm/{stats/templates/events/file_download/v7 → administration/views}/__init__.py +4 -3
  25. invenio_app_rdm/administration/views/ui.py +21 -0
  26. invenio_app_rdm/cli.py +37 -14
  27. invenio_app_rdm/communities_ui/searchapp.py +1 -0
  28. invenio_app_rdm/communities_ui/sitemap.py +63 -0
  29. invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/collections/collection.html +60 -0
  30. invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/collections/macros.html +43 -0
  31. invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/details/browse/index.html +59 -0
  32. invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/{details → records}/index.html +1 -1
  33. invenio_app_rdm/communities_ui/views/communities.py +183 -8
  34. invenio_app_rdm/communities_ui/views/ui.py +52 -42
  35. invenio_app_rdm/config.py +586 -90
  36. invenio_app_rdm/ext.py +157 -0
  37. invenio_app_rdm/fixtures/__init__.py +2 -2
  38. invenio_app_rdm/fixtures/pages.py +34 -12
  39. invenio_app_rdm/records_ui/searchapp.py +43 -0
  40. invenio_app_rdm/records_ui/sitemap.py +44 -0
  41. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html +59 -16
  42. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html +236 -141
  43. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/access-form.html +64 -0
  44. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/citation.html +4 -3
  45. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/contact.html +2 -1
  46. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/creatibutors.html +22 -20
  47. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/description.html +7 -5
  48. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/details.html +290 -230
  49. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/doi.html +3 -24
  50. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/meta.html +36 -0
  51. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/citations.html +6 -0
  52. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/communities.html +30 -22
  53. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/details.html +20 -19
  54. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/export.html +19 -16
  55. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/external_resources.html +55 -0
  56. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/keywords_subjects.html +9 -5
  57. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/licenses.html +62 -49
  58. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/locations.html +23 -0
  59. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/manage_menu.html +24 -4
  60. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/metrics.html +2 -2
  61. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/technical_metadata.html +21 -0
  62. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/versions.html +15 -5
  63. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/stats.html +93 -79
  64. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/subjects.html +1 -1
  65. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/draft_not_found.html +17 -0
  66. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/export.html +2 -1
  67. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/creatibutors.html +54 -39
  68. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/detail.html +182 -93
  69. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/doi.html +36 -0
  70. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/files.html +152 -79
  71. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/locations.html +62 -0
  72. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/version.html +3 -2
  73. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/restricted_with_doi_tombstone.html +33 -0
  74. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/tombstone.html +55 -12
  75. invenio_app_rdm/records_ui/utils.py +126 -1
  76. invenio_app_rdm/records_ui/views/__init__.py +75 -17
  77. invenio_app_rdm/records_ui/views/decorators.py +309 -38
  78. invenio_app_rdm/records_ui/views/deposits.py +302 -51
  79. invenio_app_rdm/records_ui/views/filters.py +74 -7
  80. invenio_app_rdm/records_ui/views/records.py +256 -90
  81. invenio_app_rdm/redirector/resource.py +1 -0
  82. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-submission/index.html +34 -8
  83. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/file-modification/index.html +88 -0
  84. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/guest-access-request/index.html +66 -0
  85. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/macros/request_header.html +5 -3
  86. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/record-deletion/index.html +95 -0
  87. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/subcommunity/index.html +49 -0
  88. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/subcommunity-invitation/index.html +49 -0
  89. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/user-access-request/index.html +59 -0
  90. invenio_app_rdm/requests_ui/views/requests.py +221 -42
  91. invenio_app_rdm/requests_ui/views/ui.py +17 -4
  92. invenio_app_rdm/tasks.py +6 -2
  93. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/AuditLogActions.js +136 -0
  94. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/ViewJson.js +35 -0
  95. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/ViewRecentChanges.js +119 -0
  96. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/index.js +31 -0
  97. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/search/SearchResultItemLayout.js +87 -0
  98. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/search/index.js +9 -0
  99. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/CompareRevisionsDropdown.js +89 -0
  100. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/ImpersonateUser.js +92 -0
  101. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/ImpersonateUserForm.js +199 -0
  102. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/RevisionsDiffViewer.js +80 -0
  103. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/SetQuotaAction.js +109 -0
  104. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/SetQuotaForm.js +196 -0
  105. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/index.js +9 -0
  106. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domains/index.js +27 -0
  107. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domains/search/SearchResultItemLayout.js +185 -0
  108. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domains/search/index.js +9 -0
  109. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/drafts/index.js +32 -0
  110. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/CompareRevisions.js +129 -0
  111. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RecordActions.js +75 -0
  112. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RecordResourceActions.js +185 -0
  113. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RemovalReasonsSelect.js +85 -0
  114. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RestoreConfirmation.js +108 -0
  115. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/TombstoneForm.js +212 -0
  116. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/api/api.js +38 -0
  117. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/api/index.js +9 -0
  118. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/api/routes.js +30 -0
  119. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/index.js +40 -0
  120. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/AdministrationSearchLayout.js +56 -0
  121. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/RecordSearchLayout.js +84 -0
  122. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/SearchResultItemLayout.js +171 -0
  123. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/filters/DeletionStatusFilter.js +121 -0
  124. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/filters/index.js +9 -0
  125. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/index.js +10 -0
  126. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchResultItem.js +81 -0
  127. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchbarLayout.js +48 -0
  128. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/index.js +22 -0
  129. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/ModerationActions.js +103 -0
  130. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/index.js +29 -0
  131. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/SearchResultItemLayout.js +151 -0
  132. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/UserModerationSearchLayout.js +56 -0
  133. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/index.js +10 -0
  134. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/UserActions.js +263 -0
  135. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/api/api.js +42 -0
  136. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/api/index.js +8 -0
  137. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/api/routes.js +38 -0
  138. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/index.js +30 -0
  139. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/SearchResultItemLayout.js +202 -0
  140. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/UserSearchLayout.js +81 -0
  141. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/filters/UserStatusFilterComponent.js +114 -0
  142. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/filters/index.js +1 -0
  143. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/index.js +10 -0
  144. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/collectionRecordsSearch/index.js +61 -0
  145. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSearchAppLayout.js +2 -2
  146. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSearchBarElement.js +1 -1
  147. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSingleSearchBarElement.js +1 -1
  148. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/index.js +8 -3
  149. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CompactStats.js +51 -0
  150. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CopyButton.js +38 -19
  151. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayPartOfCommunities.js +78 -0
  152. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayVerifiedCommunity.js +54 -0
  153. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/FileModificationUntil.js +45 -0
  154. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionModal.js +354 -0
  155. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionRadioGroup.js +44 -0
  156. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion.js +81 -0
  157. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordsResultsListItem.js +61 -31
  158. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js +680 -486
  159. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/ShareDraftButton.js +65 -0
  160. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/config.js +48 -0
  161. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/index.js +14 -2
  162. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/frontpage/RecordsList.js +61 -21
  163. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/AccessRequestForm.js +254 -0
  164. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/CommunitiesManagement.js +171 -0
  165. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/CommunitiesManagementDropdown.js +186 -0
  166. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/EditButton.js +10 -1
  167. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ExportDropdown.js +7 -2
  168. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageButton.js +140 -0
  169. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageDefaultBrandingAction/ManageDefaultBrandingAction.js +129 -0
  170. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/PendingCommunitiesModal/PendingCommunitiesModal.js +63 -0
  171. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/PendingCommunitiesModal/PendingCommunitiesSearch.js +89 -0
  172. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/PendingCommunitiesModal/PendingCommunityRequestItem.js +33 -0
  173. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCitationField.js +55 -51
  174. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesList.js +87 -89
  175. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesListModal.js +44 -30
  176. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesSearch.js +39 -20
  177. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesSearchItem.js +44 -17
  178. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitySubmission/RecordCommunitySubmissionModal.js +171 -0
  179. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js +111 -62
  180. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordVersionsList.js +99 -61
  181. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RemoveFromCommunity/RemoveFromCommunityAction.js +188 -0
  182. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/AccessDropdown.js +93 -0
  183. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/CreateAccessLink.js +98 -0
  184. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksSearchItem.js +170 -0
  185. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksSearchResultContainer.js +216 -0
  186. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksTab.js +104 -0
  187. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessRequests/AccessRequestsTab.js +230 -0
  188. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/AccessUsersGroups.js +178 -0
  189. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/AddUserGroupAccessModal.js +172 -0
  190. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/GroupsTab.js +88 -0
  191. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/PeopleTab.js +88 -0
  192. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/UserGroupAccessSearchResultItem.js +158 -0
  193. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/{ShareButton.js → ShareOptions/ShareButton.js} +13 -4
  194. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/ShareModal.js +238 -0
  195. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/api/api.js +39 -0
  196. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/access.js +24 -0
  197. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/index.js +72 -25
  198. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/theme.js +10 -6
  199. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/mapping.js +6 -1
  200. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/AccessRequestExpiration.js +56 -0
  201. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/index.js +1 -0
  202. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineEdit.js +177 -0
  203. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineRead.js +50 -0
  204. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/overrides/TimelineFeedHeader.js +34 -0
  205. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/search/components.js +15 -13
  206. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/search/index.js +1 -1
  207. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/subcommunity/browse.js +28 -0
  208. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/theme.js +77 -9
  209. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/base.js +122 -74
  210. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/communities.js +1 -11
  211. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/requests.js +27 -412
  212. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads.js +15 -14
  213. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/ComputerTabletUploadsItem.js +47 -27
  214. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/MobileUploadsItem.js +43 -27
  215. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/utils.js +32 -7
  216. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/file_uploader/uppy.less +37 -0
  217. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/landing_page/creatibutors.less +15 -4
  218. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/landing_page/licenses.less +5 -3
  219. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/form.overrides +15 -0
  220. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/grid.overrides +24 -33
  221. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/menu.overrides +18 -3
  222. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/message.overrides +19 -3
  223. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/message.variables +2 -0
  224. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/table.overrides +78 -6
  225. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/button.overrides +21 -0
  226. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/container.overrides +30 -7
  227. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/header.overrides +17 -4
  228. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/icon.overrides +2 -0
  229. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/image.overrides +34 -4
  230. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/input.overrides +10 -0
  231. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/label.overrides +48 -4
  232. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/list.overrides +10 -0
  233. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/segment.overrides +16 -13
  234. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides +156 -97
  235. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.variables +7 -3
  236. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides +35 -9
  237. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/dropdown.overrides +28 -6
  238. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/dropdown.variables +1 -0
  239. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/modal.overrides +40 -11
  240. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/modal.variables +5 -0
  241. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/search.overrides +7 -0
  242. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/search.variables +0 -0
  243. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/transition.overrides +8 -8
  244. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/theme.less +2 -5
  245. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/card.overrides +4 -2
  246. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/item.overrides +20 -33
  247. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/i18next.js +1 -1
  248. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/_generatedTranslations.js +66 -0
  249. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ar/messages.po +805 -138
  250. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ar/translations.json +306 -86
  251. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/messages.po +690 -71
  252. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/translations.json +282 -86
  253. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/messages.po +700 -81
  254. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/translations.json +282 -86
  255. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/messages.po +822 -139
  256. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/translations.json +294 -86
  257. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/messages.po +692 -67
  258. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/translations.json +282 -86
  259. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/messages.po +819 -139
  260. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/translations.json +282 -86
  261. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/messages.po +699 -79
  262. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/translations.json +282 -86
  263. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/en/messages.po +1000 -5
  264. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/en/translations.json +315 -2
  265. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/messages.po +811 -138
  266. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/translations.json +282 -86
  267. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/messages.po +747 -134
  268. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/translations.json +282 -86
  269. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/messages.po +689 -70
  270. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/translations.json +282 -86
  271. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/messages.po +810 -127
  272. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/translations.json +282 -86
  273. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/messages.po +696 -71
  274. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/translations.json +288 -86
  275. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/messages.po +804 -137
  276. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/translations.json +282 -86
  277. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/index.js +17 -66
  278. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/messages.po +715 -88
  279. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/translations.json +282 -86
  280. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/messages.po +684 -71
  281. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/translations.json +276 -86
  282. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/messages.po +690 -71
  283. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/translations.json +282 -86
  284. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ko/messages.po +889 -0
  285. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ko/translations.json +277 -0
  286. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/lt/messages.po +703 -72
  287. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/lt/translations.json +294 -86
  288. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/messages.po +690 -71
  289. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/translations.json +282 -86
  290. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/messages.po +705 -71
  291. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/translations.json +294 -86
  292. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/messages.po +695 -70
  293. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/translations.json +282 -86
  294. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/messages.po +718 -86
  295. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/translations.json +288 -86
  296. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/messages.po +807 -125
  297. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/translations.json +294 -86
  298. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/messages.po +714 -83
  299. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/translations.json +294 -86
  300. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/messages.po +809 -142
  301. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/translations.json +282 -86
  302. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/messages.po +800 -129
  303. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/translations.json +282 -86
  304. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/messages.po +717 -83
  305. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/translations.json +294 -86
  306. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/messages.po +737 -124
  307. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/translations.json +276 -86
  308. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/messages.po +684 -71
  309. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/translations.json +276 -86
  310. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/package.json +5 -38
  311. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/translations.pot +863 -127
  312. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/administration_page.html +15 -0
  313. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/default_static_page.html +8 -8
  314. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/files_integrity_report/email/files_integrity_report.html +12 -12
  315. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/footer.html +33 -75
  316. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header.html +42 -27
  317. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header_frontpage.html +4 -2
  318. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header_login.html +144 -113
  319. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.de.html +2 -2
  320. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.en.html +11 -6
  321. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.sv.html +254 -0
  322. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/statistics.sv.html +196 -0
  323. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/versioning.en.html +149 -0
  324. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/versioning.sv.html +143 -0
  325. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/intro_section.html +15 -16
  326. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/macros/records_list.html +33 -3
  327. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/page.html +36 -0
  328. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/page_cover.html +13 -0
  329. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/robots.txt +15 -0
  330. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/searchbar.html +43 -15
  331. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/settings/notifications.html +17 -0
  332. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/site_footer.html +29 -0
  333. invenio_app_rdm/theme/templates/semantic-ui/invenio_communities/default_static_page.html +26 -0
  334. invenio_app_rdm/theme/templates/themes/default/invenio_app_rdm/header.html +147 -0
  335. invenio_app_rdm/theme/templates/themes/default/invenio_app_rdm/site_footer.html +42 -0
  336. invenio_app_rdm/theme/views.py +80 -28
  337. invenio_app_rdm/theme/webpack.py +38 -7
  338. invenio_app_rdm/translations/ar/LC_MESSAGES/messages.mo +0 -0
  339. invenio_app_rdm/translations/ar/LC_MESSAGES/messages.po +975 -378
  340. invenio_app_rdm/translations/bg/LC_MESSAGES/messages.mo +0 -0
  341. invenio_app_rdm/translations/bg/LC_MESSAGES/messages.po +908 -279
  342. invenio_app_rdm/translations/ca/LC_MESSAGES/messages.mo +0 -0
  343. invenio_app_rdm/translations/ca/LC_MESSAGES/messages.po +913 -284
  344. invenio_app_rdm/translations/cs/LC_MESSAGES/messages.mo +0 -0
  345. invenio_app_rdm/translations/cs/LC_MESSAGES/messages.po +1070 -406
  346. invenio_app_rdm/translations/da/LC_MESSAGES/messages.mo +0 -0
  347. invenio_app_rdm/translations/da/LC_MESSAGES/messages.po +909 -274
  348. invenio_app_rdm/translations/de/LC_MESSAGES/messages.mo +0 -0
  349. invenio_app_rdm/translations/de/LC_MESSAGES/messages.po +1018 -407
  350. invenio_app_rdm/translations/el/LC_MESSAGES/messages.mo +0 -0
  351. invenio_app_rdm/translations/el/LC_MESSAGES/messages.po +916 -287
  352. invenio_app_rdm/translations/es/LC_MESSAGES/messages.mo +0 -0
  353. invenio_app_rdm/translations/es/LC_MESSAGES/messages.po +964 -372
  354. invenio_app_rdm/translations/et/LC_MESSAGES/messages.mo +0 -0
  355. invenio_app_rdm/translations/et/LC_MESSAGES/messages.po +939 -363
  356. invenio_app_rdm/translations/fa/LC_MESSAGES/messages.mo +0 -0
  357. invenio_app_rdm/translations/fa/LC_MESSAGES/messages.po +907 -278
  358. invenio_app_rdm/translations/fr/LC_MESSAGES/messages.mo +0 -0
  359. invenio_app_rdm/translations/fr/LC_MESSAGES/messages.po +1033 -376
  360. invenio_app_rdm/translations/hr/LC_MESSAGES/messages.mo +0 -0
  361. invenio_app_rdm/translations/hr/LC_MESSAGES/messages.po +908 -279
  362. invenio_app_rdm/translations/hu/LC_MESSAGES/messages.mo +0 -0
  363. invenio_app_rdm/translations/hu/LC_MESSAGES/messages.po +989 -372
  364. invenio_app_rdm/translations/it/LC_MESSAGES/messages.mo +0 -0
  365. invenio_app_rdm/translations/it/LC_MESSAGES/messages.po +970 -337
  366. invenio_app_rdm/translations/ja/LC_MESSAGES/messages.mo +0 -0
  367. invenio_app_rdm/translations/ja/LC_MESSAGES/messages.po +908 -279
  368. invenio_app_rdm/translations/ka/LC_MESSAGES/messages.mo +0 -0
  369. invenio_app_rdm/translations/ka/LC_MESSAGES/messages.po +910 -281
  370. invenio_app_rdm/translations/ko/LC_MESSAGES/messages.mo +0 -0
  371. invenio_app_rdm/translations/ko/LC_MESSAGES/messages.po +1361 -0
  372. invenio_app_rdm/translations/lt/LC_MESSAGES/messages.mo +0 -0
  373. invenio_app_rdm/translations/lt/LC_MESSAGES/messages.po +911 -282
  374. invenio_app_rdm/translations/messages.pot +982 -289
  375. invenio_app_rdm/translations/no/LC_MESSAGES/messages.mo +0 -0
  376. invenio_app_rdm/translations/no/LC_MESSAGES/messages.po +908 -279
  377. invenio_app_rdm/translations/pl/LC_MESSAGES/messages.mo +0 -0
  378. invenio_app_rdm/translations/pl/LC_MESSAGES/messages.po +908 -279
  379. invenio_app_rdm/translations/pt/LC_MESSAGES/messages.mo +0 -0
  380. invenio_app_rdm/translations/pt/LC_MESSAGES/messages.po +907 -278
  381. invenio_app_rdm/translations/ro/LC_MESSAGES/messages.mo +0 -0
  382. invenio_app_rdm/translations/ro/LC_MESSAGES/messages.po +1041 -382
  383. invenio_app_rdm/translations/ru/LC_MESSAGES/messages.mo +0 -0
  384. invenio_app_rdm/translations/ru/LC_MESSAGES/messages.po +1023 -371
  385. invenio_app_rdm/translations/sk/LC_MESSAGES/messages.mo +0 -0
  386. invenio_app_rdm/translations/sk/LC_MESSAGES/messages.po +917 -288
  387. invenio_app_rdm/translations/sv/LC_MESSAGES/messages.mo +0 -0
  388. invenio_app_rdm/translations/sv/LC_MESSAGES/messages.po +1007 -398
  389. invenio_app_rdm/translations/tr/LC_MESSAGES/messages.mo +0 -0
  390. invenio_app_rdm/translations/tr/LC_MESSAGES/messages.po +993 -342
  391. invenio_app_rdm/translations/uk/LC_MESSAGES/messages.mo +0 -0
  392. invenio_app_rdm/translations/uk/LC_MESSAGES/messages.po +984 -353
  393. invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
  394. invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.po +940 -348
  395. invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.mo +0 -0
  396. invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.po +908 -279
  397. invenio_app_rdm/upgrade_scripts/fix_migrated_records_from_8_0_to_9_0.py +2 -2
  398. invenio_app_rdm/upgrade_scripts/migrate_10_0_to_11_0.py +1 -1
  399. invenio_app_rdm/upgrade_scripts/migrate_11_0_to_12_0.py +205 -0
  400. invenio_app_rdm/upgrade_scripts/migrate_12_0_to_13_0.py +235 -0
  401. invenio_app_rdm/upgrade_scripts/migrate_2_0_to_3_0.py +1 -1
  402. invenio_app_rdm/upgrade_scripts/migrate_4_0_to_6_0.py +2 -3
  403. invenio_app_rdm/upgrade_scripts/migrate_6_0_to_7_0.py +0 -2
  404. invenio_app_rdm/upgrade_scripts/migrate_8_0_to_9_0.py +2 -2
  405. invenio_app_rdm/upgrade_scripts/migrate_9_0_to_10_0.py +1 -1
  406. invenio_app_rdm/users/schemas.py +27 -0
  407. invenio_app_rdm/users_ui/searchapp.py +9 -1
  408. invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/communities.html +1 -0
  409. invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/header.html +23 -9
  410. invenio_app_rdm/users_ui/views/__init__.py +1 -1
  411. invenio_app_rdm/users_ui/views/dashboard.py +6 -1
  412. invenio_app_rdm/users_ui/views/ui.py +5 -28
  413. invenio_app_rdm/utils/files.py +1 -1
  414. invenio_app_rdm/views.py +21 -0
  415. invenio_app_rdm-14.0.0b1.dev8.dist-info/METADATA +552 -0
  416. invenio_app_rdm-14.0.0b1.dev8.dist-info/RECORD +505 -0
  417. {invenio_app_rdm-12.0.0.dev8.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/WHEEL +1 -1
  418. invenio_app_rdm-14.0.0b1.dev8.dist-info/entry_points.txt +44 -0
  419. invenio_app_rdm/admin.py +0 -36
  420. invenio_app_rdm/stats/__init__.py +0 -24
  421. invenio_app_rdm/stats/event_builders.py +0 -112
  422. invenio_app_rdm/stats/permissions.py +0 -33
  423. invenio_app_rdm/stats/templates/aggregations/__init__.py +0 -10
  424. invenio_app_rdm/stats/templates/aggregations/aggr_file_download/__init__.py +0 -10
  425. invenio_app_rdm/stats/templates/aggregations/aggr_file_download/os-v1/__init__.py +0 -10
  426. invenio_app_rdm/stats/templates/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.0.0.json +0 -69
  427. invenio_app_rdm/stats/templates/aggregations/aggr_file_download/os-v2/__init__.py +0 -10
  428. invenio_app_rdm/stats/templates/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.0.0.json +0 -69
  429. invenio_app_rdm/stats/templates/aggregations/aggr_file_download/v7/__init__.py +0 -10
  430. invenio_app_rdm/stats/templates/aggregations/aggr_file_download/v7/aggr-file-download-v1.0.0.json +0 -69
  431. invenio_app_rdm/stats/templates/aggregations/aggr_record_view/__init__.py +0 -10
  432. invenio_app_rdm/stats/templates/aggregations/aggr_record_view/os-v1/__init__.py +0 -10
  433. invenio_app_rdm/stats/templates/aggregations/aggr_record_view/os-v1/aggr-record-view-v1.0.0.json +0 -46
  434. invenio_app_rdm/stats/templates/aggregations/aggr_record_view/os-v2/__init__.py +0 -10
  435. invenio_app_rdm/stats/templates/aggregations/aggr_record_view/os-v2/aggr-record-view-v1.0.0.json +0 -46
  436. invenio_app_rdm/stats/templates/aggregations/aggr_record_view/v7/aggr-record-view-v1.0.0.json +0 -46
  437. invenio_app_rdm/stats/templates/events/__init__.py +0 -10
  438. invenio_app_rdm/stats/templates/events/file_download/__init__.py +0 -10
  439. invenio_app_rdm/stats/templates/events/file_download/os-v1/__init__.py +0 -10
  440. invenio_app_rdm/stats/templates/events/file_download/os-v1/file-download-v1.0.0.json +0 -93
  441. invenio_app_rdm/stats/templates/events/file_download/os-v2/__init__.py +0 -10
  442. invenio_app_rdm/stats/templates/events/file_download/os-v2/file-download-v1.0.0.json +0 -93
  443. invenio_app_rdm/stats/templates/events/file_download/v7/file-download-v1.0.0.json +0 -93
  444. invenio_app_rdm/stats/templates/events/record_view/os-v1/__init__.py +0 -10
  445. invenio_app_rdm/stats/templates/events/record_view/os-v1/record-view-v1.0.0.json +0 -70
  446. invenio_app_rdm/stats/templates/events/record_view/os-v2/__init__.py +0 -10
  447. invenio_app_rdm/stats/templates/events/record_view/os-v2/record-view-v1.0.0.json +0 -70
  448. invenio_app_rdm/stats/templates/events/record_view/v7/record-view-v1.0.0.json +0 -70
  449. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareModal.js +0 -262
  450. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/requests_items/ComputerTabletRequestsItem.js +0 -74
  451. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/requests_items/MobileRequestsItem.js +0 -70
  452. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/i18next-scanner.config.js +0 -64
  453. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/af/messages.po +0 -272
  454. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/af/translations.json +0 -87
  455. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et_EE/messages.po +0 -272
  456. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et_EE/translations.json +0 -87
  457. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/gl/messages.po +0 -272
  458. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/gl/translations.json +0 -87
  459. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/rw/messages.po +0 -272
  460. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/rw/translations.json +0 -87
  461. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/package-lock.json +0 -1512
  462. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/scripts/compileCatalog.js +0 -40
  463. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/scripts/initCatalog.js +0 -20
  464. invenio_app_rdm/theme/static/robots.txt +0 -5
  465. invenio_app_rdm/translations/af/LC_MESSAGES/messages.mo +0 -0
  466. invenio_app_rdm/translations/af/LC_MESSAGES/messages.po +0 -728
  467. invenio_app_rdm/translations/et_EE/LC_MESSAGES/messages.mo +0 -0
  468. invenio_app_rdm/translations/et_EE/LC_MESSAGES/messages.po +0 -728
  469. invenio_app_rdm/translations/gl/LC_MESSAGES/messages.mo +0 -0
  470. invenio_app_rdm/translations/gl/LC_MESSAGES/messages.po +0 -728
  471. invenio_app_rdm/translations/rw/LC_MESSAGES/messages.mo +0 -0
  472. invenio_app_rdm/translations/rw/LC_MESSAGES/messages.po +0 -728
  473. invenio_app_rdm-12.0.0.dev8.dist-info/AUTHORS.rst +0 -11
  474. invenio_app_rdm-12.0.0.dev8.dist-info/METADATA +0 -103
  475. invenio_app_rdm-12.0.0.dev8.dist-info/RECORD +0 -402
  476. invenio_app_rdm-12.0.0.dev8.dist-info/entry_points.txt +0 -26
  477. /invenio_app_rdm/{translations/.gitkeep → theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/UserModerationBulkActions.js} +0 -0
  478. {invenio_app_rdm-12.0.0.dev8.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info/licenses}/LICENSE +0 -0
  479. {invenio_app_rdm-12.0.0.dev8.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,14 @@
1
+ {#
2
+ Copyright (C) 2025 CERN.
3
+
4
+ Invenio App RDM is free software; you can redistribute it and/or modify it
5
+ under the terms of the MIT License; see LICENSE file for more details.
6
+ #}
7
+
8
+ {% extends "invenio_administration/search.html" %}
9
+
10
+
11
+ {% block javascript %}
12
+ {{ super() }}
13
+ {{ webpack['invenio-audit-logs-administration.js'] }}
14
+ {% endblock %}
@@ -0,0 +1,13 @@
1
+ {#
2
+ Copyright (C) 2024 CERN.
3
+
4
+ Invenio App RDM is free software; you can redistribute it and/or modify it
5
+ under the terms of the MIT License; see LICENSE file for more details.
6
+ #}
7
+
8
+ {% extends "invenio_administration/search.html" %}
9
+
10
+ {% block javascript %}
11
+ {{ super() }}
12
+ {{ webpack['invenio-domains-administration.js'] }}
13
+ {% endblock %}
@@ -0,0 +1,14 @@
1
+ {#
2
+ Copyright (C) 2023 CERN.
3
+
4
+ Invenio App RDM is free software; you can redistribute it and/or modify it
5
+ under the terms of the MIT License; see LICENSE file for more details.
6
+ #}
7
+
8
+ {% extends "invenio_administration/search.html" %}
9
+
10
+
11
+ {% block javascript %}
12
+ {{ super() }}
13
+ {{ webpack['invenio-drafts-administration.js'] }}
14
+ {% endblock %}
@@ -0,0 +1,14 @@
1
+ {#
2
+ Copyright (C) 2023 CERN.
3
+
4
+ Invenio App RDM is free software; you can redistribute it and/or modify it
5
+ under the terms of the MIT License; see LICENSE file for more details.
6
+ #}
7
+
8
+ {% extends "invenio_administration/search.html" %}
9
+
10
+
11
+ {% block javascript %}
12
+ {{ super() }}
13
+ {{ webpack['invenio-records-administration.js'] }}
14
+ {% endblock %}
@@ -0,0 +1,14 @@
1
+ {#
2
+ Copyright (C) 2025 CERN.
3
+
4
+ Invenio App RDM is free software; you can redistribute it and/or modify it
5
+ under the terms of the MIT License; see LICENSE file for more details.
6
+ #}
7
+
8
+ {% extends "invenio_administration/search.html" %}
9
+
10
+
11
+ {% block javascript %}
12
+ {{ super() }}
13
+ {{ webpack['invenio-requests-administration.js'] }}
14
+ {% endblock %}
@@ -0,0 +1,91 @@
1
+ {#
2
+ Copyright (C) 2025 CERN.
3
+
4
+ Invenio App RDM is free software; you can redistribute it and/or modify it
5
+ under the terms of the MIT License; see LICENSE file for more details.
6
+ #}
7
+
8
+ {% extends admin_base_template %}
9
+
10
+ {% from "invenio_requests/macros/request_header.html" import inclusion_request_header %}
11
+
12
+ {% set title = invenio_request.title %}
13
+
14
+ {% block page_title %}{% endblock page_title %}
15
+
16
+ {% block admin_page_content %}
17
+ {% set title = _("Request ") %}
18
+ {{ super() }}
19
+ {%- block request_body %}
20
+ <div class="ui container request-detail-page">
21
+ {%- block request_header %}
22
+ {% set back_button_url = url_for("administration.requests") %}
23
+ {{
24
+ inclusion_request_header(
25
+ back_button_url=back_button_url,
26
+ back_button_text=_("Back to requests"),
27
+ request=invenio_request,
28
+ accepted=request_is_accepted
29
+ )
30
+ }}
31
+
32
+ <div class="twelve wide column mt-10">
33
+ <p><strong>{{ _("Reason:") }}</strong> {{ invenio_request["payload"]["reason_label"] }}</p>
34
+ {%- if invenio_request["payload"]["comment"] %}
35
+ <p><strong>{{ _("Justification:") }}</strong> {{ invenio_request["payload"]["comment"] }}</p>
36
+ {%- endif %}
37
+ </div>
38
+
39
+ <div class="ui divider"></div>
40
+ {%- endblock request_header %}
41
+
42
+ {%- block request_timeline %}
43
+ <div id="request-detail"
44
+ data-record='{{ invenio_request | tojson }}'
45
+ data-default-query-config='{{ dict(size=config["REQUESTS_TIMELINE_PAGE_SIZE"]) | tojson }}'
46
+ data-user-avatar='{{ user_avatar | tojson }}'
47
+ data-permissions='{{ permissions | tojson }}'
48
+ data-config='{{ dict(allowGroupReviewers=config["USERS_RESOURCES_GROUPS_ENABLED"], enableReviewers=config["REQUESTS_REVIEWERS_ENABLED"], maxReviewers=config["REQUESTS_REVIEWERS_MAX_NUMBER"]) | tojson }}'
49
+ >{# react app root #}
50
+ <div class="ui grid">
51
+ <div class="stretched row">
52
+ <div class="thirteen wide column">
53
+ <div class="ui">
54
+ <div class="ui fluid placeholder">
55
+ <div class="image header">
56
+ <div class="line"></div>
57
+ <div class="line"></div>
58
+ </div>
59
+ <div class="paragraph">
60
+ {% for i in range(6) %}
61
+ <div class="line"></div>
62
+ {% endfor %}
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ <div class="three wide column">
68
+ {% for i in range(6) %}
69
+ <div class="ui fluid placeholder">
70
+ <div class="image header">
71
+ <div class="line"></div>
72
+ <div class="line"></div>
73
+ </div>
74
+ </div>
75
+ <div class="ui divider"></div>
76
+ {% endfor %}
77
+ </div>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ {%- endblock request_timeline %}
82
+
83
+ </div>
84
+ {% endblock request_body %}
85
+ {% endblock admin_page_content %}
86
+
87
+ {% block javascript %}
88
+ {{ super() }}
89
+ {% include config.THEME_JAVASCRIPT_TEMPLATE %}
90
+ {{ webpack['invenio-requests-base.js'] }}
91
+ {% endblock %}
@@ -0,0 +1,14 @@
1
+ {#
2
+ Copyright (C) 2023 CERN.
3
+
4
+ Invenio App RDM is free software; you can redistribute it and/or modify it
5
+ under the terms of the MIT License; see LICENSE file for more details.
6
+ #}
7
+
8
+ {% extends "invenio_administration/search.html" %}
9
+
10
+
11
+ {% block javascript %}
12
+ {{ super() }}
13
+ {{ webpack['invenio-users-moderation-administration.js'] }}
14
+ {% endblock %}
@@ -0,0 +1,14 @@
1
+ {#
2
+ Copyright (C) 2023 CERN.
3
+
4
+ Invenio App RDM is free software; you can redistribute it and/or modify it
5
+ under the terms of the MIT License; see LICENSE file for more details.
6
+ #}
7
+
8
+ {% extends "invenio_administration/details.html" %}
9
+
10
+
11
+ {% block javascript %}
12
+ {{ super () }}
13
+ {{ webpack['invenio-users-moderation-administration.js'] }}
14
+ {% endblock %}
@@ -0,0 +1,14 @@
1
+ {#
2
+ Copyright (C) 2023 CERN.
3
+
4
+ Invenio App RDM is free software; you can redistribute it and/or modify it
5
+ under the terms of the MIT License; see LICENSE file for more details.
6
+ #}
7
+
8
+ {% extends "invenio_administration/search.html" %}
9
+
10
+
11
+ {% block javascript %}
12
+ {{ super() }}
13
+ {{ webpack['invenio-users-administration.js'] }}
14
+ {% endblock %}
@@ -1,10 +1,11 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # This file is part of Invenio.
4
- # Copyright (C) 2019 CERN.
5
3
  # Copyright (C) 2023 CERN.
6
4
  #
7
5
  # Invenio App RDM is free software; you can redistribute it and/or modify it
8
6
  # under the terms of the MIT License; see LICENSE file for more details.
7
+ """User moderation administration module."""
9
8
 
10
- """Record view aggregations Elasticsearch index templates."""
9
+ from .user_moderation import UserModerationListView, UserModerationRequestDetailView
10
+
11
+ __all__ = ("UserModerationListView", "UserModerationRequestDetailView")
@@ -0,0 +1,175 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2023-2025 CERN.
4
+ # Copyright (C) 2024 KTH Royal Institute of Technology.
5
+ #
6
+ # Invenio App RDM is free software; you can redistribute it and/or modify it
7
+ # under the terms of the MIT License; see LICENSE file for more details.
8
+ """Invenio administration view module for user moderation."""
9
+
10
+ from functools import partial
11
+
12
+ from flask import current_app
13
+ from invenio_administration.views.base import (
14
+ AdminResourceDetailView,
15
+ AdminResourceListView,
16
+ )
17
+ from invenio_i18n import lazy_gettext as _
18
+ from invenio_requests.customizations.user_moderation import UserModerationRequest
19
+ from invenio_search_ui.searchconfig import search_app_config
20
+
21
+
22
+ class UserModerationListView(AdminResourceListView):
23
+ """User moderation admin search view."""
24
+
25
+ api_endpoint = "/requests"
26
+ extension_name = "invenio-requests"
27
+ name = "moderation"
28
+ resource_config = "requests_resource"
29
+ request_headers = {"Accept": "application/vnd.inveniordm.v1+json"}
30
+ title = _("User Moderation")
31
+ menu_label = _("Users")
32
+ category = _("Moderation")
33
+ pid_path = "id"
34
+ icon = "users"
35
+ template = "invenio_app_rdm/administration/user_moderation.html"
36
+ order = 2
37
+
38
+ display_search = True
39
+ display_delete = False
40
+ display_create = False
41
+ display_edit = False
42
+
43
+ item_field_list = {
44
+ # custom display of the values - only declared to create columns
45
+ "expanded.topic.user": {
46
+ "text": _("User"),
47
+ "order": 2,
48
+ "width": 4,
49
+ },
50
+ # custom display of the values - only declared to create columns
51
+ "expanded.topic.user.profile.email": {
52
+ "text": _("Email"),
53
+ "order": 3,
54
+ "width": 2,
55
+ },
56
+ # custom display of the values - only declared to create columns
57
+ "domain": {
58
+ "text": _("Email domain"),
59
+ "order": 4,
60
+ "width": 2,
61
+ },
62
+ # custom display of the values - only declared to create columns
63
+ "activity": {
64
+ "text": _("Activity"),
65
+ "order": 5,
66
+ "width": 4,
67
+ },
68
+ "status": {
69
+ "text": _("Status"),
70
+ "order": 6,
71
+ "width": 2,
72
+ },
73
+ }
74
+
75
+ actions = {
76
+ "accept": {
77
+ "text": _("Approve"),
78
+ "payload_schema": None,
79
+ "order": 1,
80
+ },
81
+ "decline": {
82
+ "text": _("Block"),
83
+ "payload_schema": None,
84
+ "order": 2,
85
+ },
86
+ }
87
+ search_config_name = "REQUESTS_USER_MODERATION_SEARCH"
88
+ search_facets_config_name = "REQUESTS_USER_MODERATION_FACETS"
89
+ search_sort_config_name = "REQUESTS_USER_MODERATION_SORT_OPTIONS"
90
+
91
+ @property
92
+ def request_type(self):
93
+ """Request type property."""
94
+ request_type = self.resource.service.request_type_registry.lookup(
95
+ "user-moderation"
96
+ )
97
+ return request_type
98
+
99
+ @classmethod
100
+ def get_service_schema(cls):
101
+ """Get marshmallow schema of the assigned service."""
102
+ request_type = cls.resource.service.request_type_registry.lookup(
103
+ "user-moderation"
104
+ )
105
+ # handle dynamic schema class declaration for requests
106
+ schema_cls = request_type.marshmallow_schema()
107
+ schema = schema_cls()
108
+ return schema
109
+
110
+ @staticmethod
111
+ def disabled():
112
+ """Disable the view on demand."""
113
+ return False
114
+
115
+ def init_search_config(self):
116
+ """Build search view config."""
117
+ return partial(
118
+ search_app_config,
119
+ config_name=self.get_search_app_name(),
120
+ available_facets=current_app.config.get(self.search_facets_config_name),
121
+ sort_options=current_app.config[self.search_sort_config_name],
122
+ endpoint=self.get_api_endpoint(),
123
+ headers=self.get_search_request_headers(),
124
+ initial_filters=[["is_open", "true"]],
125
+ hidden_params=[
126
+ ["expand", "1"],
127
+ ["type", UserModerationRequest.type_id],
128
+ ],
129
+ pagination_options=(20, 50),
130
+ default_size=20,
131
+ )
132
+
133
+
134
+ class UserModerationRequestDetailView(AdminResourceDetailView):
135
+ """Admin community detail view."""
136
+
137
+ url = "/moderation/<pid_value>"
138
+ extension_name = "invenio-requests"
139
+ api_endpoint = "/requests"
140
+ name = "user-moderation-details"
141
+ resource_config = "requests_resource"
142
+ title = _("User moderation")
143
+
144
+ display_delete = False
145
+ display_edit = False
146
+
147
+ list_view_name = "communities"
148
+ pid_path = "id"
149
+ request_headers = {"Accept": "application/json"}
150
+ template = "invenio_app_rdm/administration/user_moderation_details.html"
151
+
152
+ @classmethod
153
+ def get_service_schema(cls):
154
+ """Get marshmallow schema of the assigned service."""
155
+ request_type = cls.resource.service.request_type_registry.lookup(
156
+ "user-moderation"
157
+ )
158
+ # handle dynamic schema class declaration for requests
159
+ schema_cls = request_type.marshmallow_schema()
160
+ schema = schema_cls()
161
+ return schema
162
+
163
+ item_field_list = {
164
+ "id": {
165
+ "text": _("ID"),
166
+ "order": 1,
167
+ },
168
+ "topic.user": {
169
+ "text": _("User"),
170
+ "order": 3,
171
+ }, # TODO we should resolve the user. But this is fetched from the API.
172
+ # TODO can we dereference somehow?
173
+ "created": {"text": _("Created"), "order": 2},
174
+ "is_open": {"text": _("Open"), "order": 4},
175
+ }
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2023-2024 CERN.
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
+ """Invenio administration module for user resources."""
9
+
10
+ from .users import UsersDetailView, UsersListView
11
+
12
+ __all__ = ("UsersDetailView", "UsersListView")
@@ -0,0 +1,130 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2023-2024 CERN.
4
+ # Copyright (C) 2024 KTH Royal Institute of Technology.
5
+ #
6
+ # Invenio App RDM is free software; you can redistribute it and/or modify it
7
+ # under the terms of the MIT License; see LICENSE file for more details.
8
+
9
+ """Invenio administration users view module."""
10
+
11
+ from functools import partial
12
+
13
+ from flask import current_app
14
+ from invenio_administration.views.base import (
15
+ AdminResourceDetailView,
16
+ AdminResourceListView,
17
+ )
18
+ from invenio_i18n import lazy_gettext as _
19
+ from invenio_search_ui.searchconfig import search_app_config
20
+
21
+ USERS_ITEM_LIST = {
22
+ "user": {"text": _("User"), "order": 2, "width": 3},
23
+ "username": {"text": _("Username"), "order": 3, "width": 2},
24
+ "email": {"text": _("Email"), "order": 4, "width": 2},
25
+ "status": {"text": _("Status"), "order": 5, "width": 1},
26
+ "created": {"text": _("Created"), "order": 6, "width": 1},
27
+ "updated": {"text": _("Updated"), "order": 6, "width": 1},
28
+ "links": {"text": "", "order": 7, "width": 1},
29
+ }
30
+
31
+ USERS_ITEM_DETAIL = {
32
+ "id": {"text": _("ID"), "order": 1, "width": 1},
33
+ "username": {"text": _("Username"), "order": 3, "width": 2},
34
+ "email": {"text": _("Email"), "order": 4, "width": 1},
35
+ "domain": {"text": _("Domain "), "order": 5, "width": 1},
36
+ "status": {"text": _("Status"), "order": 6, "width": 1},
37
+ "visibility": {"text": _("Visibility"), "order": 7, "width": 1},
38
+ "active": {"text": _("Active"), "order": 8, "width": 1},
39
+ "confirmed_at": {"text": _("Confirmed at"), "order": 9, "width": 1},
40
+ "verified_at": {"text": _("Verified at"), "order": 10, "width": 1},
41
+ "blocked_at": {"text": _("Blocked at"), "order": 11, "width": 1},
42
+ "created": {"text": _("Created"), "order": 12, "width": 2},
43
+ "updated": {"text": _("Updated"), "order": 13, "width": 2},
44
+ }
45
+
46
+
47
+ # List of the columns displayed on the user list and user details
48
+
49
+
50
+ class UsersListView(AdminResourceListView):
51
+ """Configuration for users sets list view."""
52
+
53
+ api_endpoint = "/users/all"
54
+ extension_name = "invenio-users-resources"
55
+ name = "users"
56
+ resource_config = "users_resource"
57
+ title = _("User management")
58
+ menu_label = _("Users")
59
+ category = _("User management")
60
+ pid_path = "id"
61
+ icon = "users"
62
+
63
+ display_search = True
64
+ display_delete = False
65
+ display_edit = False
66
+ display_create = False
67
+
68
+ item_field_list = USERS_ITEM_LIST
69
+
70
+ search_config_name = "USERS_RESOURCES_SEARCH"
71
+ search_sort_config_name = "USERS_RESOURCES_SORT_OPTIONS"
72
+ search_facets_config_name = "USERS_RESOURCES_SEARCH_FACETS"
73
+ template = "invenio_app_rdm/administration/users_search.html"
74
+
75
+ # These actions are not connected on the frontend -
76
+ # TODO: missing permission based links in resource
77
+ actions = {
78
+ "approve": {
79
+ "text": _("Approve"),
80
+ "payload_schema": None,
81
+ "order": 1,
82
+ },
83
+ "restore": {
84
+ "text": _("Restore"),
85
+ "payload_schema": None,
86
+ "order": 2,
87
+ },
88
+ "block": {
89
+ "text": _("Block"),
90
+ "payload_schema": None,
91
+ "order": 2,
92
+ },
93
+ "Deactivate": {
94
+ "text": _("Suspend"),
95
+ "payload_schema": None,
96
+ "order": 2,
97
+ },
98
+ }
99
+
100
+ def init_search_config(self):
101
+ """Build search view config."""
102
+ return partial(
103
+ search_app_config,
104
+ config_name=self.get_search_app_name(),
105
+ available_facets=current_app.config.get(self.search_facets_config_name),
106
+ sort_options=current_app.config[self.search_sort_config_name],
107
+ endpoint=self.get_api_endpoint(),
108
+ headers=self.get_search_request_headers(),
109
+ initial_filters=[["is_active", 1]],
110
+ hidden_params=[],
111
+ pagination_options=(20, 50),
112
+ default_size=20,
113
+ )
114
+
115
+
116
+ class UsersDetailView(AdminResourceDetailView):
117
+ """Configuration for users sets detail view."""
118
+
119
+ url = "/users/<pid_value>"
120
+ api_endpoint = "/users/"
121
+ search_request_headers = {"Accept": "application/json"}
122
+ extension_name = "invenio-users-resources"
123
+ name = "User details"
124
+ resource_config = "users_resource"
125
+ title = _("User details")
126
+ display_delete = False
127
+ display_edit = False
128
+
129
+ pid_path = "username"
130
+ item_field_list = USERS_ITEM_DETAIL
@@ -1,10 +1,11 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # This file is part of Invenio.
4
- # Copyright (C) 2019 CERN.
5
3
  # Copyright (C) 2023 CERN.
6
4
  #
7
5
  # Invenio App RDM is free software; you can redistribute it and/or modify it
8
6
  # under the terms of the MIT License; see LICENSE file for more details.
7
+ """Administration views module."""
9
8
 
10
- """File download event Elasticsearch index templates."""
9
+ from .ui import create_ui_blueprint
10
+
11
+ __all__ = ("create_ui_blueprint",)
@@ -0,0 +1,21 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2023-2024 CERN.
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
+ """Administration ui views module."""
8
+
9
+ from flask import Blueprint
10
+
11
+
12
+ def create_ui_blueprint(app):
13
+ """Register blueprint routes on app."""
14
+ blueprint = Blueprint(
15
+ "invenio_app_rdm_administration",
16
+ __name__,
17
+ template_folder="../templates",
18
+ static_folder="../static",
19
+ )
20
+
21
+ return blueprint
invenio_app_rdm/cli.py CHANGED
@@ -1,17 +1,18 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2022 CERN.
3
+ # Copyright (C) 2022-2024 CERN.
4
4
  #
5
5
  # Invenio-App-RDM is free software; you can redistribute it and/or modify
6
6
  # it under the terms of the MIT License; see LICENSE file for more details.
7
7
 
8
8
  """Command-line tools for invenio app rdm."""
9
+
9
10
  import click
10
11
  from flask.cli import with_appcontext
11
12
  from invenio_access.permissions import system_identity
12
13
  from invenio_records_resources.proxies import current_service_registry
13
14
 
14
- from invenio_app_rdm.fixtures import FixturesEngine, Pages
15
+ from .fixtures import FixturesEngine, Pages
15
16
 
16
17
 
17
18
  @click.group()
@@ -56,17 +57,39 @@ def create_fixtures():
56
57
 
57
58
 
58
59
  @rdm.command("rebuild-all-indices")
60
+ @click.option("-o", "--order", default="")
59
61
  @with_appcontext
60
- def rebuild_all_indices():
61
- """Schedule reindexing of all items for search."""
62
- click.secho("Scheduling bulk indexing for all items.", fg="yellow")
63
- for name, service in current_service_registry._services.items():
62
+ def rebuild_all_indices(order):
63
+ """Schedule reindexing of (all) items for search with optional selecting and ordering."""
64
+ services = current_service_registry._services
65
+ service_names = services.keys()
66
+ services_to_reindex = order.split(",") if order else service_names
67
+
68
+ for service_to_reindex in services_to_reindex:
69
+ if service_to_reindex not in service_names:
70
+ click.secho(
71
+ f"Service: '{service_to_reindex}' is not part of available services that can be reindexed", # noqa
72
+ fg="red",
73
+ )
74
+ click.secho(
75
+ f"You can chose out of these services: {' , '.join(service_names)}",
76
+ fg="red",
77
+ )
78
+ return
79
+
80
+ click.secho("Scheduling bulk indexing.", fg="yellow")
81
+ for service_to_reindex in services_to_reindex:
82
+ service = services[service_to_reindex]
64
83
  if hasattr(service, "rebuild_index"):
65
- click.echo(f"{name}... ", nl=False)
66
- service.rebuild_index(system_identity)
67
- click.secho("Done.", fg="green")
68
-
69
- click.secho(
70
- "Please start a celery worker to process the scheduled bulk indexing!",
71
- fg="green",
72
- )
84
+ click.echo(f"Reindexing {service_to_reindex}... ", nl=False)
85
+ try:
86
+ service.rebuild_index(system_identity)
87
+ except NotImplementedError:
88
+ click.secho(
89
+ f"{service_to_reindex} does not use the search cluster, skipping.",
90
+ fg="green",
91
+ )
92
+ continue
93
+ else:
94
+ # success
95
+ click.secho("Done.", fg="green")
@@ -22,5 +22,6 @@ def search_app_context():
22
22
  available_facets=current_app.config["RDM_FACETS"],
23
23
  sort_options=current_app.config["RDM_SORT_OPTIONS"],
24
24
  headers={"Accept": "application/vnd.inveniordm.v1+json"},
25
+ pagination_options=(10, 20),
25
26
  ),
26
27
  }