wagtail 6.1.2__py3-none-any.whl → 6.2rc1__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 (644) hide show
  1. wagtail/__init__.py +1 -1
  2. wagtail/actions/copy_for_translation.py +15 -1
  3. wagtail/admin/checks.py +20 -30
  4. wagtail/admin/forms/pages.py +10 -0
  5. wagtail/admin/icons.py +43 -0
  6. wagtail/admin/locale/ar/LC_MESSAGES/django.po +2 -2
  7. wagtail/admin/locale/be/LC_MESSAGES/django.po +7 -7
  8. wagtail/admin/locale/be/LC_MESSAGES/djangojs.po +3 -3
  9. wagtail/admin/locale/ca/LC_MESSAGES/django.mo +0 -0
  10. wagtail/admin/locale/ca/LC_MESSAGES/django.po +51 -50
  11. wagtail/admin/locale/cs/LC_MESSAGES/django.po +10 -8
  12. wagtail/admin/locale/de/LC_MESSAGES/django.po +49 -47
  13. wagtail/admin/locale/dv/LC_MESSAGES/django.po +8 -8
  14. wagtail/admin/locale/el/LC_MESSAGES/django.po +4 -4
  15. wagtail/admin/locale/en/LC_MESSAGES/django.po +405 -295
  16. wagtail/admin/locale/en/LC_MESSAGES/djangojs.po +21 -3
  17. wagtail/admin/locale/es/LC_MESSAGES/django.po +40 -39
  18. wagtail/admin/locale/es_419/LC_MESSAGES/django.po +8 -8
  19. wagtail/admin/locale/et/LC_MESSAGES/django.po +14 -12
  20. wagtail/admin/locale/fa/LC_MESSAGES/django.mo +0 -0
  21. wagtail/admin/locale/fa/LC_MESSAGES/django.po +93 -19
  22. wagtail/admin/locale/fa/LC_MESSAGES/djangojs.mo +0 -0
  23. wagtail/admin/locale/fa/LC_MESSAGES/djangojs.po +5 -1
  24. wagtail/admin/locale/fi/LC_MESSAGES/django.po +18 -18
  25. wagtail/admin/locale/fr/LC_MESSAGES/django.mo +0 -0
  26. wagtail/admin/locale/fr/LC_MESSAGES/django.po +134 -46
  27. wagtail/admin/locale/gl/LC_MESSAGES/django.po +55 -54
  28. wagtail/admin/locale/hr_HR/LC_MESSAGES/django.po +13 -12
  29. wagtail/admin/locale/hr_HR/LC_MESSAGES/djangojs.po +2 -2
  30. wagtail/admin/locale/hu/LC_MESSAGES/django.po +45 -42
  31. wagtail/admin/locale/id_ID/LC_MESSAGES/django.po +6 -6
  32. wagtail/admin/locale/is_IS/LC_MESSAGES/django.po +53 -51
  33. wagtail/admin/locale/it/LC_MESSAGES/django.po +56 -55
  34. wagtail/admin/locale/ja/LC_MESSAGES/django.po +2 -2
  35. wagtail/admin/locale/ko/LC_MESSAGES/django.po +18 -17
  36. wagtail/admin/locale/lt/LC_MESSAGES/django.po +4 -4
  37. wagtail/admin/locale/nb/LC_MESSAGES/django.po +22 -22
  38. wagtail/admin/locale/nl/LC_MESSAGES/django.po +44 -41
  39. wagtail/admin/locale/pl/LC_MESSAGES/django.po +49 -47
  40. wagtail/admin/locale/pl/LC_MESSAGES/djangojs.po +3 -3
  41. wagtail/admin/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  42. wagtail/admin/locale/pt_BR/LC_MESSAGES/django.po +46 -26
  43. wagtail/admin/locale/pt_PT/LC_MESSAGES/django.po +21 -20
  44. wagtail/admin/locale/ro/LC_MESSAGES/django.po +51 -50
  45. wagtail/admin/locale/ru/LC_MESSAGES/django.po +60 -59
  46. wagtail/admin/locale/ru/LC_MESSAGES/djangojs.po +3 -3
  47. wagtail/admin/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  48. wagtail/admin/locale/sk_SK/LC_MESSAGES/django.po +15 -5
  49. wagtail/admin/locale/sl/LC_MESSAGES/django.mo +0 -0
  50. wagtail/admin/locale/sl/LC_MESSAGES/django.po +86 -39
  51. wagtail/admin/locale/sl/LC_MESSAGES/djangojs.po +2 -2
  52. wagtail/admin/locale/sv/LC_MESSAGES/django.mo +0 -0
  53. wagtail/admin/locale/sv/LC_MESSAGES/django.po +117 -41
  54. wagtail/admin/locale/sv/LC_MESSAGES/djangojs.mo +0 -0
  55. wagtail/admin/locale/sv/LC_MESSAGES/djangojs.po +5 -2
  56. wagtail/admin/locale/tet/LC_MESSAGES/django.po +2 -2
  57. wagtail/admin/locale/th/LC_MESSAGES/django.po +4 -4
  58. wagtail/admin/locale/tr/LC_MESSAGES/django.po +4 -4
  59. wagtail/admin/locale/tr_TR/LC_MESSAGES/django.po +4 -4
  60. wagtail/admin/locale/uk/LC_MESSAGES/django.po +11 -10
  61. wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  62. wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.po +84 -13
  63. wagtail/admin/locale/zh_Hant/LC_MESSAGES/django.po +2 -2
  64. wagtail/admin/menu.py +2 -2
  65. wagtail/admin/migrations/0004_editingsession.py +57 -0
  66. wagtail/admin/migrations/0005_editingsession_is_editing.py +18 -0
  67. wagtail/admin/models.py +36 -3
  68. wagtail/admin/rich_text/editors/draftail/__init__.py +2 -20
  69. wagtail/admin/static/wagtailadmin/css/core.css +1 -1
  70. wagtail/admin/static/wagtailadmin/js/bulk-actions.js +1 -1
  71. wagtail/admin/static/wagtailadmin/js/chooser-modal.js +1 -1
  72. wagtail/admin/static/wagtailadmin/js/chooser-widget-telepath.js +1 -1
  73. wagtail/admin/static/wagtailadmin/js/chooser-widget.js +1 -1
  74. wagtail/admin/static/wagtailadmin/js/comments.js +1 -1
  75. wagtail/admin/static/wagtailadmin/js/core.js +1 -1
  76. wagtail/admin/static/wagtailadmin/js/date-time-chooser.js +1 -1
  77. wagtail/admin/static/wagtailadmin/js/draftail.js +1 -1
  78. wagtail/admin/static/wagtailadmin/js/expanding-formset.js +1 -1
  79. wagtail/admin/static/wagtailadmin/js/filtered-select.js +1 -1
  80. wagtail/admin/static/wagtailadmin/js/modal-workflow.js +1 -1
  81. wagtail/admin/static/wagtailadmin/js/page-chooser-modal.js +1 -1
  82. wagtail/admin/static/wagtailadmin/js/page-chooser-telepath.js +1 -1
  83. wagtail/admin/static/wagtailadmin/js/page-chooser.js +1 -1
  84. wagtail/admin/static/wagtailadmin/js/preview-panel.js +2 -1
  85. wagtail/admin/static/wagtailadmin/js/preview-panel.js.LICENSE.txt +11 -0
  86. wagtail/admin/static/wagtailadmin/js/privacy-switch.js +1 -1
  87. wagtail/admin/static/wagtailadmin/js/sidebar.js +1 -1
  88. wagtail/admin/static/wagtailadmin/js/task-chooser-modal.js +1 -1
  89. wagtail/admin/static/wagtailadmin/js/task-chooser.js +1 -1
  90. wagtail/admin/static/wagtailadmin/js/telepath/blocks.js +1 -1
  91. wagtail/admin/static/wagtailadmin/js/telepath/widgets.js +1 -1
  92. wagtail/admin/static/wagtailadmin/js/userbar.js +2 -1
  93. wagtail/admin/static/wagtailadmin/js/userbar.js.LICENSE.txt +11 -0
  94. wagtail/admin/static/wagtailadmin/js/vendor.js +1 -1
  95. wagtail/admin/static/wagtailadmin/js/vendor.js.LICENSE.txt +0 -12
  96. wagtail/admin/static/wagtailadmin/js/wagtailadmin.js +1 -1
  97. wagtail/admin/static/wagtailadmin/js/workflow-action.js +1 -1
  98. wagtail/admin/templates/wagtailadmin/collection_privacy/ancestor_privacy.html +2 -6
  99. wagtail/admin/templates/wagtailadmin/generic/index_results.html +1 -17
  100. wagtail/admin/templates/wagtailadmin/generic/listing_results.html +20 -1
  101. wagtail/admin/templates/wagtailadmin/home/workflow_objects_to_moderate.html +2 -11
  102. wagtail/admin/templates/wagtailadmin/page_privacy/ancestor_privacy.html +2 -6
  103. wagtail/admin/templates/wagtailadmin/page_privacy/no_privacy.html +2 -0
  104. wagtail/admin/templates/wagtailadmin/pages/_editor_js.html +0 -1
  105. wagtail/admin/templates/wagtailadmin/pages/action_menu/menu.html +1 -1
  106. wagtail/admin/templates/wagtailadmin/reports/aging_pages_results.html +54 -0
  107. wagtail/admin/templates/wagtailadmin/reports/base_page_report.html +1 -17
  108. wagtail/admin/templates/wagtailadmin/reports/base_page_report_results.html +10 -0
  109. wagtail/admin/templates/wagtailadmin/reports/base_report.html +1 -40
  110. wagtail/admin/templates/wagtailadmin/reports/base_report_results.html +1 -0
  111. wagtail/admin/templates/wagtailadmin/reports/listing/_list_page_report.html +21 -27
  112. wagtail/admin/templates/wagtailadmin/reports/listing/_list_page_types_usage.html +48 -54
  113. wagtail/admin/templates/wagtailadmin/reports/{locked_pages.html → locked_pages_results.html} +3 -3
  114. wagtail/admin/templates/wagtailadmin/reports/page_types_usage_results.html +10 -0
  115. wagtail/admin/templates/wagtailadmin/reports/site_history_results.html +53 -0
  116. wagtail/admin/templates/wagtailadmin/reports/workflow_results.html +74 -0
  117. wagtail/admin/templates/wagtailadmin/reports/workflow_tasks_results.html +56 -0
  118. wagtail/admin/templates/wagtailadmin/shared/_workflow_init.html +8 -44
  119. wagtail/admin/templates/wagtailadmin/shared/avatar.html +11 -1
  120. wagtail/admin/templates/wagtailadmin/shared/dialog/dialog.html +5 -4
  121. wagtail/admin/templates/wagtailadmin/shared/dropdown/dropdown_button.html +2 -1
  122. wagtail/admin/templates/wagtailadmin/shared/editing_sessions/list.html +132 -0
  123. wagtail/admin/templates/wagtailadmin/shared/editing_sessions/module.html +44 -0
  124. wagtail/admin/templates/wagtailadmin/shared/headers/slim_header.html +7 -1
  125. wagtail/admin/templates/wagtailadmin/shared/page_status_tag_new.html +1 -1
  126. wagtail/admin/templates/wagtailadmin/shared/side_panels/checks.html +32 -16
  127. wagtail/admin/templates/wagtailadmin/skeleton.html +1 -1
  128. wagtail/admin/templates/wagtailadmin/userbar/item_accessibility.html +9 -11
  129. wagtail/admin/templatetags/wagtailadmin_tags.py +13 -2
  130. wagtail/admin/tests/formats/en/__init__.py +0 -0
  131. wagtail/admin/tests/formats/en/formats.py +1 -0
  132. wagtail/admin/tests/pages/test_create_page.py +47 -0
  133. wagtail/admin/tests/pages/test_edit_page.py +10 -8
  134. wagtail/admin/tests/pages/test_parent_page_chooser_view.py +45 -1
  135. wagtail/admin/tests/test_checks.py +53 -3
  136. wagtail/admin/tests/test_collections_views.py +62 -1
  137. wagtail/admin/tests/test_edit_handlers.py +37 -0
  138. wagtail/admin/tests/test_editing_sessions.py +1336 -0
  139. wagtail/admin/tests/test_icon_sprite.py +12 -21
  140. wagtail/admin/tests/test_page_chooser.py +309 -7
  141. wagtail/admin/tests/test_privacy.py +82 -0
  142. wagtail/admin/tests/test_reports_views.py +464 -70
  143. wagtail/admin/tests/test_userbar.py +93 -6
  144. wagtail/admin/tests/test_workflows.py +223 -33
  145. wagtail/admin/tests/viewsets/test_model_viewset.py +151 -2
  146. wagtail/admin/ui/editing_sessions.py +57 -0
  147. wagtail/admin/urls/__init__.py +9 -15
  148. wagtail/admin/urls/editing_sessions.py +17 -0
  149. wagtail/admin/urls/reports.py +33 -1
  150. wagtail/admin/userbar.py +77 -20
  151. wagtail/admin/views/chooser.py +49 -22
  152. wagtail/admin/views/collections.py +0 -11
  153. wagtail/admin/views/editing_sessions.py +193 -0
  154. wagtail/admin/views/generic/__init__.py +1 -0
  155. wagtail/admin/views/generic/base.py +3 -2
  156. wagtail/admin/views/generic/history.py +9 -3
  157. wagtail/admin/views/generic/mixins.py +44 -3
  158. wagtail/admin/views/generic/models.py +46 -72
  159. wagtail/admin/views/generic/permissions.py +20 -10
  160. wagtail/admin/views/home.py +2 -31
  161. wagtail/admin/views/page_privacy.py +20 -5
  162. wagtail/admin/views/pages/choose_parent.py +62 -0
  163. wagtail/admin/views/pages/edit.py +28 -0
  164. wagtail/admin/views/reports/aging_pages.py +6 -10
  165. wagtail/admin/views/reports/audit_logging.py +13 -42
  166. wagtail/admin/views/reports/base.py +31 -4
  167. wagtail/admin/views/reports/locked_pages.py +5 -8
  168. wagtail/admin/views/reports/page_types_usage.py +6 -10
  169. wagtail/admin/views/reports/workflows.py +36 -12
  170. wagtail/admin/viewsets/base.py +8 -3
  171. wagtail/admin/viewsets/chooser.py +1 -1
  172. wagtail/admin/viewsets/model.py +26 -1
  173. wagtail/admin/wagtail_hooks.py +2 -1
  174. wagtail/api/v2/filters.py +6 -0
  175. wagtail/api/v2/tests/test_documents.py +1 -1
  176. wagtail/api/v2/tests/test_images.py +1 -1
  177. wagtail/api/v2/tests/test_pages.py +11 -1
  178. wagtail/api/v2/utils.py +2 -2
  179. wagtail/blocks/base.py +35 -12
  180. wagtail/blocks/definition_lookup.py +85 -0
  181. wagtail/blocks/list_block.py +12 -0
  182. wagtail/blocks/migrations/migrate_operation.py +2 -0
  183. wagtail/blocks/stream_block.py +19 -0
  184. wagtail/blocks/struct_block.py +19 -0
  185. wagtail/contrib/forms/locale/be/LC_MESSAGES/django.po +3 -3
  186. wagtail/contrib/forms/locale/en/LC_MESSAGES/django.po +1 -1
  187. wagtail/contrib/forms/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  188. wagtail/contrib/forms/locale/pl/LC_MESSAGES/django.po +3 -3
  189. wagtail/contrib/forms/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  190. wagtail/contrib/forms/locale/pt_BR/LC_MESSAGES/django.po +2 -2
  191. wagtail/contrib/forms/locale/ru/LC_MESSAGES/django.po +3 -3
  192. wagtail/contrib/forms/locale/sl/LC_MESSAGES/django.po +2 -2
  193. wagtail/contrib/frontend_cache/backends/__init__.py +5 -0
  194. wagtail/contrib/frontend_cache/backends/azure.py +179 -0
  195. wagtail/contrib/frontend_cache/backends/base.py +28 -0
  196. wagtail/contrib/frontend_cache/backends/cloudflare.py +114 -0
  197. wagtail/contrib/frontend_cache/backends/cloudfront.py +99 -0
  198. wagtail/contrib/frontend_cache/backends/http.py +64 -0
  199. wagtail/contrib/frontend_cache/tests.py +59 -17
  200. wagtail/contrib/frontend_cache/utils.py +26 -8
  201. wagtail/contrib/redirects/filters.py +15 -1
  202. wagtail/contrib/redirects/locale/ar/LC_MESSAGES/django.po +4 -4
  203. wagtail/contrib/redirects/locale/be/LC_MESSAGES/django.po +3 -3
  204. wagtail/contrib/redirects/locale/bg/LC_MESSAGES/django.po +4 -4
  205. wagtail/contrib/redirects/locale/ca/LC_MESSAGES/django.po +4 -4
  206. wagtail/contrib/redirects/locale/cs/LC_MESSAGES/django.po +4 -4
  207. wagtail/contrib/redirects/locale/cy/LC_MESSAGES/django.po +6 -6
  208. wagtail/contrib/redirects/locale/de/LC_MESSAGES/django.po +5 -4
  209. wagtail/contrib/redirects/locale/el/LC_MESSAGES/django.po +7 -7
  210. wagtail/contrib/redirects/locale/en/LC_MESSAGES/django.po +37 -72
  211. wagtail/contrib/redirects/locale/es/LC_MESSAGES/django.po +6 -6
  212. wagtail/contrib/redirects/locale/et/LC_MESSAGES/django.po +4 -4
  213. wagtail/contrib/redirects/locale/fa/LC_MESSAGES/django.mo +0 -0
  214. wagtail/contrib/redirects/locale/fa/LC_MESSAGES/django.po +18 -5
  215. wagtail/contrib/redirects/locale/fi/LC_MESSAGES/django.po +6 -6
  216. wagtail/contrib/redirects/locale/fr/LC_MESSAGES/django.po +4 -4
  217. wagtail/contrib/redirects/locale/gl/LC_MESSAGES/django.po +4 -4
  218. wagtail/contrib/redirects/locale/hr_HR/LC_MESSAGES/django.po +8 -8
  219. wagtail/contrib/redirects/locale/hu/LC_MESSAGES/django.po +6 -6
  220. wagtail/contrib/redirects/locale/id_ID/LC_MESSAGES/django.po +4 -4
  221. wagtail/contrib/redirects/locale/is_IS/LC_MESSAGES/django.po +6 -6
  222. wagtail/contrib/redirects/locale/it/LC_MESSAGES/django.po +4 -4
  223. wagtail/contrib/redirects/locale/ja/LC_MESSAGES/django.po +2 -2
  224. wagtail/contrib/redirects/locale/ko/LC_MESSAGES/django.po +4 -4
  225. wagtail/contrib/redirects/locale/lt/LC_MESSAGES/django.po +4 -4
  226. wagtail/contrib/redirects/locale/mn/LC_MESSAGES/django.po +4 -4
  227. wagtail/contrib/redirects/locale/nb/LC_MESSAGES/django.po +4 -4
  228. wagtail/contrib/redirects/locale/nl/LC_MESSAGES/django.po +4 -4
  229. wagtail/contrib/redirects/locale/pl/LC_MESSAGES/django.po +9 -9
  230. wagtail/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po +5 -5
  231. wagtail/contrib/redirects/locale/pt_PT/LC_MESSAGES/django.po +4 -4
  232. wagtail/contrib/redirects/locale/ro/LC_MESSAGES/django.po +4 -4
  233. wagtail/contrib/redirects/locale/ru/LC_MESSAGES/django.po +7 -7
  234. wagtail/contrib/redirects/locale/sk_SK/LC_MESSAGES/django.po +4 -4
  235. wagtail/contrib/redirects/locale/sl/LC_MESSAGES/django.po +6 -6
  236. wagtail/contrib/redirects/locale/sr/LC_MESSAGES/django.po +2 -2
  237. wagtail/contrib/redirects/locale/sv/LC_MESSAGES/django.po +4 -4
  238. wagtail/contrib/redirects/locale/tet/LC_MESSAGES/django.po +4 -4
  239. wagtail/contrib/redirects/locale/th/LC_MESSAGES/django.po +4 -4
  240. wagtail/contrib/redirects/locale/tr/LC_MESSAGES/django.po +4 -4
  241. wagtail/contrib/redirects/locale/tr_TR/LC_MESSAGES/django.po +4 -4
  242. wagtail/contrib/redirects/locale/uk/LC_MESSAGES/django.po +4 -4
  243. wagtail/contrib/redirects/locale/zh/LC_MESSAGES/django.po +4 -4
  244. wagtail/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.po +4 -4
  245. wagtail/contrib/redirects/locale/zh_Hant/LC_MESSAGES/django.po +4 -4
  246. wagtail/contrib/redirects/models.py +6 -5
  247. wagtail/contrib/redirects/templates/wagtailredirects/edit.html +1 -38
  248. wagtail/contrib/redirects/tests/test_redirects.py +141 -1
  249. wagtail/contrib/redirects/urls.py +1 -2
  250. wagtail/contrib/redirects/views.py +39 -80
  251. wagtail/contrib/routable_page/models.py +6 -4
  252. wagtail/contrib/routable_page/tests.py +11 -0
  253. wagtail/contrib/search_promotions/locale/ar/LC_MESSAGES/django.po +4 -4
  254. wagtail/contrib/search_promotions/locale/be/LC_MESSAGES/django.po +7 -7
  255. wagtail/contrib/search_promotions/locale/ca/LC_MESSAGES/django.po +8 -8
  256. wagtail/contrib/search_promotions/locale/cs/LC_MESSAGES/django.po +2 -2
  257. wagtail/contrib/search_promotions/locale/cy/LC_MESSAGES/django.po +4 -4
  258. wagtail/contrib/search_promotions/locale/de/LC_MESSAGES/django.po +6 -6
  259. wagtail/contrib/search_promotions/locale/el/LC_MESSAGES/django.po +4 -4
  260. wagtail/contrib/search_promotions/locale/en/LC_MESSAGES/django.po +1 -1
  261. wagtail/contrib/search_promotions/locale/es/LC_MESSAGES/django.po +6 -6
  262. wagtail/contrib/search_promotions/locale/et/LC_MESSAGES/django.po +4 -4
  263. wagtail/contrib/search_promotions/locale/fa/LC_MESSAGES/django.po +4 -4
  264. wagtail/contrib/search_promotions/locale/fi/LC_MESSAGES/django.po +6 -6
  265. wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.mo +0 -0
  266. wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.po +9 -6
  267. wagtail/contrib/search_promotions/locale/gl/LC_MESSAGES/django.po +6 -6
  268. wagtail/contrib/search_promotions/locale/hr_HR/LC_MESSAGES/django.po +8 -8
  269. wagtail/contrib/search_promotions/locale/hu/LC_MESSAGES/django.po +4 -4
  270. wagtail/contrib/search_promotions/locale/id_ID/LC_MESSAGES/django.po +4 -4
  271. wagtail/contrib/search_promotions/locale/is_IS/LC_MESSAGES/django.po +8 -8
  272. wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.po +6 -6
  273. wagtail/contrib/search_promotions/locale/ja/LC_MESSAGES/django.po +4 -4
  274. wagtail/contrib/search_promotions/locale/ko/LC_MESSAGES/django.po +4 -4
  275. wagtail/contrib/search_promotions/locale/lt/LC_MESSAGES/django.po +6 -6
  276. wagtail/contrib/search_promotions/locale/nb/LC_MESSAGES/django.po +4 -4
  277. wagtail/contrib/search_promotions/locale/nl/LC_MESSAGES/django.po +6 -6
  278. wagtail/contrib/search_promotions/locale/pl/LC_MESSAGES/django.po +9 -9
  279. wagtail/contrib/search_promotions/locale/pt_BR/LC_MESSAGES/django.po +4 -4
  280. wagtail/contrib/search_promotions/locale/pt_PT/LC_MESSAGES/django.po +4 -4
  281. wagtail/contrib/search_promotions/locale/ro/LC_MESSAGES/django.po +4 -4
  282. wagtail/contrib/search_promotions/locale/ru/LC_MESSAGES/django.po +9 -9
  283. wagtail/contrib/search_promotions/locale/sk_SK/LC_MESSAGES/django.po +4 -4
  284. wagtail/contrib/search_promotions/locale/sl/LC_MESSAGES/django.mo +0 -0
  285. wagtail/contrib/search_promotions/locale/sl/LC_MESSAGES/django.po +62 -8
  286. wagtail/contrib/search_promotions/locale/sr/LC_MESSAGES/django.po +2 -2
  287. wagtail/contrib/search_promotions/locale/sv/LC_MESSAGES/django.mo +0 -0
  288. wagtail/contrib/search_promotions/locale/sv/LC_MESSAGES/django.po +9 -6
  289. wagtail/contrib/search_promotions/locale/th/LC_MESSAGES/django.po +4 -4
  290. wagtail/contrib/search_promotions/locale/tr/LC_MESSAGES/django.po +4 -4
  291. wagtail/contrib/search_promotions/locale/tr_TR/LC_MESSAGES/django.po +4 -4
  292. wagtail/contrib/search_promotions/locale/uk/LC_MESSAGES/django.po +4 -4
  293. wagtail/contrib/search_promotions/locale/zh_Hans/LC_MESSAGES/django.po +2 -2
  294. wagtail/contrib/search_promotions/locale/zh_Hant/LC_MESSAGES/django.po +2 -2
  295. wagtail/contrib/settings/locale/be/LC_MESSAGES/django.po +3 -3
  296. wagtail/contrib/settings/locale/en/LC_MESSAGES/django.po +4 -4
  297. wagtail/contrib/settings/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  298. wagtail/contrib/settings/locale/pl/LC_MESSAGES/django.po +3 -3
  299. wagtail/contrib/settings/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  300. wagtail/contrib/settings/locale/ru/LC_MESSAGES/django.po +3 -3
  301. wagtail/contrib/settings/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  302. wagtail/contrib/settings/locale/sk_SK/LC_MESSAGES/django.po +10 -1
  303. wagtail/contrib/settings/locale/sl/LC_MESSAGES/django.po +2 -2
  304. wagtail/contrib/settings/locale/sr/LC_MESSAGES/django.po +2 -2
  305. wagtail/contrib/simple_translation/locale/be/LC_MESSAGES/django.po +3 -3
  306. wagtail/contrib/simple_translation/locale/en/LC_MESSAGES/django.po +5 -1
  307. wagtail/contrib/simple_translation/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  308. wagtail/contrib/simple_translation/locale/pl/LC_MESSAGES/django.po +3 -3
  309. wagtail/contrib/simple_translation/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  310. wagtail/contrib/simple_translation/locale/ru/LC_MESSAGES/django.po +3 -3
  311. wagtail/contrib/simple_translation/locale/sl/LC_MESSAGES/django.po +2 -2
  312. wagtail/contrib/simple_translation/models.py +2 -1
  313. wagtail/contrib/styleguide/locale/be/LC_MESSAGES/django.po +3 -3
  314. wagtail/contrib/styleguide/locale/en/LC_MESSAGES/django.po +7 -7
  315. wagtail/contrib/styleguide/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  316. wagtail/contrib/styleguide/locale/pl/LC_MESSAGES/django.po +3 -3
  317. wagtail/contrib/styleguide/locale/ru/LC_MESSAGES/django.po +3 -3
  318. wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  319. wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.po +5 -1
  320. wagtail/contrib/styleguide/locale/sl/LC_MESSAGES/django.po +2 -2
  321. wagtail/contrib/styleguide/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  322. wagtail/contrib/styleguide/locale/zh_Hans/LC_MESSAGES/django.po +3 -0
  323. wagtail/contrib/table_block/locale/be/LC_MESSAGES/django.po +3 -3
  324. wagtail/contrib/table_block/locale/en/LC_MESSAGES/django.po +1 -1
  325. wagtail/contrib/table_block/locale/fr/LC_MESSAGES/django.mo +0 -0
  326. wagtail/contrib/table_block/locale/fr/LC_MESSAGES/django.po +27 -1
  327. wagtail/contrib/table_block/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  328. wagtail/contrib/table_block/locale/pl/LC_MESSAGES/django.po +3 -3
  329. wagtail/contrib/table_block/locale/ru/LC_MESSAGES/django.po +3 -3
  330. wagtail/contrib/table_block/locale/sl/LC_MESSAGES/django.mo +0 -0
  331. wagtail/contrib/table_block/locale/sl/LC_MESSAGES/django.po +29 -3
  332. wagtail/contrib/table_block/static/table_block/js/table.js +1 -1
  333. wagtail/contrib/typed_table_block/blocks.py +19 -0
  334. wagtail/contrib/typed_table_block/locale/be/LC_MESSAGES/django.po +3 -3
  335. wagtail/contrib/typed_table_block/locale/en/LC_MESSAGES/django.po +10 -10
  336. wagtail/contrib/typed_table_block/locale/fr/LC_MESSAGES/django.mo +0 -0
  337. wagtail/contrib/typed_table_block/locale/fr/LC_MESSAGES/django.po +12 -1
  338. wagtail/contrib/typed_table_block/locale/pl/LC_MESSAGES/django.po +3 -3
  339. wagtail/contrib/typed_table_block/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  340. wagtail/contrib/typed_table_block/locale/ru/LC_MESSAGES/django.po +3 -3
  341. wagtail/contrib/typed_table_block/locale/sl/LC_MESSAGES/django.mo +0 -0
  342. wagtail/contrib/typed_table_block/locale/sl/LC_MESSAGES/django.po +14 -4
  343. wagtail/contrib/typed_table_block/static/typed_table_block/js/typed_table_block.js +1 -1
  344. wagtail/contrib/typed_table_block/tests.py +38 -0
  345. wagtail/coreutils.py +1 -1
  346. wagtail/documents/__init__.py +1 -1
  347. wagtail/documents/locale/ar/LC_MESSAGES/django.po +8 -8
  348. wagtail/documents/locale/be/LC_MESSAGES/django.po +11 -11
  349. wagtail/documents/locale/bg/LC_MESSAGES/django.po +4 -4
  350. wagtail/documents/locale/ca/LC_MESSAGES/django.mo +0 -0
  351. wagtail/documents/locale/ca/LC_MESSAGES/django.po +12 -11
  352. wagtail/documents/locale/cs/LC_MESSAGES/django.po +6 -6
  353. wagtail/documents/locale/de/LC_MESSAGES/django.po +10 -8
  354. wagtail/documents/locale/el/LC_MESSAGES/django.po +8 -8
  355. wagtail/documents/locale/en/LC_MESSAGES/django.po +8 -8
  356. wagtail/documents/locale/es/LC_MESSAGES/django.po +8 -8
  357. wagtail/documents/locale/et/LC_MESSAGES/django.po +6 -6
  358. wagtail/documents/locale/fa/LC_MESSAGES/django.mo +0 -0
  359. wagtail/documents/locale/fa/LC_MESSAGES/django.po +17 -8
  360. wagtail/documents/locale/fi/LC_MESSAGES/django.po +10 -10
  361. wagtail/documents/locale/fr/LC_MESSAGES/django.po +6 -6
  362. wagtail/documents/locale/gl/LC_MESSAGES/django.po +8 -8
  363. wagtail/documents/locale/hr_HR/LC_MESSAGES/django.po +14 -14
  364. wagtail/documents/locale/hu/LC_MESSAGES/django.po +12 -12
  365. wagtail/documents/locale/id_ID/LC_MESSAGES/django.po +6 -6
  366. wagtail/documents/locale/is_IS/LC_MESSAGES/django.po +8 -8
  367. wagtail/documents/locale/it/LC_MESSAGES/django.po +8 -8
  368. wagtail/documents/locale/ja/LC_MESSAGES/django.po +8 -8
  369. wagtail/documents/locale/ko/LC_MESSAGES/django.po +8 -8
  370. wagtail/documents/locale/lt/LC_MESSAGES/django.po +8 -8
  371. wagtail/documents/locale/mi/LC_MESSAGES/django.po +10 -10
  372. wagtail/documents/locale/mn/LC_MESSAGES/django.po +5 -4
  373. wagtail/documents/locale/nb/LC_MESSAGES/django.po +6 -6
  374. wagtail/documents/locale/nl/LC_MESSAGES/django.po +8 -8
  375. wagtail/documents/locale/pl/LC_MESSAGES/django.po +11 -11
  376. wagtail/documents/locale/pt_BR/LC_MESSAGES/django.po +8 -8
  377. wagtail/documents/locale/pt_PT/LC_MESSAGES/django.po +8 -8
  378. wagtail/documents/locale/ro/LC_MESSAGES/django.po +8 -8
  379. wagtail/documents/locale/ru/LC_MESSAGES/django.po +9 -9
  380. wagtail/documents/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  381. wagtail/documents/locale/sk_SK/LC_MESSAGES/django.po +55 -12
  382. wagtail/documents/locale/sl/LC_MESSAGES/django.mo +0 -0
  383. wagtail/documents/locale/sl/LC_MESSAGES/django.po +30 -10
  384. wagtail/documents/locale/sr/LC_MESSAGES/django.po +2 -2
  385. wagtail/documents/locale/sv/LC_MESSAGES/django.po +6 -6
  386. wagtail/documents/locale/th/LC_MESSAGES/django.po +8 -8
  387. wagtail/documents/locale/tr/LC_MESSAGES/django.po +8 -8
  388. wagtail/documents/locale/tr_TR/LC_MESSAGES/django.po +8 -8
  389. wagtail/documents/locale/uk/LC_MESSAGES/django.po +8 -8
  390. wagtail/documents/locale/zh/LC_MESSAGES/django.po +2 -2
  391. wagtail/documents/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  392. wagtail/documents/locale/zh_Hans/LC_MESSAGES/django.po +11 -5
  393. wagtail/documents/locale/zh_Hant/LC_MESSAGES/django.po +4 -4
  394. wagtail/documents/models.py +5 -1
  395. wagtail/documents/static/wagtaildocs/js/document-chooser-modal.js +1 -1
  396. wagtail/documents/static/wagtaildocs/js/document-chooser-telepath.js +1 -1
  397. wagtail/documents/static/wagtaildocs/js/document-chooser.js +1 -1
  398. wagtail/documents/tests/test_models.py +5 -1
  399. wagtail/embeds/apps.py +2 -0
  400. wagtail/embeds/embeds.py +12 -14
  401. wagtail/embeds/finders/__init__.py +2 -0
  402. wagtail/embeds/finders/facebook.py +17 -33
  403. wagtail/embeds/finders/instagram.py +19 -16
  404. wagtail/embeds/locale/be/LC_MESSAGES/django.po +3 -3
  405. wagtail/embeds/locale/en/LC_MESSAGES/django.po +1 -1
  406. wagtail/embeds/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  407. wagtail/embeds/locale/pl/LC_MESSAGES/django.po +3 -3
  408. wagtail/embeds/locale/ru/LC_MESSAGES/django.po +3 -3
  409. wagtail/embeds/locale/sl/LC_MESSAGES/django.po +2 -2
  410. wagtail/embeds/signal_handlers.py +13 -0
  411. wagtail/embeds/tests/test_embeds.py +7 -7
  412. wagtail/fields.py +58 -14
  413. wagtail/images/__init__.py +1 -1
  414. wagtail/images/locale/ar/LC_MESSAGES/django.po +6 -6
  415. wagtail/images/locale/be/LC_MESSAGES/django.po +3 -3
  416. wagtail/images/locale/ca/LC_MESSAGES/django.po +8 -8
  417. wagtail/images/locale/cs/LC_MESSAGES/django.po +8 -8
  418. wagtail/images/locale/cy/LC_MESSAGES/django.po +8 -8
  419. wagtail/images/locale/de/LC_MESSAGES/django.po +6 -6
  420. wagtail/images/locale/el/LC_MESSAGES/django.po +8 -8
  421. wagtail/images/locale/en/LC_MESSAGES/django.po +34 -34
  422. wagtail/images/locale/es/LC_MESSAGES/django.po +10 -10
  423. wagtail/images/locale/et/LC_MESSAGES/django.po +8 -8
  424. wagtail/images/locale/fa/LC_MESSAGES/django.mo +0 -0
  425. wagtail/images/locale/fa/LC_MESSAGES/django.po +28 -9
  426. wagtail/images/locale/fi/LC_MESSAGES/django.po +8 -8
  427. wagtail/images/locale/fr/LC_MESSAGES/django.po +6 -6
  428. wagtail/images/locale/gl/LC_MESSAGES/django.po +8 -8
  429. wagtail/images/locale/hr_HR/LC_MESSAGES/django.po +8 -8
  430. wagtail/images/locale/hu/LC_MESSAGES/django.po +8 -8
  431. wagtail/images/locale/id_ID/LC_MESSAGES/django.po +6 -6
  432. wagtail/images/locale/is_IS/LC_MESSAGES/django.po +8 -8
  433. wagtail/images/locale/it/LC_MESSAGES/django.po +8 -8
  434. wagtail/images/locale/ja/LC_MESSAGES/django.po +8 -8
  435. wagtail/images/locale/ko/LC_MESSAGES/django.po +6 -6
  436. wagtail/images/locale/lt/LC_MESSAGES/django.po +8 -8
  437. wagtail/images/locale/nb/LC_MESSAGES/django.po +8 -8
  438. wagtail/images/locale/nl/LC_MESSAGES/django.po +8 -8
  439. wagtail/images/locale/pl/LC_MESSAGES/django.po +11 -11
  440. wagtail/images/locale/pt_BR/LC_MESSAGES/django.po +8 -8
  441. wagtail/images/locale/pt_PT/LC_MESSAGES/django.po +8 -8
  442. wagtail/images/locale/ro/LC_MESSAGES/django.po +8 -8
  443. wagtail/images/locale/ru/LC_MESSAGES/django.po +11 -11
  444. wagtail/images/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  445. wagtail/images/locale/sk_SK/LC_MESSAGES/django.po +23 -8
  446. wagtail/images/locale/sl/LC_MESSAGES/django.mo +0 -0
  447. wagtail/images/locale/sl/LC_MESSAGES/django.po +44 -12
  448. wagtail/images/locale/sv/LC_MESSAGES/django.mo +0 -0
  449. wagtail/images/locale/sv/LC_MESSAGES/django.po +20 -8
  450. wagtail/images/locale/tet/LC_MESSAGES/django.po +4 -4
  451. wagtail/images/locale/th/LC_MESSAGES/django.po +8 -8
  452. wagtail/images/locale/tr/LC_MESSAGES/django.po +6 -6
  453. wagtail/images/locale/tr_TR/LC_MESSAGES/django.po +6 -6
  454. wagtail/images/locale/uk/LC_MESSAGES/django.po +8 -8
  455. wagtail/images/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  456. wagtail/images/locale/zh_Hans/LC_MESSAGES/django.po +49 -5
  457. wagtail/images/locale/zh_Hant/LC_MESSAGES/django.po +4 -4
  458. wagtail/images/models.py +3 -0
  459. wagtail/images/static/wagtailimages/js/image-chooser-modal.js +1 -1
  460. wagtail/images/static/wagtailimages/js/image-chooser-telepath.js +1 -1
  461. wagtail/images/static/wagtailimages/js/image-chooser.js +1 -1
  462. wagtail/images/templates/wagtailimages/images/edit.html +4 -4
  463. wagtail/images/tests/test_admin_views.py +58 -2
  464. wagtail/images/tests/test_image_operations.py +12 -0
  465. wagtail/images/tests/tests.py +27 -2
  466. wagtail/images/views/chooser.py +6 -1
  467. wagtail/images/views/images.py +7 -3
  468. wagtail/images/views/serve.py +1 -0
  469. wagtail/locale/be/LC_MESSAGES/django.po +3 -3
  470. wagtail/locale/en/LC_MESSAGES/django.po +84 -80
  471. wagtail/locale/fa/LC_MESSAGES/django.mo +0 -0
  472. wagtail/locale/fa/LC_MESSAGES/django.po +3 -0
  473. wagtail/locale/fr/LC_MESSAGES/django.mo +0 -0
  474. wagtail/locale/fr/LC_MESSAGES/django.po +23 -4
  475. wagtail/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  476. wagtail/locale/pl/LC_MESSAGES/django.po +3 -3
  477. wagtail/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  478. wagtail/locale/ru/LC_MESSAGES/django.po +3 -3
  479. wagtail/locale/sl/LC_MESSAGES/django.po +2 -2
  480. wagtail/locale/sv/LC_MESSAGES/django.mo +0 -0
  481. wagtail/locale/sv/LC_MESSAGES/django.po +11 -2
  482. wagtail/locales/locale/be/LC_MESSAGES/django.po +3 -3
  483. wagtail/locales/locale/en/LC_MESSAGES/django.po +2 -2
  484. wagtail/locales/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  485. wagtail/locales/locale/pl/LC_MESSAGES/django.po +3 -3
  486. wagtail/locales/locale/ru/LC_MESSAGES/django.po +3 -3
  487. wagtail/locales/locale/sl/LC_MESSAGES/django.po +2 -2
  488. wagtail/locales/tests.py +16 -0
  489. wagtail/locales/wagtail_hooks.py +0 -9
  490. wagtail/migrations/0094_alter_page_locale.py +19 -0
  491. wagtail/models/__init__.py +11 -5
  492. wagtail/models/i18n.py +6 -1
  493. wagtail/project_template/requirements.txt +1 -1
  494. wagtail/search/locale/be/LC_MESSAGES/django.po +3 -3
  495. wagtail/search/locale/en/LC_MESSAGES/django.po +1 -1
  496. wagtail/search/locale/fa/LC_MESSAGES/django.mo +0 -0
  497. wagtail/search/locale/fa/LC_MESSAGES/django.po +24 -0
  498. wagtail/search/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  499. wagtail/search/locale/pl/LC_MESSAGES/django.po +3 -3
  500. wagtail/search/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  501. wagtail/search/locale/pt_BR/LC_MESSAGES/django.po +2 -2
  502. wagtail/search/locale/ru/LC_MESSAGES/django.po +3 -3
  503. wagtail/search/locale/sl/LC_MESSAGES/django.po +2 -2
  504. wagtail/search/tests/test_queries.py +24 -0
  505. wagtail/search/utils.py +6 -12
  506. wagtail/signals.py +4 -0
  507. wagtail/sites/locale/be/LC_MESSAGES/django.po +3 -3
  508. wagtail/sites/locale/en/LC_MESSAGES/django.po +2 -2
  509. wagtail/sites/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  510. wagtail/sites/locale/pl/LC_MESSAGES/django.po +3 -3
  511. wagtail/sites/locale/ru/LC_MESSAGES/django.po +3 -3
  512. wagtail/sites/locale/sl/LC_MESSAGES/django.po +2 -2
  513. wagtail/sites/locale/sr/LC_MESSAGES/django.po +2 -2
  514. wagtail/sites/tests.py +15 -0
  515. wagtail/sites/wagtail_hooks.py +0 -9
  516. wagtail/snippets/locale/be/LC_MESSAGES/django.po +3 -3
  517. wagtail/snippets/locale/ca/LC_MESSAGES/django.po +6 -6
  518. wagtail/snippets/locale/de/LC_MESSAGES/django.po +5 -5
  519. wagtail/snippets/locale/en/LC_MESSAGES/django.po +9 -9
  520. wagtail/snippets/locale/es/LC_MESSAGES/django.po +6 -6
  521. wagtail/snippets/locale/fa/LC_MESSAGES/django.mo +0 -0
  522. wagtail/snippets/locale/fa/LC_MESSAGES/django.po +17 -1
  523. wagtail/snippets/locale/fr/LC_MESSAGES/django.po +5 -5
  524. wagtail/snippets/locale/gl/LC_MESSAGES/django.po +6 -6
  525. wagtail/snippets/locale/hr_HR/LC_MESSAGES/django.po +8 -8
  526. wagtail/snippets/locale/hu/LC_MESSAGES/django.po +7 -7
  527. wagtail/snippets/locale/is_IS/LC_MESSAGES/django.po +5 -5
  528. wagtail/snippets/locale/it/LC_MESSAGES/django.po +5 -5
  529. wagtail/snippets/locale/ko/LC_MESSAGES/django.po +6 -6
  530. wagtail/snippets/locale/nb/LC_MESSAGES/django.po +6 -6
  531. wagtail/snippets/locale/nl/LC_MESSAGES/django.po +8 -8
  532. wagtail/snippets/locale/pl/LC_MESSAGES/django.po +9 -9
  533. wagtail/snippets/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  534. wagtail/snippets/locale/ro/LC_MESSAGES/django.po +6 -6
  535. wagtail/snippets/locale/ru/LC_MESSAGES/django.po +8 -8
  536. wagtail/snippets/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  537. wagtail/snippets/locale/sk_SK/LC_MESSAGES/django.po +3 -0
  538. wagtail/snippets/locale/sl/LC_MESSAGES/django.po +8 -8
  539. wagtail/snippets/locale/sr/LC_MESSAGES/django.po +2 -2
  540. wagtail/snippets/locale/sv/LC_MESSAGES/django.po +6 -6
  541. wagtail/snippets/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  542. wagtail/snippets/locale/zh_Hans/LC_MESSAGES/django.po +40 -1
  543. wagtail/snippets/permissions.py +5 -3
  544. wagtail/snippets/static/wagtailsnippets/js/snippet-chooser-telepath.js +1 -1
  545. wagtail/snippets/static/wagtailsnippets/js/snippet-chooser.js +1 -1
  546. wagtail/snippets/templates/wagtailsnippets/snippets/action_menu/menu.html +1 -1
  547. wagtail/snippets/tests/test_snippets.py +78 -12
  548. wagtail/snippets/tests/test_viewset.py +22 -0
  549. wagtail/snippets/views/snippets.py +19 -14
  550. wagtail/snippets/wagtail_hooks.py +2 -10
  551. wagtail/templatetags/wagtailcore_tags.py +3 -0
  552. wagtail/test/dummy_external_storage.py +1 -1
  553. wagtail/test/i18n/migrations/0003_alter_clusterabletestmodel_locale_and_more.py +40 -0
  554. wagtail/test/routablepage/models.py +4 -0
  555. wagtail/test/snippets/migrations/0012_alter_translatablesnippet_locale.py +20 -0
  556. wagtail/test/testapp/migrations/0038_sociallink.py +52 -0
  557. wagtail/test/testapp/migrations/0039_alter_eventcategory_locale_and_more.py +45 -0
  558. wagtail/test/testapp/models.py +24 -0
  559. wagtail/test/testapp/views.py +1 -0
  560. wagtail/test/testapp/wagtail_hooks.py +9 -0
  561. wagtail/test/urls_multilang.py +6 -1
  562. wagtail/test/urls_multilang_non_root.py +11 -0
  563. wagtail/tests/streamfield_migrations/test_migrations.py +53 -12
  564. wagtail/tests/test_audit_log.py +72 -2
  565. wagtail/tests/test_blocks.py +103 -0
  566. wagtail/tests/test_signals.py +49 -2
  567. wagtail/tests/test_streamfield.py +153 -0
  568. wagtail/tests/test_utils.py +42 -1
  569. wagtail/tests/tests.py +5 -0
  570. wagtail/users/apps.py +1 -0
  571. wagtail/users/forms.py +7 -0
  572. wagtail/users/locale/ar/LC_MESSAGES/django.po +4 -4
  573. wagtail/users/locale/be/LC_MESSAGES/django.po +9 -9
  574. wagtail/users/locale/ca/LC_MESSAGES/django.po +8 -8
  575. wagtail/users/locale/cs/LC_MESSAGES/django.po +6 -6
  576. wagtail/users/locale/cy/LC_MESSAGES/django.po +8 -8
  577. wagtail/users/locale/de/LC_MESSAGES/django.po +8 -8
  578. wagtail/users/locale/el/LC_MESSAGES/django.po +4 -4
  579. wagtail/users/locale/en/LC_MESSAGES/django.po +55 -50
  580. wagtail/users/locale/es/LC_MESSAGES/django.po +8 -8
  581. wagtail/users/locale/et/LC_MESSAGES/django.po +8 -8
  582. wagtail/users/locale/fa/LC_MESSAGES/django.mo +0 -0
  583. wagtail/users/locale/fa/LC_MESSAGES/django.po +69 -7
  584. wagtail/users/locale/fi/LC_MESSAGES/django.po +8 -8
  585. wagtail/users/locale/fr/LC_MESSAGES/django.mo +0 -0
  586. wagtail/users/locale/fr/LC_MESSAGES/django.po +52 -11
  587. wagtail/users/locale/gl/LC_MESSAGES/django.po +8 -8
  588. wagtail/users/locale/hr_HR/LC_MESSAGES/django.po +10 -10
  589. wagtail/users/locale/hu/LC_MESSAGES/django.po +8 -8
  590. wagtail/users/locale/id_ID/LC_MESSAGES/django.po +4 -4
  591. wagtail/users/locale/is_IS/LC_MESSAGES/django.po +8 -8
  592. wagtail/users/locale/it/LC_MESSAGES/django.po +8 -8
  593. wagtail/users/locale/ja/LC_MESSAGES/django.po +4 -4
  594. wagtail/users/locale/ko/LC_MESSAGES/django.po +4 -4
  595. wagtail/users/locale/lt/LC_MESSAGES/django.po +4 -4
  596. wagtail/users/locale/lv/LC_MESSAGES/django.po +4 -4
  597. wagtail/users/locale/mn/LC_MESSAGES/django.po +5 -4
  598. wagtail/users/locale/nb/LC_MESSAGES/django.po +8 -8
  599. wagtail/users/locale/nl/LC_MESSAGES/django.po +6 -6
  600. wagtail/users/locale/pl/LC_MESSAGES/django.po +9 -9
  601. wagtail/users/locale/pt_BR/LC_MESSAGES/django.po +9 -9
  602. wagtail/users/locale/pt_PT/LC_MESSAGES/django.po +8 -8
  603. wagtail/users/locale/ro/LC_MESSAGES/django.po +8 -8
  604. wagtail/users/locale/ru/LC_MESSAGES/django.po +11 -11
  605. wagtail/users/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  606. wagtail/users/locale/sk_SK/LC_MESSAGES/django.po +12 -5
  607. wagtail/users/locale/sl/LC_MESSAGES/django.mo +0 -0
  608. wagtail/users/locale/sl/LC_MESSAGES/django.po +56 -12
  609. wagtail/users/locale/sv/LC_MESSAGES/django.mo +0 -0
  610. wagtail/users/locale/sv/LC_MESSAGES/django.po +49 -10
  611. wagtail/users/locale/tet/LC_MESSAGES/django.po +4 -4
  612. wagtail/users/locale/th/LC_MESSAGES/django.po +4 -4
  613. wagtail/users/locale/tr/LC_MESSAGES/django.po +4 -4
  614. wagtail/users/locale/tr_TR/LC_MESSAGES/django.po +4 -4
  615. wagtail/users/locale/uk/LC_MESSAGES/django.po +8 -8
  616. wagtail/users/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  617. wagtail/users/locale/zh_Hans/LC_MESSAGES/django.po +49 -5
  618. wagtail/users/locale/zh_Hant/LC_MESSAGES/django.po +2 -2
  619. wagtail/users/models.py +1 -0
  620. wagtail/users/templates/wagtailusers/groups/includes/formatted_permissions.html +3 -2
  621. wagtail/users/templatetags/wagtailusers_tags.py +9 -0
  622. wagtail/users/tests/__init__.py +7 -1
  623. wagtail/users/tests/test_admin_views.py +117 -32
  624. wagtail/users/views/groups.py +4 -0
  625. wagtail/users/views/users.py +58 -14
  626. wagtail/users/wagtail_hooks.py +7 -123
  627. wagtail/utils/utils.py +27 -0
  628. wagtail/utils/version.py +5 -2
  629. wagtail-6.2rc1.dist-info/METADATA +78 -0
  630. {wagtail-6.1.2.dist-info → wagtail-6.2rc1.dist-info}/RECORD +634 -607
  631. {wagtail-6.1.2.dist-info → wagtail-6.2rc1.dist-info}/WHEEL +1 -1
  632. wagtail/admin/templates/wagtailadmin/reports/aging_pages.html +0 -58
  633. wagtail/admin/templates/wagtailadmin/reports/page_types_usage.html +0 -18
  634. wagtail/admin/templates/wagtailadmin/reports/site_history.html +0 -57
  635. wagtail/admin/templates/wagtailadmin/reports/workflow.html +0 -81
  636. wagtail/admin/templates/wagtailadmin/reports/workflow_tasks.html +0 -63
  637. wagtail/contrib/frontend_cache/backends.py +0 -400
  638. wagtail/contrib/redirects/templates/wagtailredirects/list.html +0 -43
  639. wagtail/contrib/redirects/templates/wagtailredirects/reports/redirects_report.html +0 -14
  640. wagtail/contrib/redirects/tests/test_reports_view.py +0 -82
  641. wagtail-6.1.2.dist-info/METADATA +0 -78
  642. {wagtail-6.1.2.dist-info → wagtail-6.2rc1.dist-info}/LICENSE +0 -0
  643. {wagtail-6.1.2.dist-info → wagtail-6.2rc1.dist-info}/entry_points.txt +0 -0
  644. {wagtail-6.1.2.dist-info → wagtail-6.2rc1.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,5 @@
1
1
  import os
2
+ from typing import List
2
3
 
3
4
  from django.core.exceptions import PermissionDenied, SuspiciousOperation
4
5
  from django.db import transaction
@@ -16,7 +17,6 @@ from wagtail.admin.auth import PermissionPolicyChecker
16
17
  from wagtail.admin.forms.search import SearchForm
17
18
  from wagtail.admin.ui.tables import Column, StatusTagColumn, TitleColumn
18
19
  from wagtail.admin.views import generic
19
- from wagtail.admin.views.reports import ReportView
20
20
  from wagtail.admin.widgets.button import Button
21
21
  from wagtail.contrib.redirects import models
22
22
  from wagtail.contrib.redirects.filters import RedirectsReportFilterSet
@@ -45,12 +45,12 @@ class RedirectTargetColumn(Column):
45
45
  url_name = "wagtailadmin_pages:edit"
46
46
 
47
47
  def get_value(self, instance):
48
- if instance.redirect_page:
48
+ if instance.redirect_page_id:
49
49
  return instance.redirect_page.get_admin_display_title()
50
50
  return instance.redirect_link
51
51
 
52
52
  def get_url(self, instance):
53
- if instance.redirect_page:
53
+ if instance.redirect_page_id:
54
54
  return reverse(self.url_name, args=[instance.redirect_page_id])
55
55
  return None
56
56
 
@@ -105,71 +105,54 @@ class IndexView(generic.IndexView):
105
105
  primary=lambda r: r.is_permanent,
106
106
  ),
