invenio-app-rdm 13.0.0b4.dev1__py2.py3-none-any.whl → 14.0.0b1.dev8__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. invenio_app_rdm/__init__.py +1 -1
  2. invenio_app_rdm/administration/moderation/__init__.py +11 -0
  3. invenio_app_rdm/administration/moderation/requests.py +175 -0
  4. invenio_app_rdm/administration/records/records.py +9 -7
  5. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests.html +14 -0
  6. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests_details.html +91 -0
  7. invenio_app_rdm/administration/user_moderation/user_moderation.py +4 -4
  8. invenio_app_rdm/administration/users/users.py +0 -5
  9. invenio_app_rdm/communities_ui/views/communities.py +9 -5
  10. invenio_app_rdm/config.py +73 -4
  11. invenio_app_rdm/ext.py +2 -2
  12. invenio_app_rdm/fixtures/pages.py +5 -2
  13. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html +11 -0
  14. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html +2 -5
  15. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/citation.html +2 -2
  16. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/details.html +2 -2
  17. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/communities.html +8 -7
  18. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/external_resources.html +5 -6
  19. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/licenses.html +9 -13
  20. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/manage_menu.html +8 -5
  21. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/stats.html +2 -4
  22. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/detail.html +1 -1
  23. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/doi.html +7 -5
  24. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/files.html +21 -4
  25. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/tombstone.html +6 -1
  26. invenio_app_rdm/records_ui/utils.py +93 -1
  27. invenio_app_rdm/records_ui/views/decorators.py +24 -14
  28. invenio_app_rdm/records_ui/views/deposits.py +100 -27
  29. invenio_app_rdm/records_ui/views/filters.py +11 -4
  30. invenio_app_rdm/records_ui/views/records.py +23 -13
  31. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/file-modification/index.html +88 -0
  32. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/guest-access-request/index.html +5 -5
  33. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/record-deletion/index.html +95 -0
  34. invenio_app_rdm/requests_ui/views/requests.py +54 -87
  35. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/ViewRecentChanges.js +8 -8
  36. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/ImpersonateUserForm.js +12 -17
  37. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/RevisionsDiffViewer.js +14 -16
  38. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/SetQuotaAction.js +1 -1
  39. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/api/routes.js +1 -2
  40. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchResultItem.js +81 -0
  41. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchbarLayout.js +48 -0
  42. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/index.js +22 -0
  43. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSearchAppLayout.js +3 -4
  44. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CopyButton.js +38 -19
  45. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/FileModificationUntil.js +45 -0
  46. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionModal.js +354 -0
  47. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionRadioGroup.js +44 -0
  48. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion.js +81 -0
  49. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js +55 -5
  50. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/index.js +4 -1
  51. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/CommunitiesManagement.js +2 -2
  52. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ExportDropdown.js +7 -2
  53. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageButton.js +52 -19
  54. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCitationField.js +15 -14
  55. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesListModal.js +4 -4
  56. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitySubmission/RecordCommunitySubmissionModal.js +1 -1
  57. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js +17 -3
  58. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordVersionsList.js +16 -17
  59. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RemoveFromCommunity/RemoveFromCommunityAction.js +5 -5
  60. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/index.js +42 -40
  61. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/theme.js +9 -5
  62. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineEdit.js +5 -5
  63. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineRead.js +2 -2
  64. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/search/components.js +14 -19
  65. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/theme.js +9 -0
  66. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/file_uploader/uppy.less +37 -0
  67. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/landing_page/licenses.less +5 -3
  68. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides +6 -1
  69. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides +10 -1
  70. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/search.overrides +7 -0
  71. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/search.variables +0 -0
  72. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/i18next.js +1 -1
  73. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/_generatedTranslations.js +66 -0
  74. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ar/messages.po +804 -137
  75. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ar/translations.json +277 -249
  76. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/messages.po +689 -70
  77. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/translations.json +102 -82
  78. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/messages.po +699 -80
  79. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/translations.json +112 -92
  80. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/messages.po +821 -138
  81. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/translations.json +290 -262
  82. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/messages.po +691 -66
  83. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/translations.json +91 -71
  84. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/messages.po +818 -138
  85. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/translations.json +260 -240
  86. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/messages.po +698 -78
  87. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/translations.json +108 -88
  88. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/en/messages.po +1000 -5
  89. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/en/translations.json +81 -28
  90. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/messages.po +810 -137
  91. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/translations.json +253 -233
  92. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/messages.po +746 -133
  93. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/translations.json +130 -110
  94. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/messages.po +688 -69
  95. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/translations.json +103 -79
  96. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/messages.po +809 -126
  97. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/translations.json +277 -257
  98. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/messages.po +695 -70
  99. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/translations.json +101 -79
  100. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/messages.po +801 -135
  101. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/translations.json +254 -234
  102. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/index.js +16 -65
  103. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/messages.po +712 -86
  104. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/translations.json +116 -96
  105. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/messages.po +683 -70
  106. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/translations.json +96 -78
  107. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/messages.po +689 -70
  108. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/translations.json +109 -85
  109. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ko/messages.po +889 -0
  110. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ko/translations.json +277 -0
  111. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/lt/messages.po +702 -71
  112. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/lt/translations.json +113 -85
  113. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/messages.po +689 -70
  114. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/translations.json +102 -82
  115. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/messages.po +704 -70
  116. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/translations.json +119 -91
  117. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/messages.po +694 -69
  118. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/translations.json +93 -73
  119. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/messages.po +717 -85
  120. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/translations.json +155 -133
  121. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/messages.po +806 -124
  122. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/translations.json +288 -260
  123. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/messages.po +713 -82
  124. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/translations.json +119 -91
  125. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/messages.po +807 -141
  126. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/translations.json +260 -240
  127. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/messages.po +799 -128
  128. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/translations.json +259 -239
  129. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/messages.po +756 -131
  130. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/translations.json +124 -96
  131. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/messages.po +736 -123
  132. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/translations.json +130 -108
  133. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/messages.po +683 -70
  134. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/translations.json +100 -78
  135. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/package.json +3 -37
  136. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/translations.pot +243 -94
  137. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.de.html +2 -2
  138. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.en.html +4 -4
  139. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.sv.html +4 -4
  140. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/intro_section.html +7 -6
  141. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/macros/records_list.html +2 -1
  142. invenio_app_rdm/theme/templates/semantic-ui/invenio_communities/default_static_page.html +26 -0
  143. invenio_app_rdm/theme/webpack.py +3 -2
  144. invenio_app_rdm/translations/ar/LC_MESSAGES/messages.mo +0 -0
  145. invenio_app_rdm/translations/ar/LC_MESSAGES/messages.po +972 -376
  146. invenio_app_rdm/translations/bg/LC_MESSAGES/messages.mo +0 -0
  147. invenio_app_rdm/translations/bg/LC_MESSAGES/messages.po +907 -278
  148. invenio_app_rdm/translations/ca/LC_MESSAGES/messages.mo +0 -0
  149. invenio_app_rdm/translations/ca/LC_MESSAGES/messages.po +912 -283
  150. invenio_app_rdm/translations/cs/LC_MESSAGES/messages.mo +0 -0
  151. invenio_app_rdm/translations/cs/LC_MESSAGES/messages.po +1069 -405
  152. invenio_app_rdm/translations/da/LC_MESSAGES/messages.mo +0 -0
  153. invenio_app_rdm/translations/da/LC_MESSAGES/messages.po +908 -273
  154. invenio_app_rdm/translations/de/LC_MESSAGES/messages.mo +0 -0
  155. invenio_app_rdm/translations/de/LC_MESSAGES/messages.po +1017 -406
  156. invenio_app_rdm/translations/el/LC_MESSAGES/messages.mo +0 -0
  157. invenio_app_rdm/translations/el/LC_MESSAGES/messages.po +915 -286
  158. invenio_app_rdm/translations/es/LC_MESSAGES/messages.mo +0 -0
  159. invenio_app_rdm/translations/es/LC_MESSAGES/messages.po +963 -371
  160. invenio_app_rdm/translations/et/LC_MESSAGES/messages.mo +0 -0
  161. invenio_app_rdm/translations/et/LC_MESSAGES/messages.po +938 -362
  162. invenio_app_rdm/translations/fa/LC_MESSAGES/messages.mo +0 -0
  163. invenio_app_rdm/translations/fa/LC_MESSAGES/messages.po +906 -277
  164. invenio_app_rdm/translations/fr/LC_MESSAGES/messages.mo +0 -0
  165. invenio_app_rdm/translations/fr/LC_MESSAGES/messages.po +1032 -375
  166. invenio_app_rdm/translations/hr/LC_MESSAGES/messages.mo +0 -0
  167. invenio_app_rdm/translations/hr/LC_MESSAGES/messages.po +907 -278
  168. invenio_app_rdm/translations/hu/LC_MESSAGES/messages.mo +0 -0
  169. invenio_app_rdm/translations/hu/LC_MESSAGES/messages.po +985 -369
  170. invenio_app_rdm/translations/it/LC_MESSAGES/messages.mo +0 -0
  171. invenio_app_rdm/translations/it/LC_MESSAGES/messages.po +928 -298
  172. invenio_app_rdm/translations/ja/LC_MESSAGES/messages.mo +0 -0
  173. invenio_app_rdm/translations/ja/LC_MESSAGES/messages.po +907 -278
  174. invenio_app_rdm/translations/ka/LC_MESSAGES/messages.mo +0 -0
  175. invenio_app_rdm/translations/ka/LC_MESSAGES/messages.po +909 -280
  176. invenio_app_rdm/translations/ko/LC_MESSAGES/messages.mo +0 -0
  177. invenio_app_rdm/translations/ko/LC_MESSAGES/messages.po +1361 -0
  178. invenio_app_rdm/translations/lt/LC_MESSAGES/messages.mo +0 -0
  179. invenio_app_rdm/translations/lt/LC_MESSAGES/messages.po +910 -281
  180. invenio_app_rdm/translations/messages.pot +486 -303
  181. invenio_app_rdm/translations/no/LC_MESSAGES/messages.mo +0 -0
  182. invenio_app_rdm/translations/no/LC_MESSAGES/messages.po +907 -278
  183. invenio_app_rdm/translations/pl/LC_MESSAGES/messages.mo +0 -0
  184. invenio_app_rdm/translations/pl/LC_MESSAGES/messages.po +907 -278
  185. invenio_app_rdm/translations/pt/LC_MESSAGES/messages.mo +0 -0
  186. invenio_app_rdm/translations/pt/LC_MESSAGES/messages.po +906 -277
  187. invenio_app_rdm/translations/ro/LC_MESSAGES/messages.mo +0 -0
  188. invenio_app_rdm/translations/ro/LC_MESSAGES/messages.po +1042 -384
  189. invenio_app_rdm/translations/ru/LC_MESSAGES/messages.mo +0 -0
  190. invenio_app_rdm/translations/ru/LC_MESSAGES/messages.po +1022 -370
  191. invenio_app_rdm/translations/sk/LC_MESSAGES/messages.mo +0 -0
  192. invenio_app_rdm/translations/sk/LC_MESSAGES/messages.po +916 -287
  193. invenio_app_rdm/translations/sv/LC_MESSAGES/messages.mo +0 -0
  194. invenio_app_rdm/translations/sv/LC_MESSAGES/messages.po +989 -380
  195. invenio_app_rdm/translations/tr/LC_MESSAGES/messages.mo +0 -0
  196. invenio_app_rdm/translations/tr/LC_MESSAGES/messages.po +992 -341
  197. invenio_app_rdm/translations/uk/LC_MESSAGES/messages.mo +0 -0
  198. invenio_app_rdm/translations/uk/LC_MESSAGES/messages.po +935 -356
  199. invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
  200. invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.po +939 -347
  201. invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.mo +0 -0
  202. invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.po +907 -278
  203. invenio_app_rdm/upgrade_scripts/migrate_12_0_to_13_0.py +190 -62
  204. {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/METADATA +118 -7
  205. {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/RECORD +209 -225
  206. {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/entry_points.txt +2 -0
  207. {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/top_level.txt +0 -1
  208. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/i18next-scanner.config.js +0 -64
  209. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/package-lock.json +0 -1512
  210. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/scripts/compileCatalog.js +0 -40
  211. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/scripts/initCatalog.js +0 -20
  212. tests/__init__.py +0 -8
  213. tests/api/__init__.py +0 -8
  214. tests/api/conftest.py +0 -24
  215. tests/api/test_protect_files_rest.py +0 -73
  216. tests/api/test_record_api.py +0 -175
  217. tests/api/test_stats_api.py +0 -26
  218. tests/conftest.py +0 -390
  219. tests/fixtures/__init__.py +0 -8
  220. tests/fixtures/app_data/oai_sets.yaml +0 -3
  221. tests/fixtures/app_data/pages/about.html +0 -1
  222. tests/fixtures/app_data/pages.yaml +0 -4
  223. tests/fixtures/conftest.py +0 -27
  224. tests/fixtures/test_cli.py +0 -25
  225. tests/fixtures/test_fixtures.py +0 -46
  226. tests/mock_module/__init__.py +0 -7
  227. tests/mock_module/templates/mock_mail.html +0 -27
  228. tests/mock_module/views.py +0 -32
  229. tests/redirector/__init__.py +0 -8
  230. tests/redirector/conftest.py +0 -54
  231. tests/redirector/test_redirector.py +0 -28
  232. tests/test_tasks.py +0 -209
  233. tests/test_utils.py +0 -67
  234. tests/test_version.py +0 -16
  235. tests/test_views.py +0 -43
  236. tests/ui/__init__.py +0 -8
  237. tests/ui/conftest.py +0 -115
  238. tests/ui/test_deposits.py +0 -115
  239. tests/ui/test_export_formats.py +0 -37
  240. tests/ui/test_file_download.py +0 -73
  241. tests/ui/test_filters.py +0 -10
  242. tests/ui/test_robotstxt.py +0 -35
  243. tests/ui/test_signposting_ui.py +0 -95
  244. tests/ui/test_sitemaps.py +0 -85
  245. tests/ui/test_stats_ui.py +0 -92
  246. {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/WHEEL +0 -0
  247. {invenio_app_rdm-13.0.0b4.dev1.dist-info → invenio_app_rdm-14.0.0b1.dev8.dist-info}/licenses/LICENSE +0 -0
@@ -1,15 +1,16 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2023-2024 CERN.
4
- # Copyright (C) 2024 Graz University of Technology.
3
+ # Copyright (C) 2023-2025 CERN.
4
+ # Copyright (C) 2024-2025 Graz University of Technology.
5
+ # Copyright (C) 2025 Northwestern University.
5
6
  #
6
7
  # Invenio-App-RDM is free software; you can redistribute it and/or modify
7
8
  # it under the terms of the MIT License; see LICENSE file for more details.
8
9
 
9
- """Record migration script from InvenioRDM 11.0 to 12.0.
10
+ """Record migration script from InvenioRDM 12.0 to 13.0.
10
11
 
11
12
  Disclaimer: This script is intended to be executed *only once*, namely when
12
- upgrading from InvenioRDM 11.0 to 12.0!
13
+ upgrading from InvenioRDM 12.0 to 13.0!
13
14
  If this script is executed at any other time, probably the best case scenario
14
15
  is that nothing happens!
15
16
 
@@ -21,85 +22,212 @@ This script has been tested with following data:
21
22
  """
22
23
 
23
24
  import sys
25
+ import traceback
24
26
 
25
27
  from click import secho
28
+ from invenio_access.permissions import system_identity
26
29
  from invenio_db import db
27
- from invenio_rdm_records.records.api import RDMDraft, RDMRecord
28
-
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
+ )
29
102
 
30
- def execute_upgrade():
31
- """Execute the upgrade from InvenioRDM 12.0 to 13.0.0.
32
103
 
33
- Please read the disclaimer on this module before thinking about executing
34
- this function!
35
- THIS MODULE IS WORK IN PROGRESS, UNTIL official v13 release
36
- """
104
+ def run_upgrade_for_thesis():
105
+ """Run upgrade for thesis."""
37
106
 
38
- def update_record(record):
39
- # skipping deleted records because can't be committed
40
- if record.is_deleted:
41
- return
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}
42
112
 
43
- try:
44
- secho(f"Updating record : {record.pid.pid_value}", fg="yellow")
113
+ record_or_draft.commit()
45
114
 
46
- # TODO: Add any record datamodel migration code here
47
- record.commit()
115
+ # Common query filter
116
+ has_thesis = dsl.Q("exists", field="custom_fields.thesis:university")
48
117
 
49
- secho(f"> Updated parent: {record.parent.pid.pid_value}", fg="green")
50
- secho(f"> Updated record: {record.pid.pid_value}\n", fg="green")
51
- return None
52
- except Exception as e:
53
- secho(f"> Error {repr(e)}", fg="red")
54
- error = f"Record {record.pid.pid_value} failed to update"
55
- return error
118
+ secho("Thesis upgrade has started.", fg="green")
56
119
 
57
- secho("Starting data migration...", fg="green")
120
+ run_upgrade(has_thesis, migrate_thesis_university)
58
121
 
59
- # Migrating records and drafts
60
- errors = []
61
- for record_metadata in RDMRecord.model_cls.query.all():
62
- record = RDMRecord(record_metadata.data, model=record_metadata)
63
- error = update_record(record)
122
+ secho("Thesis upgrade has finished.", fg="green")
64
123
 
65
- if error:
66
- errors.append(error)
67
124
 
68
- for draft_metadata in RDMDraft.model_cls.query.all():
69
- draft = RDMDraft(draft_metadata.data, model=draft_metadata)
70
- error = update_record(draft)
71
- if error:
72
- errors.append(error)
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")
73
128
 
74
- success = not errors
129
+ error = False
130
+ # Batch intake to limit memory usage
131
+ stmt = select(Affiliation.model_cls).execution_options(yield_per=250)
75
132
 
76
- if success:
77
- secho("Commiting to DB", nl=True)
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:
78
153
  db.session.commit()
79
- secho(
80
- "Data migration completed, please rebuild the search indices now.",
81
- fg="green",
82
- )
154
+ secho("Affiliations upgrade succeeded.", fg="green")
83
155
 
84
- else:
85
- secho("Rollback", nl=True)
86
- db.session.rollback()
87
- secho(
88
- "Upgrade aborted due to the following errors:",
89
- fg="red",
90
- err=True,
91
- )
92
156
 
93
- for error in errors:
94
- secho(error, fg="red", err=True)
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")
95
160
 
96
- msg = (
97
- "The changes have been rolled back. "
98
- "Please fix the above listed errors and try the upgrade again",
99
- )
100
- secho(msg, fg="yellow", err=True)
161
+ error = False
162
+ # Batch intake to limit memory usage
163
+ stmt = select(Name.model_cls).execution_options(yield_per=250)
101
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")
102
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()
103
231
 
104
232
 
105
233
  # if the script is executed on its own, perform the upgrade
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invenio-app-rdm
3
- Version: 13.0.0b4.dev1
3
+ Version: 14.0.0b1.dev8
4
4
  Summary: Invenio Research Data Management.
5
5
  Home-page: https://github.com/inveniosoftware/invenio-app-rdm
6
6
  Author: CERN
@@ -40,13 +40,13 @@ Requires-Dist: invenio-search-ui<5.0.0,>=4.0.0
40
40
  Requires-Dist: invenio-files-rest<4.0.0,>=3.0.0
41
41
  Requires-Dist: invenio-previewer<4.0.0,>=3.0.0
42
42
  Requires-Dist: invenio-records-files<2.0.0,>=1.2.1
43
- Requires-Dist: invenio-collections<1.0.0,>=0.4.0
44
- Requires-Dist: invenio-communities<20.0.0,>=19.0.0
45
- Requires-Dist: invenio-rdm-records<20.0.0,>=19.0.0
43
+ Requires-Dist: invenio-collections<3.0.0,>=1.0.0
44
+ Requires-Dist: invenio-communities<22.0.0,>=21.0.0
45
+ Requires-Dist: invenio-rdm-records<22.0.0,>=21.0.0
46
46
  Requires-Dist: CairoSVG<3.0.0,>=2.5.2
47
47
  Requires-Dist: invenio-banners<6.0.0,>=5.0.0
48
48
  Requires-Dist: invenio-pages<8.0.0,>=7.0.0
49
- Requires-Dist: invenio-audit-logs<1.0.0,>=0.1.0
49
+ Requires-Dist: invenio-audit-logs<1.0.0,>=0.3.0
50
50
  Requires-Dist: invenio-sitemap<2.0.0,>=0.1.0
51
51
  Provides-Extra: tests
52
52
  Requires-Dist: pytest-black-ng>=0.4.0; extra == "tests"
@@ -60,7 +60,7 @@ Requires-Dist: invenio-search[opensearch1]<4.0.0,>=3.0.0; extra == "opensearch1"
60
60
  Provides-Extra: opensearch2
61
61
  Requires-Dist: invenio-search[opensearch2]<4.0.0,>=3.0.0; extra == "opensearch2"
62
62
  Provides-Extra: s3
63
- Requires-Dist: invenio-s3<3.0.0,>=2.0.0; extra == "s3"
63
+ Requires-Dist: invenio-s3<4.0.0,>=3.0.0; extra == "s3"
64
64
  Dynamic: license-file
65
65
 
66
66
  ..
@@ -90,7 +90,7 @@ https://inveniordm.docs.cern.ch
90
90
 
91
91
 
92
92
  ..
93
- Copyright (C) 2019-2024 CERN.
93
+ Copyright (C) 2019-2025 CERN.
94
94
  Copyright (C) 2019-2024 Northwestern University.
95
95
  Copyright (C) 2021-2024 TU Wien.
96
96
  Copyright (C) 2021-2025 Graz University of Technology.
@@ -101,6 +101,117 @@ https://inveniordm.docs.cern.ch
101
101
  Changes
102
102
  =======
103
103
 
104
+ Version v14.0.0b1.dev8 (released 2025-11-21)
105
+
106
+ - UI: add info message about remaining days to publish changes
107
+ - request: add file mod request template
108
+ - fix: set files_locked to .locked rather than permission
109
+ - feat: pass file modification eval to deposit form
110
+
111
+ Version v14.0.0b1.dev7 (released 2025-11-14)
112
+
113
+ - fix(views): pass API record to evaluate record deletion
114
+
115
+ Version v14.0.0b1.dev6 (released 2025-11-13)
116
+
117
+ - tombstone: add deletion policy
118
+ - fix(deletion-request): never disable the existing deletion request link
119
+ - fix(deletion-request): fetch existing request only for valid users
120
+ - fix(deletion-request): removal reasons in landing page data attribute
121
+ - vocab: add deletion_request prefix to removal_reasons vocabulary
122
+ - ui: added related identifiers to vocabulary
123
+ - views: remove unused data attributes from recordManagementMobile
124
+ - requests: ui: only show justification if present
125
+
126
+ Version v14.0.0b1.dev5 (released 2025-10-14)
127
+
128
+ - fix(community-submission): add missing var in side bar template
129
+ - fix(guest-access-request): handle broken expiration date payload value
130
+ * this extra check prevents the request timeline UI from breaking when a
131
+ request payload has a broken value, to make recovery easier
132
+ * also, make eslint happy with a camel case variable name
133
+ - fix(guest-access-request): handle more possible expiration date values
134
+ * when the expiration date gets submitted, the value of the empty input
135
+ field is typically the empty string rather than `null`
136
+ * on the reading side, handle the case that the expiration date is set
137
+ as a string value (since request payloads are generally strings)
138
+
139
+ Version v14.0.0b1.dev4 (released 2025-10-03)
140
+
141
+ - installation: relax invenio-collections dependency requirements
142
+ * see https://github.com/inveniosoftware/invenio-app-rdm/issues/3194
143
+
144
+ Version v14.0.0b1.dev3 (released 2025-10-01)
145
+
146
+ - fix(deposit-ui): read expanded published record
147
+ * The UI serializer requires the expanded record service result.
148
+ - feat(config): add last activity sort option
149
+
150
+ Version v14.0.0b1.dev2 (released 2025-09-29)
151
+
152
+ - fix(deposit-ui): use API record for evaluating deletion policy
153
+
154
+ Version v14.0.0b1.dev1 (released 2025-09-24)
155
+
156
+ - Fixed CHANGES.rst formatting
157
+
158
+ Version v14.0.0b1.dev0 (released 2025-09-24)
159
+
160
+ - feat(administration): add Requests view
161
+ - feat: add record deletion requests
162
+ * Allows to configure record deletion policies for immediate deletion
163
+ or going through a request flow on the record landing page.
164
+
165
+ Version v14.0.0b0.dev4 (released 2025-09-01)
166
+
167
+ - views(deposit): pass to the form config the published record if we edit one
168
+ * The published record is used to compare published DOI but it can be
169
+ used also to compare with the published state of an editing draft.
170
+ - help: correct search instructions for missing fields
171
+
172
+ Version v14.0.0b0.dev3 (released 2025-08-26)
173
+
174
+ - fix(community-requests): request permissions were missing from UI
175
+ * The community requests page was not showing the request reviewers section
176
+ because the permissions were not passed to the template.
177
+
178
+ Version v14.0.0b0.dev2 (released 2025-08-08)
179
+
180
+ - fix(views): use correct community value
181
+ * After the change in 33f1b0d2, values passed to the UI or used for
182
+ accessing UI-related attributes (e.g. the "theme"), must come from
183
+ the community UI-serialized value instead of the service result item.
184
+ - fix(pages): add community base template as a valid option
185
+ - feat(fixtures): allow specifying `template_name` in page fixtures
186
+ - ui: refactor record injecting in JS components
187
+ - inject only record links in citations cmps
188
+ - remove dependency between citations and communities cmps which
189
+ they were sharing the same record injection
190
+ - fix(deposits): pass missing community_ui to community theme templates
191
+ * also introduce more explicit distinctions between community and
192
+ community_ui variables
193
+ - UI: set order of entries and rename category to deposits
194
+ - UI: make external resources section consistent with details
195
+ - UI: make rights section consistent with details
196
+
197
+ Version v14.0.0b0.dev1 (released 2025-08-01)
198
+
199
+ - setup: bump invenio-communities and invenio-rdm-records
200
+ - theme: add search overrides for reviewers search results
201
+ - requests: add request action_accept permissions to UI
202
+ - theme: update package-lock.json for compiling catalog for frontend tests
203
+
204
+ Version v13.0.0b4.dev2 (released 2025-06-13)
205
+
206
+ - checks: integrate into community requests flow
207
+ - deposit-ui: pass draft errors to form
208
+ - landing page: text-break references
209
+ - ui: fixed caret trigger in stats
210
+
211
+ - deposit: report actual file quota rather than configured values
212
+ * previously, the deposit form would show values from the configuration
213
+ that might be different from the actually effective quota
214
+
104
215
 
105
216
  Version v13.0.0b4.dev1 (released 2025-06-10)
106
217