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,40 +0,0 @@
1
- // This file is part of React-Invenio-Deposit
2
- // Copyright (C) 2021 Graz University of Technology.
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
- const { readFileSync, writeFileSync } = require("fs");
8
- const { gettextToI18next } = require("i18next-conv");
9
-
10
- const PACKAGE_JSON_BASE_PATH = "./";
11
- const { languages } = require(`../package`).config;
12
-
13
- // it accepts the same options as the cli.
14
- // https://github.com/i18next/i18next-gettext-converter#options
15
- const options = {
16
- /* you options here */
17
- };
18
-
19
- function save(target) {
20
- return (result) => {
21
- writeFileSync(target, result);
22
- };
23
- }
24
-
25
- if ("lang" === process.argv[2]) {
26
- const lang = process.argv[3];
27
- gettextToI18next(
28
- lang,
29
- readFileSync(`${PACKAGE_JSON_BASE_PATH}messages/${lang}/messages.po`),
30
- options
31
- ).then(save(`${PACKAGE_JSON_BASE_PATH}messages/${lang}/translations.json`));
32
- } else {
33
- for (const lang of languages) {
34
- gettextToI18next(
35
- lang,
36
- readFileSync(`${PACKAGE_JSON_BASE_PATH}messages/${lang}/messages.po`),
37
- options
38
- ).then(save(`${PACKAGE_JSON_BASE_PATH}messages/${lang}/translations.json`));
39
- }
40
- }
@@ -1,20 +0,0 @@
1
- // This file is part of React-Invenio-Deposit
2
- // Copyright (C) 2021 Graz University of Technology.
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
- const { writeFileSync } = require("fs");
8
- const packageJson = require("../package");
9
-
10
- const { languages } = packageJson.config;
11
- if ("lang" === process.argv[2]) {
12
- const addedLang = process.argv[3];
13
- languages.push(addedLang);
14
- packageJson.config.languages = [...new Set(languages)];
15
- writeFileSync(`package.json`, JSON.stringify(packageJson, null, 2));
16
- } else {
17
- console.error(
18
- "Error:Please provide a language by running `npm run init_catalog lang <lang>`"
19
- );
20
- }
tests/__init__.py DELETED
@@ -1,8 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2025 Graz University of Technology.
4
- #
5
- # Invenio App RDM is free software; you can redistribute it and/or modify it
6
- # under the terms of the MIT License; see LICENSE file for more details.
7
-
8
- """Tests."""
tests/api/__init__.py DELETED
@@ -1,8 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2025 Graz University of Technology.
4
- #
5
- # Invenio App RDM is free software; you can redistribute it and/or modify it
6
- # under the terms of the MIT License; see LICENSE file for more details.
7
-
8
- """Tests."""
tests/api/conftest.py DELETED
@@ -1,24 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2019 CERN.
4
- # Copyright (C) 2019 Northwestern University.
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
- """Pytest fixtures and plugins for the API application."""
10
-
11
- import pytest
12
- from invenio_app.factory import create_api
13
-
14
-
15
- @pytest.fixture(scope="module")
16
- def create_app():
17
- """Create test app."""
18
- return create_api
19
-
20
-
21
- @pytest.fixture(scope="module")
22
- def headers():
23
- """Return typical API headers."""
24
- return {"content-type": "application/json", "accept": "application/json"}
@@ -1,73 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2021 CERN.
4
- # Copyright (C) 2021 Northwestern University.
5
- #
6
- # Invenio-RDM-Records 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
- """Test files-rest is protected."""
10
-
11
- from io import BytesIO
12
-
13
-
14
- def create_draft(client, record, headers):
15
- """Create draft and return its id."""
16
- response = client.post("/records", json=record, headers=headers)
17
- assert response.status_code == 201
18
- return response.json["id"]
19
-
20
-
21
- def init_file(client, recid, headers):
22
- """Init a file for draft with given recid."""
23
- return client.post(
24
- f"/records/{recid}/draft/files", headers=headers, json=[{"key": "test.pdf"}]
25
- )
26
-
27
-
28
- def upload_file(client, recid):
29
- """Create draft and return its id."""
30
- return client.put(
31
- f"/records/{recid}/draft/files/test.pdf/content",
32
- headers={
33
- "content-type": "application/octet-stream",
34
- "accept": "application/json",
35
- },
36
- data=BytesIO(b"testfile"),
37
- )
38
-
39
-
40
- def commit_file(client, recid, headers):
41
- """Create draft and return its id."""
42
- return client.post(f"/records/{recid}/draft/files/test.pdf/commit", headers=headers)
43
-
44
-
45
- # NOTE: It seems like it was already the case that a logged in user wouldn't be
46
- # able to access files-rest. We are just making doubly-clear.
47
- def test_files_rest_endpoint_is_protected(
48
- running_app, client_with_login, headers, es_clear, minimal_record
49
- ):
50
- client = client_with_login
51
-
52
- # Create draft with file
53
- minimal_record["files"] = {"enabled": True}
54
- recid = create_draft(client, minimal_record, headers)
55
- init_file(client, recid, headers)
56
- upload_file(client, recid)
57
- commit_file(client, recid, headers)
58
-
59
- # Get bucket information
60
- url = f"/records/{recid}/draft/files/test.pdf"
61
- response = client.get(url, headers=headers)
62
- bucket_id = response.json["bucket_id"]
63
-
64
- # Nobody is allowed to use the invenio-files-rest endpoints
65
- # (even logged-in user). Just testing for the GET of each is enough
66
-
67
- bucket_url = f"/files/{bucket_id}"
68
- response = client.get(bucket_url, headers=headers)
69
- assert 404 == response.status_code # because of files-rest hiding feature
70
-
71
- bucket_key_url = f"/files/{bucket_id}/test.pdf"
72
- response = client.get(bucket_key_url, headers=headers)
73
- assert 404 == response.status_code
@@ -1,175 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2019-2021 CERN.
4
- # Copyright (C) 2019-2021 Northwestern University.
5
- # Copyright (C) 2024 Graz University of Technology.
6
- #
7
- # Invenio-RDM-Records is free software; you can redistribute it and/or modify
8
- # it under the terms of the MIT License; see LICENSE file for more details.
9
-
10
- """Module tests."""
11
-
12
- import pytest
13
- from invenio_pidstore.models import PersistentIdentifier
14
-
15
- SINGLE_RECORD_API_URL = "/records/{}"
16
- LIST_RECORDS_API_URL = "/records"
17
- DRAFT_API_URL = "/records/{}/draft"
18
- DRAFT_ACTION_API_URL = "/records/{}/draft/actions/{}"
19
-
20
-
21
- def test_record_read_non_existing_pid(client, location, minimal_record, es_clear):
22
- """Retrieve a non existing record."""
23
- # retrieve unknown record
24
- response = client.get(SINGLE_RECORD_API_URL.format("notfound"))
25
- assert response.status_code == 404
26
- assert response.json["status"] == 404
27
- assert response.json["message"] == "The persistent identifier does not exist."
28
-
29
-
30
- def test_record_draft_create_and_read(
31
- client_with_login, running_app, minimal_record, es_clear
32
- ):
33
- """Test draft creation of a non-existing record."""
34
- # create a record
35
- client = client_with_login
36
- response = client.post(LIST_RECORDS_API_URL, json=minimal_record)
37
-
38
- assert response.status_code == 201
39
-
40
- response_fields = response.json.keys()
41
- fields_to_check = ["id", "metadata", "revision_id", "created", "updated", "links"]
42
-
43
- for field in fields_to_check:
44
- assert field in response_fields
45
-
46
- recid = response.json["id"]
47
-
48
- # retrieve record draft
49
- response = client.get(DRAFT_API_URL.format(recid))
50
- assert response.status_code == 200
51
- assert response.json is not None
52
-
53
-
54
- def test_record_draft_publish(
55
- client_with_login, headers, running_app, minimal_record, es_clear
56
- ):
57
- """Test draft publication of a non-existing record.
58
-
59
- It has to first create said draft and includes record read.
60
- """
61
- # Create the draft
62
- client = client_with_login
63
- response = client.post(LIST_RECORDS_API_URL, json=minimal_record, headers=headers)
64
-
65
- assert response.status_code == 201
66
- recid = response.json["id"]
67
-
68
- # Publish it
69
- response = client.post(
70
- DRAFT_ACTION_API_URL.format(recid, "publish"), headers=headers
71
- )
72
-
73
- assert response.status_code == 202
74
- response_fields = response.json.keys()
75
- fields_to_check = ["id", "metadata", "revision_id", "created", "updated", "links"]
76
-
77
- for field in fields_to_check:
78
- assert field in response_fields
79
-
80
- response = client.get(DRAFT_API_URL.format(recid), headers=headers)
81
- assert response.status_code == 404
82
-
83
- # Test record exists
84
- response = client.get(SINGLE_RECORD_API_URL.format(recid), headers=headers)
85
-
86
- assert response.status_code == 200
87
-
88
- response_fields = response.json.keys()
89
- fields_to_check = ["id", "metadata", "revision_id", "created", "updated", "links"]
90
-
91
- for field in fields_to_check:
92
- assert field in response_fields
93
-
94
-
95
- def test_read_record_with_redirected_pid(
96
- client_with_login, headers, running_app, minimal_record, es_clear
97
- ):
98
- """Test read a record with a redirected pid."""
99
- # Create dummy record
100
- client = client_with_login
101
- response = client.post(LIST_RECORDS_API_URL, headers=headers, json=minimal_record)
102
- assert response.status_code == 201
103
- # Publish it
104
- pid1_value = response.json["id"]
105
- response = client.post(
106
- DRAFT_ACTION_API_URL.format(pid1_value, "publish"), headers=headers
107
- )
108
- assert response.status_code == 202
109
-
110
- # Create another dummy record
111
- response = client.post(LIST_RECORDS_API_URL, headers=headers, json=minimal_record)
112
- assert response.status_code == 201
113
- pid2_value = response.json["id"]
114
- # Publish it
115
- response = client.post(
116
- DRAFT_ACTION_API_URL.format(pid2_value, "publish"), headers=headers
117
- )
118
- assert response.status_code == 202
119
-
120
- # redirect pid1 to pid2
121
- pid1 = PersistentIdentifier.get("recid", pid1_value)
122
- pid2 = PersistentIdentifier.get("recid", pid2_value)
123
- pid1.redirect(pid2)
124
-
125
- response = client.get(SINGLE_RECORD_API_URL.format(pid1.pid_value), headers=headers)
126
- assert response.status_code == 301
127
-
128
- assert response.json["status"] == 301
129
- assert response.json["message"] == "Moved Permanently."
130
-
131
-
132
- @pytest.mark.skip()
133
- def test_read_deleted_record(
134
- client_with_login, headers, location, minimal_record, es_clear, administration_user
135
- ):
136
- """Test read a deleted record."""
137
- client = client_with_login
138
-
139
- # Create dummy record to test delete
140
- response = client.post(LIST_RECORDS_API_URL, headers=headers, json=minimal_record)
141
- assert response.status_code == 201
142
- recid = response.json["id"]
143
- # Publish it
144
- response = client.post(
145
- DRAFT_ACTION_API_URL.format(recid, "publish"), headers=headers
146
- )
147
- assert response.status_code == 202
148
-
149
- # Delete the record
150
- response = client.delete(SINGLE_RECORD_API_URL.format(recid), headers=headers)
151
- assert response.status_code == 204
152
-
153
- # Read the deleted record
154
- response = client.get(SINGLE_RECORD_API_URL.format(recid), headers=headers)
155
- assert response.status_code == 410
156
- assert response.json["message"] == "The record has been deleted."
157
-
158
-
159
- def test_record_search(client, headers, running_app, es_clear):
160
- """Test record search."""
161
- expected_response_keys = set(["hits", "links", "aggregations"])
162
- expected_metadata_keys = set(["resource_type", "creators", "titles"])
163
-
164
- # Get published bibliographic records
165
- response = client.get(LIST_RECORDS_API_URL, headers=headers)
166
-
167
- assert response.status_code == 200
168
- response_keys = set(response.json.keys())
169
- # The datamodel has other tests (jsonschemas, mappings, schemas)
170
- # Here we just want to crosscheck the important ones are there.
171
- assert expected_response_keys.issubset(response_keys)
172
-
173
- for r in response.json["hits"]["hits"]:
174
- metadata_keys = set(r["metadata"])
175
- assert expected_metadata_keys.issubset(metadata_keys)
@@ -1,26 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2023 CERN.
4
- # Copyright (C) 2024 Graz University 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
- """Test the statistics integration."""
10
-
11
- from invenio_accounts.testutils import login_user_via_session
12
-
13
-
14
- def test_ui_event_emission(running_app, headers, client, administration_user):
15
- """It is expected that the REST API endpoint for the statistics is disabled."""
16
- login_user_via_session(client, email=administration_user.email)
17
-
18
- # NOTE: the permissions are only relevant per requested query type ("stat")
19
- data = {"my-query": {"stat": "record-view", "params": {"recid": "doesnt-matter"}}}
20
- result = client.post("/stats", headers=headers, json=data)
21
- assert result.status_code == 403
22
-
23
- # i.e. if no queries are requested, nothing will be denied
24
- result = client.post("/stats", headers=headers, json={})
25
- assert result.status_code == 200
26
- assert result.json == {}