107
107
  ]
108
+ filterset_class = RedirectsReportFilterSet
109
+ list_export = [
110
+ "old_path",
111
+ "link",
112
+ "get_is_permanent_display",
113
+ "site",
114
+ ]
115
+ export_headings = {
116
+ "old_path": _("From"),
117
+ "site": _("Site"),
118
+ "link": _("To"),
119
+ "get_is_permanent_display": _("Type"),
120
+ }
108
121
 
109
122
  def get_base_queryset(self):
110
123
  return super().get_base_queryset().select_related("redirect_page", "site")
111
124
 
112
125
  @cached_property
113
- def header_more_buttons(self):
114
- return [
126
+ def header_more_buttons(self) -> List[Button]:
127
+ buttons = super().header_more_buttons.copy()
128
+ buttons.append(
115
129
  Button(
116
130
  _("Import redirects"),
117
131
  url=reverse("wagtailredirects:start_import"),
118
132
  icon_name="doc-full-inverse",
119
- priority=90,
120
- ),
121
- Button(
122
- _("Export redirects"),
123
- url=reverse("wagtailredirects:report"),
124
- icon_name="download",
125
- priority=100,
126
- ),
127
- ]
128
-
129
-
130
- @permission_checker.require("change")
131
- def edit(request, redirect_id):
132
- theredirect = get_object_or_404(models.Redirect, id=redirect_id)
133
+ priority=50,
134
+ )
135
+ )
136
+ return buttons
133
137
 
