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
tests/ui/test_filters.py DELETED
@@ -1,10 +0,0 @@
1
- from invenio_app_rdm.records_ui.views.filters import get_scheme_label
2
-
3
-
4
- def test_get_scheme_label(app):
5
- # just test a couple of schemes
6
- assert "PMID" == get_scheme_label("pmid")
7
-
8
- assert "arXiv" == get_scheme_label("arxiv")
9
-
10
- assert "Bibcode" == get_scheme_label("ads")
@@ -1,35 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2022 CERN.
4
- # Copyright (C) 2025 Northwestern University.
5
- #
6
- # Invenio-RDM is free software; you can redistribute it and/or modify
7
- # it under the terms of the MIT License; see LICENSE file for more details.
8
-
9
- import pytest
10
- from invenio_cache import current_cache
11
- from invenio_sitemap import SitemapIndexCache
12
-
13
-
14
- @pytest.fixture
15
- def cache_for_sitemap_index(app):
16
- """Primed cache with a sitemap index entry."""
17
- try:
18
- cache = SitemapIndexCache(current_cache)
19
- cache.delete_included_and_higher(0)
20
- cache.set(0, "unimportant data")
21
- yield cache
22
- finally:
23
- cache.delete_included_and_higher(0)
24
-
25
-
26
- def test_robotstxt(app, client, cache_for_sitemap_index):
27
- """Check if robots.txt returns a string response."""
28
- response = client.get("/robots.txt")
29
-
30
- assert 200 == response.status_code
31
- assert type(response.text) == str
32
- assert "Disallow: /search" in response.text
33
- assert "Disallow: /api" in response.text
34
- assert "Disallow: /administration" in response.text
35
- assert "Sitemap: https://127.0.0.1:5000/sitemap_index_0.xml" in response.text
@@ -1,95 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2023 Northwestern University.
4
- #
5
- # Invenio-App-RDM is free software; you can redistribute it and/or modify
6
- # it under the terms of the MIT License; see LICENSE file for more details.
7
-
8
- """Test Signposting.
9
-
10
- See https://signposting.org/FAIR/#level2 for more information on Signposting
11
- """
12
- import pytest
13
-
14
-
15
- @pytest.mark.parametrize("http_method", ["head", "get"])
16
- @pytest.mark.parametrize("level_1_enabled", [True, False])
17
- def test_link_in_landing_page_response_headers(
18
- running_app, app, client, record_with_file, http_method, level_1_enabled
19
- ):
20
- previous_config = app.config[
21
- "APP_RDM_RECORD_LANDING_PAGE_FAIR_SIGNPOSTING_LEVEL_1_ENABLED"
22
- ]
23
-
24
- if level_1_enabled:
25
- app.config["APP_RDM_RECORD_LANDING_PAGE_FAIR_SIGNPOSTING_LEVEL_1_ENABLED"] = (
26
- True
27
- )
28
-
29
- client_http_method = getattr(client, http_method)
30
- res = client_http_method(f"/records/{record_with_file.id}")
31
-
32
- # The link headers are already tested in details in `invenio-rdm-records` (see `test_signposting_serializer`).
33
- # Here we still want to issue the HTTP call to the URL in order to make sure that the decorator is working properly,
34
- # but the assertions are less detailed to avoid having to adapt this test every time we modify the logic in `invenio-rdm-records`.
35
- link_headers = res.headers["Link"].split(" , ")
36
-
37
- # The test record does not have:
38
- # - an author with an identifier.
39
- # - a cite-as since it has no DOI.
40
- # - a license.
41
-
42
- # There should be at least one link to a linkset (e.g. "application/linkset" and/or "application/linkset+json")
43
- assert sum('; rel="linkset" ;' in header for header in link_headers) >= 1
44
-
45
- if level_1_enabled:
46
- # There should be at least 10 export formats supported (e.g. "application/dcat+xml", "application/x-bibtex", etc.).
47
- assert sum('; rel="describedby" ;' in header for header in link_headers) >= 10
48
-
49
- # There should be at least one file in the record.
50
- assert sum('; rel="item" ;' in header for header in link_headers) >= 1
51
-
52
- # There should be at least one description of the type of the record (e.g. "https://schema.org/Photograph").
53
- assert sum('; rel="type"' in header for header in link_headers) >= 1
54
- else:
55
- # The only link headers should be linkset headers.
56
- assert sum('; rel="linkset" ;' in header for header in link_headers) == len(
57
- link_headers
58
- )
59
-
60
- app.config["APP_RDM_RECORD_LANDING_PAGE_FAIR_SIGNPOSTING_LEVEL_1_ENABLED"] = (
61
- previous_config
62
- )
63
-
64
-
65
- @pytest.mark.parametrize("http_method", ["head", "get"])
66
- def test_link_in_content_resource_response_headers(
67
- running_app, client, record_with_file, http_method
68
- ):
69
- ui_url = f"https://127.0.0.1:5000/records/{record_with_file.id}"
70
- api_url = f"https://127.0.0.1:5000/api/records/{record_with_file.id}"
71
- filename = "article.txt"
72
-
73
- client_http_method = getattr(client, http_method)
74
- res = client_http_method(f"/records/{record_with_file.id}/files/{filename}")
75
-
76
- assert res.headers["Link"].split(" , ") == [
77
- f'<{ui_url}> ; rel="collection" ; type="text/html"',
78
- f'<{api_url}> ; rel="linkset" ; type="application/linkset+json"',
79
- ]
80
-
81
-
82
- @pytest.mark.parametrize("http_method", ["head", "get"])
83
- def test_link_in_metadata_resource_response_headers(
84
- running_app, client, record, http_method
85
- ):
86
- ui_url = f"https://127.0.0.1:5000/records/{record.id}"
87
- api_url = f"https://127.0.0.1:5000/api/records/{record.id}"
88
-
89
- client_http_method = getattr(client, http_method)
90
- res = client_http_method(f"/records/{record.id}/export/bibtex")
91
-
92
- assert res.headers["Link"].split(" , ") == [
93
- f'<{ui_url}> ; rel="describes" ; type="text/html"',
94
- f'<{api_url}> ; rel="linkset" ; type="application/linkset+json"',
95
- ]
tests/ui/test_sitemaps.py DELETED
@@ -1,85 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2025 Northwestern University.
4
- #
5
- # Invenio-App-RDM is free software; you can redistribute it and/or modify
6
- # it under the terms of the MIT License; see LICENSE file for more details.
7
-
8
- """Test sitemaps."""
9
-
10
- import datetime
11
-
12
- import time_machine
13
- from invenio_communities.proxies import current_communities
14
-
15
- from invenio_app_rdm.communities_ui.sitemap import SitemapSectionOfCommunities
16
- from invenio_app_rdm.records_ui.sitemap import SitemapSectionOfRDMRecords
17
-
18
-
19
- def test_sitemap_section_of_communities(running_app, community_input, create_community):
20
- # by default converted to UTC w/ time 00:00:00
21
- with time_machine.travel(datetime.date(2025, 3, 27)):
22
- community_input["slug"] = "my-test-community-1"
23
- c1 = create_community(data=community_input)
24
- community_input["slug"] = "my-test-community-2"
25
- community_input["access"]["visibility"] = "restricted"
26
- c2 = create_community(data=community_input)
27
- with time_machine.travel(datetime.date(2025, 3, 28)):
28
- community_input["slug"] = "my-test-community-3"
29
- community_input["access"]["visibility"] = "public"
30
- community_input["metadata"]["page"] = "A page to be indexed."
31
- c3 = create_community(data=community_input)
32
-
33
- current_communities.service.indexer.refresh() # index in search engine
34
- section = SitemapSectionOfCommunities()
35
-
36
- entries = [section.to_dict(entity) for entity in section.iter_entities()]
37
-
38
- expected_entries = [
39
- {
40
- "loc": "https://127.0.0.1:5000/communities/my-test-community-3/records",
41
- "lastmod": "2025-03-28T00:00:00Z",
42
- },
43
- {
44
- "loc": "https://127.0.0.1:5000/communities/my-test-community-3/about",
45
- "lastmod": "2025-03-28T00:00:00Z",
46
- },
47
- {
48
- "loc": "https://127.0.0.1:5000/communities/my-test-community-1/records",
49
- "lastmod": "2025-03-27T00:00:00Z",
50
- },
51
- ]
52
- assert expected_entries == entries
53
-
54
-
55
- def test_sitemap_section_of_records(
56
- running_app, minimal_record, create_record, records_service
57
- ):
58
- # by default converted to UTC w/ time 00:00:00
59
- with time_machine.travel(datetime.date(2025, 3, 27)):
60
- minimal_record["title"] = "my-test-record-1"
61
- r1 = create_record(data=minimal_record)
62
- minimal_record["title"] = "my-test-record-2"
63
- minimal_record["access"]["record"] = "restricted"
64
- r2 = create_record(data=minimal_record)
65
- with time_machine.travel(datetime.date(2025, 3, 28)):
66
- minimal_record["title"] = "my-test-record-3"
67
- minimal_record["access"]["record"] = "public"
68
- r3 = create_record(data=minimal_record)
69
-
70
- records_service.indexer.refresh()
71
- section = SitemapSectionOfRDMRecords()
72
-
73
- entries = [section.to_dict(entity) for entity in section.iter_entities()]
74
-
75
- expected_entries = [
76
- {
77
- "loc": f"https://127.0.0.1:5000/records/{r3.id}",
78
- "lastmod": "2025-03-28T00:00:00Z",
79
- },
80
- {
81
- "loc": f"https://127.0.0.1:5000/records/{r1.id}",
82
- "lastmod": "2025-03-27T00:00:00Z",
83
- },
84
- ]
85
- assert expected_entries == entries
tests/ui/test_stats_ui.py DELETED
@@ -1,92 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2023 TU Wien.
4
- #
5
- # Invenio-App-RDM is free software; you can redistribute it and/or modify
6
- # it under the terms of the MIT License; see LICENSE file for more details.
7
-
8
- """Test the statistics integration."""
9
-
10
- import time
11
- from datetime import datetime, timedelta
12
-
13
- import pytest
14
- from flask import current_app
15
- from invenio_search.engine import dsl
16
- from invenio_stats.proxies import current_stats
17
- from invenio_stats.tasks import process_events
18
-
19
-
20
- @pytest.fixture()
21
- def empty_event_queues(running_app):
22
- """Make sure the event queues exist and are empty."""
23
- for event in current_stats.events:
24
- queue = current_stats.events[event].queue
25
- queue.queue.declare()
26
- queue.consume()
27
-
28
-
29
- def test_record_view_events(
30
- client, running_app, index_templates, record, empty_event_queues
31
- ):
32
- """Test that landing page visits trigger events."""
33
- res = client.get(f"/records/{record.id}")
34
- assert res.status_code == 200
35
-
36
- # as per current default configuration, only UI-based visits should
37
- # trigger events to be sent off to the queue
38
- # (API calls such as the CSL export on the landing page are ignored)
39
- queue = current_stats.events["record-view"].queue
40
- events = list(queue.consume())
41
- event = events[0]
42
- assert len(events) == 1
43
- assert event["recid"] == record.id
44
- assert event["via_api"] is False
45
-
46
-
47
- def test_record_view_statistics(
48
- client, running_app, index_templates, record, empty_event_queues
49
- ):
50
- """Test that landing page visits triggers events and indexes them."""
51
- event_cfg = current_stats.events["record-view"]
52
- event = event_cfg.cls(**event_cfg.params, double_click_window=0)
53
- agg_cfg = current_stats.aggregations["record-view-agg"]
54
- agg = agg_cfg.cls(agg_cfg.name, **agg_cfg.params)
55
- query_cfg = current_stats.queries["record-view"]
56
- query = query_cfg.cls(name=query_cfg.name, **query_cfg.params)
57
-
58
- for i in range(3):
59
- if i != 0:
60
- # we need to sleep for a little while here because invenio-stats trims
61
- # the sub-second part from the events before indexing them,
62
- # (and thus collapses similar events if they are too close in time)
63
- time.sleep(1.25)
64
-
65
- res = client.get(f"/records/{record.id}")
66
- assert res.status_code == 200
67
-
68
- # process the event
69
- processing_result = event.run()
70
- assert processing_result == (1, 0)
71
-
72
- # refresh the index and check if the event was properly indexed
73
- dsl.Index(event.index, using=event.client).refresh()
74
- indexed_events = dsl.Search(using=event.client, index=event.index).execute(
75
- ignore_cache=True
76
- )
77
- indexed_event = indexed_events.hits[0]
78
- assert indexed_events.hits.total.value == (i + 1)
79
- assert indexed_event["recid"] == record.id
80
- assert indexed_event["parent_recid"] == record["parent"]["id"]
81
- assert indexed_event["via_api"] is False
82
-
83
- # calculate the aggregations and check if the query is correct
84
- yesterday = datetime.today() - timedelta(days=1)
85
- tomorrow = datetime.today() + timedelta(days=1)
86
- agg.run(start_date=yesterday, end_date=tomorrow, update_bookmark=False)
87
- dsl.Index(agg.index, using=agg.client).refresh()
88
- query_result = query.run(recid=record.id)
89
- assert query_result["recid"] == record.id
90
- assert query_result["parent_recid"] == record["parent"]["id"]
91
- assert query_result["views"] == (i + 1)
92
- assert query_result["unique_views"] == 1