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
@@ -20,6 +20,7 @@ import {
20
20
  DeleteButton,
21
21
  DepositStatusBox,
22
22
  FileUploader,
23
+ UppyUploader,
23
24
  FormFeedback,
24
25
  IdentifiersField,
25
26
  PIDField,
@@ -46,13 +47,14 @@ import Overridable from "react-overridable";
46
47
  import { CopyrightsField } from "@js/invenio_rdm_records/src/deposit/fields/CopyrightsField/CopyrightsField";
47
48
  import { ShareDraftButton } from "./ShareDraftButton";
48
49
  import { depositFormSectionsConfig, severityChecksConfig } from "./config";
50
+ import { RecordDeletion } from "../components/RecordDeletion";
51
+ import { FileModificationUntil } from "../components/FileModificationUntil";
49
52
 
50
53
  export class RDMDepositForm extends Component {
51
54
  constructor(props) {
52
55
  super(props);
53
56
  this.config = props.config || {};
54
57
  const { files, record } = this.props;
55
-
56
58
  // TODO: Make ALL vocabulary be generated by backend.
57
59
  // Currently, some vocabulary is generated by backend and some is
58
60
  // generated by frontend here. Iteration is faster and abstractions can be
@@ -112,8 +114,11 @@ export class RDMDepositForm extends Component {
112
114
  filesLocked,
113
115
  recordRestrictionGracePeriod,
114
116
  allowRecordRestriction,
117
+ recordDeletion,
118
+ fileModification,
115
119
  groupsEnabled,
116
120
  allowEmptyFiles,
121
+ useUppy,
117
122
  } = this.props;
118
123
 
119
124
  // Adding section id to custom fields UI, to be used for accordions
@@ -121,6 +126,7 @@ export class RDMDepositForm extends Component {
121
126
  ...section,
122
127
  id: section.section.toLowerCase().replace(/\s+/g, "-") + "-section",
123
128
  }));
129
+ const UploaderField = useUppy ? UppyUploader : FileUploader;
124
130
 
125
131
  return (
126
132
  <Overridable
@@ -133,6 +139,8 @@ export class RDMDepositForm extends Component {
133
139
  filesLocked={filesLocked}
134
140
  recordRestrictionGracePeriod={recordRestrictionGracePeriod}
135
141
  allowRecordRestriction={allowRecordRestriction}
142
+ recordDeletion={recordDeletion}
143
+ fileModification={fileModification}
136
144
  groupsEnabled={groupsEnabled}
137
145
  allowEmptyFiles={allowEmptyFiles}
138
146
  customFieldsUI={customFieldsUI}
@@ -143,6 +151,7 @@ export class RDMDepositForm extends Component {
143
151
  preselectedCommunity={preselectedCommunity}
144
152
  files={files}
145
153
  permissions={permissions}
154
+ errors={record.errors}
146
155
  >
147
156
  <Overridable
148
157
  id="InvenioAppRdm.Deposit.FormFeedback.container"
@@ -175,12 +184,25 @@ export class RDMDepositForm extends Component {
175
184
  record={record}
176
185
  config={this.config}
177
186
  noFiles={this.noFiles}
187
+ fileModification={fileModification}
188
+ filesLocked={filesLocked}
178
189
  >
179
190
  <AccordionField
180
191
  includesPaths={this.sectionsConfig["files-section"]}
181
192
  severityChecks={this.severityChecks}
182
193
  active
183
- label={i18next.t("Files")}
194
+ label={
195
+ <>
196
+ {i18next.t("Files")}
197
+ {record.is_published && (
198
+ <FileModificationUntil
199
+ fileModification={fileModification}
200
+ filesLocked={filesLocked}
201
+ record={record}
202
+ />
203
+ )}
204
+ </>
205
+ }
184
206
  id="files-section"
185
207
  >
186
208
  {this.noFiles && record.is_published && (
@@ -196,13 +218,15 @@ export class RDMDepositForm extends Component {
196
218
  filesLocked={filesLocked}
197
219
  allowEmptyFiles={allowEmptyFiles}
198
220
  >
199
- <FileUploader
221
+ <UploaderField
200
222
  isDraftRecord={!record.is_published}
201
223
  quota={this.config.quota}
202
224
  decimalSizeDisplay={this.config.decimal_size_display}
203
225
  showMetadataOnlyToggle={permissions?.can_manage_files}
204
226
  allowEmptyFiles={allowEmptyFiles}
205
227
  filesLocked={filesLocked}
228
+ fileUploadConcurrency={config.fileUploadConcurrency}
229
+ fileModification={fileModification}
206
230
  />
207
231
  </Overridable>
208
232
  </AccordionField>
@@ -672,6 +696,7 @@ export class RDMDepositForm extends Component {
672
696
  (widget) => import(`react-invenio-forms`),
673
697
  ]}
674
698
  fieldPathPrefix="custom_fields"
699
+ severityChecks={this.severityChecks}
675
700
  />
676
701
  </Overridable>
677
702
  )}
@@ -755,7 +780,26 @@ export class RDMDepositForm extends Component {
755
780
  >
756
781
  <Card>
757
782
  <Card.Content>
758
- <DeleteButton fluid />
783
+ <Grid relaxed>
784
+ <Grid.Column width={16}>
785
+ <DeleteButton fluid />
786
+ </Grid.Column>
787
+
788
+ {record.is_published && recordDeletion["enabled"] && (
789
+ <Grid.Column width={16} className="pt-0">
790
+ <RecordDeletion
791
+ record={record}
792
+ permissions={permissions}
793
+ recordDeletion={recordDeletion}
794
+ options={
795
+ this.vocabularies.metadata
796
+ .deletion_request_removal_reasons
797
+ }
798
+ disabled={!recordDeletion["allowed"]}
799
+ />
800
+ </Grid.Column>
801
+ )}
802
+ </Grid>
759
803
  </Card.Content>
760
804
  </Card>
761
805
  </Overridable>
@@ -776,18 +820,24 @@ RDMDepositForm.propTypes = {
776
820
  config: PropTypes.object.isRequired,
777
821
  recordRestrictionGracePeriod: PropTypes.number.isRequired,
778
822
  allowRecordRestriction: PropTypes.bool.isRequired,
823
+ recordDeletion: PropTypes.object,
824
+ fileModification: PropTypes.object,
779
825
  record: PropTypes.object.isRequired,
780
826
  preselectedCommunity: PropTypes.object,
781
827
  files: PropTypes.object,
782
828
  permissions: PropTypes.object,
783
829
  filesLocked: PropTypes.bool,
784
830
  allowEmptyFiles: PropTypes.bool,
831
+ useUppy: PropTypes.bool,
785
832
  };
786
833
 
787
834
  RDMDepositForm.defaultProps = {
788
835
  preselectedCommunity: undefined,
789
- permissions: null,
790
836
  files: null,
837
+ permissions: null,
791
838
  filesLocked: false,
792
839
  allowEmptyFiles: true,
840
+ useUppy: false,
841
+ recordDeletion: {},
842
+ fileModification: {},
793
843
  };
@@ -1,5 +1,5 @@
1
1
  // This file is part of InvenioRDM
2
- // Copyright (C) 2020-2024 CERN.
2
+ // Copyright (C) 2020-2025 CERN.
3
3
  // Copyright (C) 2020-2022 Northwestern University.
4
4
  // Copyright (C) 2022-2024 KTH Royal Institute of Technology.
5
5
  //
@@ -21,12 +21,15 @@ ReactDOM.render(
21
21
  preselectedCommunity={getInputFromDOM("deposits-draft-community")}
22
22
  files={getInputFromDOM("deposits-record-files")}
23
23
  config={getInputFromDOM("deposits-config")}
24
+ useUppy={getInputFromDOM("deposits-use-uppy-ui")}
24
25
  permissions={getInputFromDOM("deposits-record-permissions")}
25
26
  filesLocked={getInputFromDOM("deposits-record-locked-files")}
26
27
  recordRestrictionGracePeriod={getInputFromDOM(
27
28
  "deposits-record-restriction-grace-period"
28
29
  )}
29
30
  allowRecordRestriction={getInputFromDOM("deposits-allow-record-restriction")}
31
+ recordDeletion={getInputFromDOM("deposits-record-deletion")}
32
+ fileModification={getInputFromDOM("deposits-file-modification")}
30
33
  groupsEnabled={getInputFromDOM("config-groups-enabled")}
31
34
  allowEmptyFiles={getInputFromDOM("records-resources-allow-empty-files")}
32
35
  isDoiRequired={getInputFromDOM("deposits-is-doi-required")}
@@ -1,5 +1,5 @@
1
1
  // This file is part of InvenioRDM
2
- // Copyright (C) 2023-2024 CERN.
2
+ // Copyright (C) 2023-2025 CERN.
3
3
  //
4
4
  // Invenio App RDM is free software; you can redistribute it and/or modify it
5
5
  // under the terms of the MIT License; see LICENSE file for more details.
@@ -135,7 +135,7 @@ export class CommunitiesManagement extends Component {
135
135
  successActionCallback={this.handleRefresh}
136
136
  recordCommunityEndpoint={recordCommunityEndpoint}
137
137
  permissions={permissions}
138
- record={record}
138
+ recordParent={record.parent}
139
139
  />
140
140
 
141
141
  {!loading && communities?.length > MAX_COMMUNITIES && (
@@ -9,6 +9,7 @@ import React, { Component } from "react";
9
9
  import PropTypes from "prop-types";
10
10
  import { Grid, Dropdown, Button } from "semantic-ui-react";
11
11
  import { i18next } from "@translations/invenio_app_rdm/i18next";
12
+ import { CopyButton } from "@js/invenio_app_rdm/components/CopyButton";
12
13
 
13
14
  export class ExportDropdown extends Component {
14
15
  constructor(props) {
@@ -18,6 +19,7 @@ export class ExportDropdown extends Component {
18
19
  selectedFormatUrl: formats[0]?.export_url,
19
20
  };
20
21
  }
22
+
21
23
  render() {
22
24
  const { formats } = this.props;
23
25
  const { selectedFormatUrl } = this.state;
@@ -31,7 +33,7 @@ export class ExportDropdown extends Component {
31
33
 
32
34
  return (
33
35
  <Grid>
34
- <Grid.Column width={11}>
36
+ <Grid.Column width={10}>
35
37
  <Dropdown
36
38
  aria-label={i18next.t("Export selection")}
37
39
  selection
@@ -42,7 +44,7 @@ export class ExportDropdown extends Component {
42
44
  defaultValue={selectedFormatUrl}
43
45
  />
44
46
  </Grid.Column>
45
- <Grid.Column width={5} className="pl-0">
47
+ <Grid.Column width={4} className="pl-0">
46
48
  <Button
47
49
  as="a"
48
50
  role="button"
@@ -53,6 +55,9 @@ export class ExportDropdown extends Component {
53
55
  {i18next.t("Export")}
54
56
  </Button>
55
57
  </Grid.Column>
58
+ <Grid.Column width={2} className="pl-0">
59
+ <CopyButton url={selectedFormatUrl} />
60
+ </Grid.Column>
56
61
  </Grid>
57
62
  );
58
63
  }
@@ -1,5 +1,5 @@
1
1
  // This file is part of InvenioRDM
2
- // Copyright (C) 2023-2024 CERN.
2
+ // Copyright (C) 2023-2025 CERN.
3
3
  //
4
4
  // Invenio RDM Records is free software; you can redistribute it and/or modify it
5
5
  // under the terms of the MIT License; see LICENSE file for more details.
@@ -10,8 +10,15 @@ import { i18next } from "@translations/invenio_app_rdm/i18next";
10
10
  import PropTypes from "prop-types";
11
11
  import { http } from "react-invenio-forms";
12
12
  import { APIRoutes } from "../administration/users/api/routes";
13
+ import { RecordDeletion } from "../components/RecordDeletion";
13
14
 
14
- export const ManageButton = ({ recid, recordOwnerID }) => {
15
+ export const ManageButton = ({
16
+ record,
17
+ recordOwnerID,
18
+ permissions,
19
+ recordDeletion,
20
+ recordDeletionOptions,
21
+ }) => {
15
22
  return (
16
23
  <Dropdown
17
24
  fluid
@@ -23,30 +30,56 @@ export const ManageButton = ({ recid, recordOwnerID }) => {
23
30
  className="icon text-align-center"
24
31
  >
25
32
  <Dropdown.Menu>
26
- <Dropdown.Item
27
- as="a"
28
- href={`/administration/records?q=id:${recid}`}
29
- target="_blank"
30
- key="manage_record"
31
- text={i18next.t("Manage record")}
32
- />
33
- <Dropdown.Item
34
- as="a"
35
- href={`/administration/users?q=id:${recordOwnerID}`}
36
- target="_blank"
37
- key="manage_user"
38
- text={i18next.t("Manage user")}
39
- />
40
- <Dropdown.Divider />
41
- {recordOwnerID && <BlockUserItem recordOwnerID={recordOwnerID} />}
33
+ {recordDeletion["valid_user"] && (
34
+ <>
35
+ <Dropdown.Item>
36
+ <RecordDeletion
37
+ record={record}
38
+ permissions={permissions}
39
+ recordDeletion={recordDeletion}
40
+ options={recordDeletionOptions}
41
+ disabled={!recordDeletion["allowed"]}
42
+ />
43
+ </Dropdown.Item>
44
+
45
+ {permissions.can_moderate && <Dropdown.Divider />}
46
+ </>
47
+ )}
48
+ {permissions.can_moderate && (
49
+ <>
50
+ <Dropdown.Item
51
+ as="a"
52
+ href={`/administration/records?q=id:${record["id"]}`}
53
+ target="_blank"
54
+ key="manage_record"
55
+ text={i18next.t("Manage record")}
56
+ />
57
+ <Dropdown.Item
58
+ as="a"
59
+ href={`/administration/users?q=id:${recordOwnerID}`}
60
+ target="_blank"
61
+ key="manage_user"
62
+ text={i18next.t("Manage user")}
63
+ />
64
+ <Dropdown.Divider />
65
+ {recordOwnerID && <BlockUserItem recordOwnerID={recordOwnerID} />}
66
+ </>
67
+ )}
42
68
  </Dropdown.Menu>
43
69
  </Dropdown>
44
70
  );
45
71
  };
46
72
 
47
73
  ManageButton.propTypes = {
48
- recid: PropTypes.string.isRequired,
74
+ record: PropTypes.object.isRequired,
49
75
  recordOwnerID: PropTypes.string.isRequired,
76
+ permissions: PropTypes.object.isRequired,
77
+ recordDeletion: PropTypes.object,
78
+ recordDeletionOptions: PropTypes.array.isRequired,
79
+ };
80
+
81
+ ManageButton.defaultProps = {
82
+ recordDeletion: {},
50
83
  };
51
84
 
52
85
  const BlockUserItem = ({ recordOwnerID }) => {
@@ -1,5 +1,5 @@
1
1
  // This file is part of InvenioRDM
2
- // Copyright (C) 2021-2024 CERN.
2
+ // Copyright (C) 2021-2025 CERN.
3
3
  // Copyright (C) 2021 Graz University of Technology.
4
4
  // Copyright (C) 2021 TU Wien
5
5
  //
@@ -28,18 +28,18 @@ export class RecordCitationField extends Component {
28
28
  }
29
29
 
30
30
  componentDidMount() {
31
- const { record, defaultStyle, includeDeleted } = this.props;
32
- this.getCitation(record, defaultStyle, includeDeleted);
33
- }
34
-
35
- componentWillUnmount() {
36
- this.cancellableFetchCitation?.cancel();
31
+ const { recordLinks, defaultStyle, includeDeleted } = this.props;
32
+ this.getCitation(recordLinks, defaultStyle, includeDeleted);
37
33
  }
38
34
 
39
35
  async componentDidUpdate() {
40
36
  await window.MathJax?.typesetPromise();
41
37
  }
42
38
 
39
+ componentWillUnmount() {
40
+ this.cancellableFetchCitation?.cancel();
41
+ }
42
+
43
43
  placeholderLoader = () => {
44
44
  return (
45
45
  <Placeholder>
@@ -56,9 +56,9 @@ export class RecordCitationField extends Component {
56
56
  return <Message negative>{message}</Message>;
57
57
  };
58
58
 
59
- fetchCitation = async (record, style, includeDeleted) => {
59
+ fetchCitation = async (recordLinks, style, includeDeleted) => {
60
60
  const includeDeletedParam = includeDeleted === true ? "&include_deleted=1" : "";
61
- const url = `${record.links.self}?locale=${navigator.language}&style=${style}${includeDeletedParam}`;
61
+ const url = `${recordLinks.self}?locale=${navigator.language}&style=${style}${includeDeletedParam}`;
62
62
  return await http.get(url, {
63
63
  headers: {
64
64
  Accept: "text/x-bibliography",
@@ -66,7 +66,7 @@ export class RecordCitationField extends Component {
66
66
  });
67
67
  };
68
68
 
69
- getCitation = async (record, style, includeDeleted) => {
69
+ getCitation = async (recordLinks, style, includeDeleted) => {
70
70
  this.setState({
71
71
  loading: true,
72
72
  citation: "",
@@ -74,7 +74,7 @@ export class RecordCitationField extends Component {
74
74
  });
75
75
 
76
76
  this.cancellableFetchCitation = withCancel(
77
- this.fetchCitation(record, style, includeDeleted)
77
+ this.fetchCitation(recordLinks, style, includeDeleted)
78
78
  );
79
79
 
80
80
  try {
@@ -95,7 +95,7 @@ export class RecordCitationField extends Component {
95
95
  };
96
96
 
97
97
  render() {
98
- const { styles, record, defaultStyle, includeDeleted } = this.props;
98
+ const { styles, recordLinks, defaultStyle, includeDeleted } = this.props;
99
99
  const { loading, citation, error } = this.state;
100
100
  const citationOptions = styles.map((style) => {
101
101
  return {
@@ -140,7 +140,8 @@ export class RecordCitationField extends Component {
140
140
  options={citationOptions}
141
141
  selection
142
142
  onChange={_debounce(
143
- (event, data) => this.getCitation(record, data.value, includeDeleted),
143
+ (event, data) =>
144
+ this.getCitation(recordLinks, data.value, includeDeleted),
144
145
  500
145
146
  )}
146
147
  />
@@ -155,7 +156,7 @@ export class RecordCitationField extends Component {
155
156
 
156
157
  RecordCitationField.propTypes = {
157
158
  styles: PropTypes.array.isRequired,
158
- record: PropTypes.object.isRequired,
159
+ recordLinks: PropTypes.object.isRequired,
159
160
  defaultStyle: PropTypes.string.isRequired,
160
161
  includeDeleted: PropTypes.bool.isRequired,
161
162
  };
@@ -1,5 +1,5 @@
1
1
  // This file is part of InvenioRDM
2
- // Copyright (C) 2023 CERN.
2
+ // Copyright (C) 2023-2025 CERN.
3
3
  //
4
4
  // InvenioRDM is free software; you can redistribute it and/or modify it
5
5
  // under the terms of the MIT License; see LICENSE file for more details.
@@ -13,9 +13,9 @@ import { RecordCommunitiesSearch } from "./RecordCommunitiesSearch";
13
13
  export class RecordCommunitiesListModal extends Component {
14
14
  constructor(props) {
15
15
  super(props);
16
- const { record } = this.props;
16
+ const { recordParent } = this.props;
17
17
  this.state = {
18
- recordParent: record.parent,
18
+ recordParent: recordParent,
19
19
  };
20
20
  }
21
21
 
@@ -77,7 +77,7 @@ RecordCommunitiesListModal.propTypes = {
77
77
  handleOnClose: PropTypes.func.isRequired,
78
78
  handleOnOpen: PropTypes.func.isRequired,
79
79
  permissions: PropTypes.object.isRequired,
80
- record: PropTypes.object.isRequired,
80
+ recordParent: PropTypes.object.isRequired,
81
81
  };
82
82
 
83
83
  RecordCommunitiesListModal.defaultProps = {
@@ -91,7 +91,7 @@ export class RecordCommunitySubmissionModal extends Component {
91
91
  } catch (error) {
92
92
  console.error(error);
93
93
  this.setState({
94
- error: error.response.data.errors[0].message,
94
+ error: error["message"],
95
95
  });
96
96
  } finally {
97
97
  this.setState({ loading: false });
@@ -1,5 +1,5 @@
1
1
  // This file is part of InvenioRDM
2
- // Copyright (C) 2020-2024 CERN.
2
+ // Copyright (C) 2020-2025 CERN.
3
3
  // Copyright (C) 2020-2021 Northwestern University.
4
4
  // Copyright (C) 2021 Graz University of Technology.
5
5
  //
@@ -34,6 +34,8 @@ export class RecordManagement extends Component {
34
34
  currentUserId,
35
35
  recordOwnerID,
36
36
  groupsEnabled,
37
+ recordDeletion,
38
+ recordDeletionOptions,
37
39
  } = this.props;
38
40
  const { error } = this.state;
39
41
  const { id: recid } = record;
@@ -44,9 +46,15 @@ export class RecordManagement extends Component {
44
46
 
45
47
  return (
46
48
  <Grid columns={1} className="record-management">
47
- {permissions.can_moderate && (
49
+ {(recordDeletion["valid_user"] || permissions.can_moderate) && (
48
50
  <Grid.Column className="pb-5">
49
- <ManageButton recid={recid} recordOwnerID={recordOwnerID} />
51
+ <ManageButton
52
+ record={record}
53
+ recordOwnerID={recordOwnerID}
54
+ permissions={permissions}
55
+ recordDeletion={recordDeletion}
56
+ recordDeletionOptions={recordDeletionOptions}
57
+ />
50
58
  </Grid.Column>
51
59
  )}
52
60
  {permissions.can_edit && !isDraft && (
@@ -120,4 +128,10 @@ RecordManagement.propTypes = {
120
128
  isPreviewSubmissionRequest: PropTypes.bool.isRequired,
121
129
  currentUserId: PropTypes.string.isRequired,
122
130
  recordOwnerID: PropTypes.string.isRequired,
131
+ recordDeletion: PropTypes.object,
132
+ recordDeletionOptions: PropTypes.array.isRequired,
133
+ };
134
+
135
+ RecordManagement.defaultProps = {
136
+ recordDeletion: {},
123
137
  };
@@ -11,7 +11,6 @@ import React, { useEffect, useState } from "react";
11
11
  import { Grid, Icon, Message, Placeholder, List, Divider } from "semantic-ui-react";
12
12
  import { i18next } from "@translations/invenio_app_rdm/i18next";
13
13
  import PropTypes from "prop-types";
14
- import { Trans } from "react-i18next";
15
14
  import { withCancel, http, ErrorMessage } from "react-invenio-forms";
16
15
 
17
16
  const deserializeRecord = (record) => ({
@@ -179,28 +178,28 @@ export const RecordVersionsList = ({ record, isPreview }) => {
179
178
  {recordParentDOI ? (
180
179
  <List.Item className="parent-doi pr-0">
181
180
  <List.Content floated="left">
182
- <Trans>
183
- <p className="text-muted">
184
- <strong>Cite all versions?</strong> You can cite all versions by using
185
- the DOI{" "}
186
- <a href={recordDeserialized.links.parent_doi}>{recordParentDOI}</a>.
187
- This DOI represents all versions, and will always resolve to the latest
188
- one. <a href="/help/versioning">Read more</a>.
189
- </p>
190
- </Trans>
181
+ <p className="text-muted">
182
+ <strong>{i18next.t("Cite all versions?")}</strong>{" "}
183
+ {i18next.t("You can cite all versions by using the DOI")}{" "}
184
+ <a href={recordDeserialized.links.parent_doi}>{recordParentDOI}</a>.{" "}
185
+ {i18next.t(
186
+ "This DOI represents all versions, and will always resolve to the latest one."
187
+ )}{" "}
188
+ <a href="/help/versioning">{i18next.t("Read more")}</a>.
189
+ </p>
191
190
  </List.Content>
192
191
  </List.Item>
193
192
  ) : recordDraftParentDOIFormat ? (
194
193
  // new drafts without registered parent dois yet
195
194
  <List.Item className="parent-doi pr-0">
196
195
  <List.Content floated="left">
197
- <Trans>
198
- <p className="text-muted">
199
- <strong>Cite all versions?</strong> You can cite all versions by using
200
- the DOI {recordDraftParentDOIFormat}. The DOI is registered when the
201
- first version is published. <a href="/help/versioning">Read more</a>.
202
- </p>
203
- </Trans>
196
+ <p className="text-muted">
197
+ <strong>{i18next.t("Cite all versions?")}</strong>{" "}
198
+ {i18next.t("You can cite all versions by using the DOI")}{" "}
199
+ {recordDraftParentDOIFormat}.{" "}
200
+ {i18next.t("The DOI is registered when the first version is published.")}{" "}
201
+ <a href="/help/versioning">{i18next.t("Read more")}</a>.
202
+ </p>
204
203
  </List.Content>
205
204
  </List.Item>
206
205
  ) : null}
@@ -8,7 +8,6 @@
8
8
  import React, { Component } from "react";
9
9
  import { Button, Modal, Message, Icon, Checkbox } from "semantic-ui-react";
10
10
  import { i18next } from "@translations/invenio_app_rdm/i18next";
11
- import { Trans } from "react-i18next";
12
11
  import { http, ErrorMessage } from "react-invenio-forms";
13
12
  import PropTypes from "prop-types";
14
13
 
@@ -124,10 +123,11 @@ export class RemoveFromCommunityAction extends Component {
124
123
  label={
125
124
  /* eslint-disable-next-line jsx-a11y/label-has-associated-control */
126
125
  <label>
127
- <Trans>
128
- Members of the community <b>"{{ communityTitle }}"</b> will{" "}
129
- <u>lose their access</u> to the record.
130
- </Trans>
126
+ {i18next.t("Members of the community ")}
127
+ <b>"{communityTitle}"</b>
128
+ {i18next.t(" will ")}
129
+ <u>{i18next.t("lose their access")}</u>
130
+ {i18next.t(" to the record.")}
131
131
  </label>
132
132
  }
133
133
  checked={checkboxMembers}