134
- if not permission_policy.user_has_permission_for_instance(
135
- request.user, "change", theredirect
136
- ):
137
- raise PermissionDenied
138
138
 
139
- if request.method == "POST":
140
- form = RedirectForm(request.POST, request.FILES, instance=theredirect)
141
- if form.is_valid():
142
- with transaction.atomic():
143
- form.save()
144
- log(instance=theredirect, action="wagtail.edit")
145
- messages.success(
146
- request,
147
- _("Redirect '%(redirect_title)s' updated.")
148
- % {"redirect_title": theredirect.title},
149
- buttons=[
150
- messages.button(
151
- reverse("wagtailredirects:edit", args=(theredirect.id,)),
152
- _("Edit"),
153
- )
154
- ],
155
- )
156
- return redirect("wagtailredirects:index")
157
- else:
158
- messages.error(request, _("The redirect could not be saved due to errors."))
159
- else:
160
- form = RedirectForm(instance=theredirect)
139
+ class EditView(generic.EditView):
140
+ model = Redirect
141
+ form_class = RedirectForm
142
+ permission_policy = permission_policy
143
+ template_name = "wagtailredirects/edit.html"
144
+ index_url_name = "wagtailredirects:index"
145
+ edit_url_name = "wagtailredirects:edit"
146
+ delete_url_name = "wagtailredirects:delete"
147
+ pk_url_kwarg = "redirect_id"
148
+ error_message = gettext_lazy("The redirect could not be saved due to errors.")
149
+ header_icon = "redirect"
150
+ _show_breadcrumbs = True
161
151
 
162
- return TemplateResponse(
163
- request,
164
- "wagtailredirects/edit.html",
165
- {
166
- "redirect": theredirect,
167
- "form": form,
168
- "user_can_delete": permission_policy.user_has_permission(
169
- request.user, "delete"
170
- ),
171
- },
172
- )
152
+ def get_success_message(self):
153
+ return _("Redirect '%(redirect_title)s' updated.") % {
154
+ "redirect_title": self.object.title
155
+ }
173
156
 
174
157
 
175
158
  @permission_checker.require("delete")
@@ -444,27 +427,3 @@ def to_readable_errors(error):
444
427
  errors = [x.lstrip("* ") for x in errors]
445
428
  errors = ", ".join(errors)
446
429
  return errors
447
-
448
-
449
- class RedirectsReportView(ReportView):
450
- header_icon = "redirect"
451
- title = _("Export Redirects")
452
- template_name = "wagtailredirects/reports/redirects_report.html"
453
- filterset_class = RedirectsReportFilterSet
454
-
455
- list_export = [
456
- "old_path",
457
- "link",
458
- "get_is_permanent_display",
459
- "site",
460
- ]
461
-
462
- export_headings = {
463
- "old_path": _("From"),
464
- "site": _("Site"),
465
- "link": _("To"),
466
- "get_is_permanent_display": _("Type"),
467
- }
468
-
469
- def get_queryset(self):
470
- return models.Redirect.objects.all().order_by("old_path")
@@ -137,12 +137,12 @@ class RoutablePageMixin:
137
137
  """
138
138
  This method takes a URL path and finds the view to call.
139
139
  """
140
- view, args, kwargs = self.get_resolver().resolve(path)
140
+ resolver_match = self.get_resolver().resolve(path)
141
141
 
142
142
  # Bind the method
143
- view = view.__get__(self, type(self))
143
+ resolver_match.func = resolver_match.func.__get__(self, type(self))
144
144
 
145
- return view, args, kwargs
145
+ return resolver_match
146
146
 
147
147
  def route(self, request, path_components):
148
148
  """
@@ -154,7 +154,9 @@ class RoutablePageMixin:
154
154
  if path_components:
155
155
  path += "/".join(path_components) + "/"
156
156
 
157
- view, args, kwargs = self.resolve_subpage(path)
157
+ resolver_match = self.resolve_subpage(path)
158
+ request.routable_resolver_match = resolver_match
159
+ view, args, kwargs = resolver_match
158
160
  return RouteResult(self, args=(view, args, kwargs))
159
161
  except Http404:
160
162
  pass
@@ -134,6 +134,9 @@ class TestRoutablePage(TestCase):
134
134
  (context["page"], context["self"], context.get("foo")),
135
135
  (self.routable_page, self.routable_page, None),
136
136
  )
137
+ self.assertEqual(
138
+ context["request"].routable_resolver_match.url_name, "index_route"
139
+ )
137
140
 
138
141
  def test_get_render_method_route_view(self):
139
142
  with self.assertTemplateUsed("routablepagetests/routable_page_test.html"):
@@ -157,6 +160,14 @@ class TestRoutablePage(TestCase):
157
160
  (self.routable_page, 1, "fighters"),
158
161
  )
159
162
 
163
+ def test_get_render_method_route_view_with_arg(self):
164
+ response = self.client.get(
165
+ self.routable_page.url + "render-method-with-arg/foo/"
166
+ )
167
+ resolver_match = response.context_data["request"].routable_resolver_match
168
+ self.assertEqual(resolver_match.url_name, "render_method_test_with_arg")
169
+ self.assertEqual(resolver_match.kwargs, {"slug": "foo"})
170
+
160
171
  def test_get_routable_page_with_overridden_index_route(self):
161
172
  page = self.home_page.add_child(
162
173
  instance=RoutablePageWithOverriddenIndexRouteTest(
@@ -92,11 +92,11 @@ msgstr "عذرًا ، لا توجد نتائج تمت ترقيتها تطابق
92
92
 
93
93
  #, python-format
94
94
  msgid ""
95
- "No promoted results have been created. Why not <a href="
96
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
95
+ "No promoted results have been created. Why not <a "
96
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
97
97
  msgstr ""
98
- "لم يتم إنشاء نتائج ترويجية. لماذا لا <a href="
99
- "\"%(wagtailsearchpromotions_add_url)s\">تضيف واحدة</a>؟"
98
+ "لم يتم إنشاء نتائج ترويجية. لماذا لا <a "
99
+ "href=\"%(wagtailsearchpromotions_add_url)s\">تضيف واحدة</a>؟"
100
100
 
101
101
  msgid "Popular search terms"
102
102
  msgstr "مصطلحات البحث الاكثر شعبية"
@@ -17,9 +17,9 @@ msgstr ""
17
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
18
  "Content-Transfer-Encoding: 8bit\n"
19
19
  "Language: be\n"
20
- "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
21
- "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
22
- "%100>=11 && n%100<=14)? 2 : 3);\n"
20
+ "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
21
+ "n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
22
+ "(n%100>=11 && n%100<=14)? 2 : 3);\n"
23
23
 
24
24
  msgid "Wagtail search promotions"
25
25
  msgstr "Пошукавае прасоўванне Wagtail"
@@ -98,11 +98,11 @@ msgstr "На жаль, няма вынікаў рэкламы \"<em>%(query_stri
98
98
 
99
99
  #, python-format
100
100
  msgid ""
101
- "No promoted results have been created. Why not <a href="
102
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
101
+ "No promoted results have been created. Why not <a "
102
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
103
103
  msgstr ""
104
- "Ніякіх рэкламных вынікаў не было знойдзена, супадаючых з <a href="
105
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
104
+ "Ніякіх рэкламных вынікаў не было знойдзена, супадаючых з <a "
105
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
106
106
 
107
107
  msgid "Popular search terms"
108
108
  msgstr "Папулярныя пошукавыя запыты"
@@ -88,8 +88,8 @@ msgstr ""
88
88
  "<p>Els resultats de cerca promocionats són un mitjà per recomanar pàgines "
89
89
  "específiques o enllaços externs que potser no apareixen orgànicament als "
90
90
  "resultats de la cerca. Per exemple, recomanar la teva pàgina de donació "
91
- "principal a un usuari que cerqui amb el terme menys comú \"<em>aportació</em>"
92
- "\".</p>"
91
+ "principal a un usuari que cerqui amb el terme menys comú \"<em>aportació</"
92
+ "em>\".</p>"
93
93
 
94
94
  msgid ""
95
95
  "<p>The \"Search term(s)/phrase\" field below must contain the full and exact "
@@ -147,16 +147,16 @@ msgstr "Afegir un resultat recomanat"
147
147
  #, python-format
148
148
  msgid "Sorry, no promoted results match \"<em>%(query_string)s</em>\""
149
149
  msgstr ""
150
- "No s'han trobat resultats promocionats que coincideixin amb \"<em>"
151
- "%(query_string)s</em>\""
150
+ "No s'han trobat resultats promocionats que coincideixin amb "
151
+ "\"<em>%(query_string)s</em>\""
152
152
 
153
153
  #, python-format
154
154
  msgid ""
155
- "No promoted results have been created. Why not <a href="
156
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
155
+ "No promoted results have been created. Why not <a "
156
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
157
157
  msgstr ""
158
- "No s'ha creat cap resultat promocionat. per què no n'<a href="
159
- "\"%(wagtailsearchpromotions_add_url)s\">afegiu un</a>?"
158
+ "No s'ha creat cap resultat promocionat. per què no n'<a "
159
+ "href=\"%(wagtailsearchpromotions_add_url)s\">afegiu un</a>?"
160
160
 
161
161
  msgid "No promoted results have been created."
162
162
  msgstr "No s'ha creat cap resultat promocionat."
@@ -100,8 +100,8 @@ msgstr ""
100
100
 
101
101
  #, python-format
102
102
  msgid ""
103
- "No promoted results have been created. Why not <a href="
104
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
103
+ "No promoted results have been created. Why not <a "
104
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
105
105
  msgstr ""
106
106
  "Nebyly nalezeny žádné upřednostněné výsledky. Nové upřednostněné vyhledávání "
107
107
  "můžete přidat <a href=\"%(wagtailsearchpromotions_add_url)s\">zde</a>?"
@@ -99,11 +99,11 @@ msgstr ""
99
99
 
100
100
  #, python-format
101
101
  msgid ""
102
- "No promoted results have been created. Why not <a href="
103
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
102
+ "No promoted results have been created. Why not <a "
103
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
104
104
  msgstr ""
105
- "Nid oes unrhyw ganlyniadau wedi'u hyrwyddo wedi'u creu. Pam ddim <a href="
106
- "\"%(wagtailsearchpromotions_add_url)s\">ychwanegu un</a>?"
105
+ "Nid oes unrhyw ganlyniadau wedi'u hyrwyddo wedi'u creu. Pam ddim <a "
106
+ "href=\"%(wagtailsearchpromotions_add_url)s\">ychwanegu un</a>?"
107
107
 
108
108
  msgid "Popular search terms"
109
109
  msgstr "Termau chwilio poblogaidd"
@@ -159,16 +159,16 @@ msgstr "Empfohlenes Ergebnis hinzufügen"
159
159
  #, python-format
160
160
  msgid "Sorry, no promoted results match \"<em>%(query_string)s</em>\""
161
161
  msgstr ""
162
- "Leider gibt es keine hervorgehobenen Suchergebnisse, die zu „<em>"
163
- "%(query_string)s</em>“ passen."
162
+ "Leider gibt es keine hervorgehobenen Suchergebnisse, die zu "
163
+ "„<em>%(query_string)s</em>“ passen."
164
164
 
165
165
  #, python-format
166
166
  msgid ""
167
- "No promoted results have been created. Why not <a href="
168
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
167
+ "No promoted results have been created. Why not <a "
168
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
169
169
  msgstr ""
170
- "Es wurden keine hervorgehobenen Suchbegriffe angelegt. Warum <a href="
171
- "\"%(wagtailsearchpromotions_add_url)s\">fügen Sie nicht einen hinzu</a>?"
170
+ "Es wurden keine hervorgehobenen Suchbegriffe angelegt. Warum <a "
171
+ "href=\"%(wagtailsearchpromotions_add_url)s\">fügen Sie nicht einen hinzu</a>?"
172
172
 
173
173
  msgid "No promoted results have been created."
174
174
  msgstr "Es wurden keine hervorgehobenen Ergebnisse erstellt."
@@ -102,11 +102,11 @@ msgstr ""
102
102
 
103
103
  #, python-format
104
104
  msgid ""
105
- "No promoted results have been created. Why not <a href="
106
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
105
+ "No promoted results have been created. Why not <a "
106
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
107
107
  msgstr ""
108
- "Δεν δημιουργήθηκαν προωθημένα αποτελέσματα. Γιατί να μην <a href="
109
- "\"%(wagtailsearchpromotions_add_url)s\">προσθέσετε ένα</a>;"
108
+ "Δεν δημιουργήθηκαν προωθημένα αποτελέσματα. Γιατί να μην <a "
109
+ "href=\"%(wagtailsearchpromotions_add_url)s\">προσθέσετε ένα</a>;"
110
110
 
111
111
  msgid "Popular search terms"
112
112
  msgstr "Δημοφιλείς όροι αναζήτησης"
@@ -8,7 +8,7 @@ msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2024-04-18 17:28+0100\n"
11
+ "POT-Creation-Date: 2024-07-19 16:26+0100\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -115,16 +115,16 @@ msgstr "Resultados de busqueda promocionados"
115
115
  #, python-format
116
116
  msgid "Sorry, no promoted results match \"<em>%(query_string)s</em>\""
117
117
  msgstr ""
118
- "Lo sentimos, resultados promovidos no encontrados \"<em>%(query_string)s</em>"
119
- "\""
118
+ "Lo sentimos, resultados promovidos no encontrados \"<em>%(query_string)s</"
119
+ "em>\""
120
120
 
121
121
  #, python-format
122
122
  msgid ""
123
- "No promoted results have been created. Why not <a href="
124
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
123
+ "No promoted results have been created. Why not <a "
124
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
125
125
  msgstr ""
126
- "Resultados promovidos no han sido creados. ¿Por que no <a href="
127
- "\"%(wagtailsearchpromotions_add_url)s\">agregar uno</a>?"
126
+ "Resultados promovidos no han sido creados. ¿Por que no <a "
127
+ "href=\"%(wagtailsearchpromotions_add_url)s\">agregar uno</a>?"
128
128
 
129
129
  msgid "Popular search terms"
130
130
  msgstr "Términos de búsqueda popular"
@@ -97,11 +97,11 @@ msgstr ""
97
97
 
98
98
  #, python-format
99
99
  msgid ""
100
- "No promoted results have been created. Why not <a href="
101
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
100
+ "No promoted results have been created. Why not <a "
101
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
102
102
  msgstr ""
103
- " Reklaamitud tulemusi pole loodud. Lisa <a href="
104
- "\"%(wagtailsearchpromotions_add_url)s\">üks</a>?"
103
+ " Reklaamitud tulemusi pole loodud. Lisa <a "
104
+ "href=\"%(wagtailsearchpromotions_add_url)s\">üks</a>?"
105
105
 
106
106
  msgid "Popular search terms"
107
107
  msgstr "Populaarsed otsinguterminid"
@@ -90,11 +90,11 @@ msgstr "متاسفانه نتایج ترویجی شامل «<em>%(query_string)s
90
90
 
91
91
  #, python-format
92
92
  msgid ""
93
- "No promoted results have been created. Why not <a href="
94
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
93
+ "No promoted results have been created. Why not <a "
94
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
95
95
  msgstr ""
96
- "هیچ نتیجه ترویج شده ای ایجاد نشده. می‌توانید یکی را <a href="
97
- "\"%(wagtailsearchpromotions_add_url)s\">ایجاد</a> کنید."
96
+ "هیچ نتیجه ترویج شده ای ایجاد نشده. می‌توانید یکی را <a "
97
+ "href=\"%(wagtailsearchpromotions_add_url)s\">ایجاد</a> کنید."
98
98
 
99
99
  msgid "Popular search terms"
100
100
  msgstr "عناوین منتخب جستجو‌شده"
@@ -100,16 +100,16 @@ msgstr "Lisää suositeltu tulos"
100
100
  #, python-format
101
101
  msgid "Sorry, no promoted results match \"<em>%(query_string)s</em>\""
102
102
  msgstr ""
103
- "Pahoittelut, yksikään nostettu tulos ei täsmää hakuun \"<em>"
104
- "%(query_string)s</em>\""
103
+ "Pahoittelut, yksikään nostettu tulos ei täsmää hakuun "
104
+ "\"<em>%(query_string)s</em>\""
105
105
 
106
106
  #, python-format
107
107
  msgid ""
108
- "No promoted results have been created. Why not <a href="
109
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
108
+ "No promoted results have been created. Why not <a "
109
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
110
110
  msgstr ""
111
- "Yhtään nostettua tulosta ei ole luotu. Mikset vaikka <a href="
112
- "\"%(wagtailsearchpromotions_add_url)s\">lisäisi yhtä nyt</a>?"
111
+ "Yhtään nostettua tulosta ei ole luotu. Mikset vaikka <a "
112
+ "href=\"%(wagtailsearchpromotions_add_url)s\">lisäisi yhtä nyt</a>?"
113
113
 
114
114
  msgid "Popular search terms"
115
115
  msgstr "Suositut hakutermit"
@@ -12,7 +12,7 @@
12
12
  # Loic Teixeira, 2020,2022-2023
13
13
  # nahuel, 2014
14
14
  # Sebastien Andrivet <sebastien@andrivet.com>, 2016
15
- # Sébastien Corbin <seb.corbin@gmail.com>, 2023
15
+ # Sébastien Corbin <seb.corbin@gmail.com>, 2023-2024
16
16
  # Tom Dyson <tom@torchbox.com>, 2015
17
17
  msgid ""
18
18
  msgstr ""
@@ -20,7 +20,7 @@ msgstr ""
20
20
  "Report-Msgid-Bugs-To: \n"
21
21
  "POT-Creation-Date: 2024-05-02 10:04+0100\n"
22
22
  "PO-Revision-Date: 2015-08-26 14:04+0000\n"
23
- "Last-Translator: Sébastien Corbin <seb.corbin@gmail.com>, 2023\n"
23
+ "Last-Translator: Sébastien Corbin <seb.corbin@gmail.com>, 2023-2024\n"
24
24
  "Language-Team: French (http://app.transifex.com/torchbox/wagtail/language/"
25
25
  "fr/)\n"
26
26
  "MIME-Version: 1.0\n"
@@ -159,11 +159,14 @@ msgstr ""
159
159
 
160
160
  #, python-format
161
161
  msgid ""
162
- "No promoted results have been created. Why not <a href="
163
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
162
+ "No promoted results have been created. Why not <a "
163
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
164
164
  msgstr ""
165
- "Aucun résultat de promotion n'a été créé. Pourquoi ne pas <a href="
166
- "\"%(wagtailsearchpromotions_add_url)s\">en ajouter un</a> ?"
165
+ "Aucun résultat de promotion n'a été créé. Pourquoi ne pas <a "
166
+ "href=\"%(wagtailsearchpromotions_add_url)s\">en ajouter un</a> ?"
167
+
168
+ msgid "No promoted results have been created."
169
+ msgstr "Aucun résultat mis en avant n'a été créé."
167
170
 
168
171
  msgid "Popular search terms"
169
172
  msgstr "Termes de recherche populaires"
@@ -149,16 +149,16 @@ msgstr "Engadir resultado recomendado"
149
149
  #, python-format
150
150
  msgid "Sorry, no promoted results match \"<em>%(query_string)s</em>\""
151
151
  msgstr ""
152
- "Síntoo, non existen resultados promocinados que coincidan con \"<em>"
153
- "%(query_string)s</em>\""
152
+ "Síntoo, non existen resultados promocinados que coincidan con "
153
+ "\"<em>%(query_string)s</em>\""
154
154
 
155
155
  #, python-format
156
156
  msgid ""
157
- "No promoted results have been created. Why not <a href="
158
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
157
+ "No promoted results have been created. Why not <a "
158
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
159
159
  msgstr ""
160
- "Non se creou ningún resultado promocionado. ¿Por que non <a href="
161
- "\"%(wagtailsearchpromotions_add_url)s\">engadir un</a>?"
160
+ "Non se creou ningún resultado promocionado. ¿Por que non <a "
161
+ "href=\"%(wagtailsearchpromotions_add_url)s\">engadir un</a>?"
162
162
 
163
163
  msgid "No promoted results have been created."
164
164
  msgstr "Non se crearon resultados promocionados."
@@ -17,8 +17,8 @@ msgstr ""
17
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
18
  "Content-Transfer-Encoding: 8bit\n"
19
19
  "Language: hr_HR\n"
20
- "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
21
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
20
+ "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
21
+ "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
22
22
 
23
23
  msgid "Wagtail search promotions"
24
24
  msgstr "Wagtail promoviranje pretraga"
@@ -141,16 +141,16 @@ msgstr "Dodaj preporučeni rezultat"
141
141
  #, python-format
142
142
  msgid "Sorry, no promoted results match \"<em>%(query_string)s</em>\""
143
143
  msgstr ""
144
- "Nažalost nisu pronađeni promovirani rezultati koji odgovaraju \"<em>"
145
- "%(query_string)s</em>\""
144
+ "Nažalost nisu pronađeni promovirani rezultati koji odgovaraju "
145
+ "\"<em>%(query_string)s</em>\""
146
146
 
147
147
  #, python-format
148
148
  msgid ""
149
- "No promoted results have been created. Why not <a href="
150
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
149
+ "No promoted results have been created. Why not <a "
150
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
151
151
  msgstr ""
152
- "Nema postavljenih promoviranih rezultata. Zašto ne <a href="
153
- "\"%(wagtailsearchpromotions_add_url)s\">dodate jedan</a>?"
152
+ "Nema postavljenih promoviranih rezultata. Zašto ne <a "
153
+ "href=\"%(wagtailsearchpromotions_add_url)s\">dodate jedan</a>?"
154
154
 
155
155
  msgid "Popular search terms"
156
156
  msgstr "Popularni pojmovi za pretraživanje"
@@ -149,11 +149,11 @@ msgstr ""
149
149
 
150
150
  #, python-format
151
151
  msgid ""
152
- "No promoted results have been created. Why not <a href="
153
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
152
+ "No promoted results have been created. Why not <a "
153
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
154
154
  msgstr ""
155
- "Nincs kiemelt keresés hozzáadva. Miért nem <a href="
156
- "\"%(wagtailsearchpromotions_add_url)s\">ad hozzá egyet</a>?"
155
+ "Nincs kiemelt keresés hozzáadva. Miért nem <a "
156
+ "href=\"%(wagtailsearchpromotions_add_url)s\">ad hozzá egyet</a>?"
157
157
 
158
158
  msgid "Popular search terms"
159
159
  msgstr "Népszerű keresések"
@@ -98,11 +98,11 @@ msgstr ""
98
98
 
99
99
  #, python-format
100
100
  msgid ""
101
- "No promoted results have been created. Why not <a href="
102
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
101
+ "No promoted results have been created. Why not <a "
102
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
103
103
  msgstr ""
104
- "Tidak ada hasil terpromosi yang dibuat. Mengapa tidak <a href="
105
- "\"%(wagtailsearchpromotions_add_url)s\">menambahnya</a>?"
104
+ "Tidak ada hasil terpromosi yang dibuat. Mengapa tidak <a "
105
+ "href=\"%(wagtailsearchpromotions_add_url)s\">menambahnya</a>?"
106
106
 
107
107
  msgid "Popular search terms"
108
108
  msgstr "Kata kunci pencarian populer"
@@ -85,8 +85,8 @@ msgid ""
85
85
  msgstr ""
86
86
  "<p>Leitarmeðmæli eru leið til þess að mæla með ákveðnum síðum eða ytri "
87
87
  "hlekkjum sem birtast ekki endilega efst í leitarniðurstöðum. T.d. getur þú "
88
- "mælt með aðal styrktar síðunni þinni ef leitað er að orðinu \"<em>gefa</em>"
89
- "\", sem annars hefði ekki skilað styrktarsíðunni í leitarniðurstöður.</p>"
88
+ "mælt með aðal styrktar síðunni þinni ef leitað er að orðinu \"<em>gefa</"
89
+ "em>\", sem annars hefði ekki skilað styrktarsíðunni í leitarniðurstöður.</p>"
90
90
 
91
91
  msgid ""
92
92
  "<p>The \"Search term(s)/phrase\" field below must contain the full and exact "
@@ -141,16 +141,16 @@ msgstr "Bæta við meðmæltum leitarniðurstöðum"
141
141
  #, python-format
142
142
  msgid "Sorry, no promoted results match \"<em>%(query_string)s</em>\""
143
143
  msgstr ""
144
- "Því miður eru engar meðmæltar niðurstöður sem passa við \"<em>"
145
- "%(query_string)s</em>\""
144
+ "Því miður eru engar meðmæltar niðurstöður sem passa við "
145
+ "\"<em>%(query_string)s</em>\""
146
146
 
147
147
  #, python-format
148
148
  msgid ""
149
- "No promoted results have been created. Why not <a href="
150
- "\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
149
+ "No promoted results have been created. Why not <a "
150
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
151
151
  msgstr ""
152
- "Engin meðmæli hafa verið búin til. Hví ekki að <a href="
153
- "\"%(wagtailsearchpromotions_add_url)s\">bæta við einum</a>?"
152
+ "Engin meðmæli hafa verið búin til. Hví ekki að <a "
153
+ "href=\"%(wagtailsearchpromotions_add_url)s\">bæta við einum</a>?"
154
154
 
155
155
  msgid "No promoted results have been created."
156
156
  msgstr "Engin leitarorð sem mælt er með hafa verið búin til"