wagtail 7.2.2__py3-none-any.whl → 7.3__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 (1301) hide show
  1. wagtail/__init__.py +1 -1
  2. wagtail/actions/copy_for_translation.py +4 -2
  3. wagtail/admin/action_menu.py +4 -1
  4. wagtail/admin/api/actions/convert_alias.py +2 -2
  5. wagtail/admin/api/actions/copy.py +2 -2
  6. wagtail/admin/api/actions/copy_for_translation.py +2 -2
  7. wagtail/admin/api/actions/create_alias.py +2 -2
  8. wagtail/admin/api/actions/delete.py +1 -1
  9. wagtail/admin/api/actions/move.py +1 -1
  10. wagtail/admin/api/actions/publish.py +2 -2
  11. wagtail/admin/api/actions/revert_to_page_revision.py +2 -2
  12. wagtail/admin/api/actions/unpublish.py +1 -1
  13. wagtail/admin/api/filters.py +2 -2
  14. wagtail/admin/compare.py +22 -0
  15. wagtail/admin/forms/account.py +52 -1
  16. wagtail/admin/forms/comments.py +53 -0
  17. wagtail/admin/forms/models.py +36 -0
  18. wagtail/admin/forms/pages.py +7 -0
  19. wagtail/admin/forms/workflows.py +5 -2
  20. wagtail/admin/icons.py +4 -3
  21. wagtail/admin/locale/af/LC_MESSAGES/djangojs.mo +0 -0
  22. wagtail/admin/locale/af/LC_MESSAGES/djangojs.po +8 -1
  23. wagtail/admin/locale/ar/LC_MESSAGES/django.mo +0 -0
  24. wagtail/admin/locale/ar/LC_MESSAGES/django.po +42 -16
  25. wagtail/admin/locale/ar/LC_MESSAGES/djangojs.mo +0 -0
  26. wagtail/admin/locale/ar/LC_MESSAGES/djangojs.po +20 -11
  27. wagtail/admin/locale/az_AZ/LC_MESSAGES/django.po +1 -1
  28. wagtail/admin/locale/az_AZ/LC_MESSAGES/djangojs.mo +0 -0
  29. wagtail/admin/locale/az_AZ/LC_MESSAGES/djangojs.po +5 -2
  30. wagtail/admin/locale/be/LC_MESSAGES/django.po +1 -1
  31. wagtail/admin/locale/be/LC_MESSAGES/djangojs.mo +0 -0
  32. wagtail/admin/locale/be/LC_MESSAGES/djangojs.po +21 -3
  33. wagtail/admin/locale/bg/LC_MESSAGES/django.mo +0 -0
  34. wagtail/admin/locale/bg/LC_MESSAGES/django.po +299 -2
  35. wagtail/admin/locale/bg/LC_MESSAGES/djangojs.mo +0 -0
  36. wagtail/admin/locale/bg/LC_MESSAGES/djangojs.po +37 -3
  37. wagtail/admin/locale/bn/LC_MESSAGES/django.po +1 -1
  38. wagtail/admin/locale/bn/LC_MESSAGES/djangojs.mo +0 -0
  39. wagtail/admin/locale/bn/LC_MESSAGES/djangojs.po +9 -3
  40. wagtail/admin/locale/ca/LC_MESSAGES/django.mo +0 -0
  41. wagtail/admin/locale/ca/LC_MESSAGES/django.po +36 -18
  42. wagtail/admin/locale/ca/LC_MESSAGES/djangojs.mo +0 -0
  43. wagtail/admin/locale/ca/LC_MESSAGES/djangojs.po +34 -12
  44. wagtail/admin/locale/cs/LC_MESSAGES/django.mo +0 -0
  45. wagtail/admin/locale/cs/LC_MESSAGES/django.po +1 -7
  46. wagtail/admin/locale/cs/LC_MESSAGES/djangojs.mo +0 -0
  47. wagtail/admin/locale/cs/LC_MESSAGES/djangojs.po +22 -4
  48. wagtail/admin/locale/cy/LC_MESSAGES/django.po +1 -1
  49. wagtail/admin/locale/cy/LC_MESSAGES/djangojs.mo +0 -0
  50. wagtail/admin/locale/cy/LC_MESSAGES/djangojs.po +15 -3
  51. wagtail/admin/locale/da/LC_MESSAGES/django.po +1 -1
  52. wagtail/admin/locale/da/LC_MESSAGES/djangojs.mo +0 -0
  53. wagtail/admin/locale/da/LC_MESSAGES/djangojs.po +19 -4
  54. wagtail/admin/locale/de/LC_MESSAGES/django.mo +0 -0
  55. wagtail/admin/locale/de/LC_MESSAGES/django.po +201 -21
  56. wagtail/admin/locale/de/LC_MESSAGES/djangojs.mo +0 -0
  57. wagtail/admin/locale/de/LC_MESSAGES/djangojs.po +53 -14
  58. wagtail/admin/locale/dv/LC_MESSAGES/django.mo +0 -0
  59. wagtail/admin/locale/dv/LC_MESSAGES/django.po +7 -16
  60. wagtail/admin/locale/dv/LC_MESSAGES/djangojs.mo +0 -0
  61. wagtail/admin/locale/dv/LC_MESSAGES/djangojs.po +20 -2
  62. wagtail/admin/locale/el/LC_MESSAGES/django.po +1 -1
  63. wagtail/admin/locale/el/LC_MESSAGES/djangojs.mo +0 -0
  64. wagtail/admin/locale/el/LC_MESSAGES/djangojs.po +22 -13
  65. wagtail/admin/locale/en/LC_MESSAGES/django.mo +0 -0
  66. wagtail/admin/locale/en/LC_MESSAGES/django.po +262 -234
  67. wagtail/admin/locale/en/LC_MESSAGES/djangojs.mo +0 -0
  68. wagtail/admin/locale/en/LC_MESSAGES/djangojs.po +72 -43
  69. wagtail/admin/locale/en_IN/LC_MESSAGES/djangojs.mo +0 -0
  70. wagtail/admin/locale/en_IN/LC_MESSAGES/djangojs.po +5 -2
  71. wagtail/admin/locale/es/LC_MESSAGES/django.mo +0 -0
  72. wagtail/admin/locale/es/LC_MESSAGES/django.po +1 -10
  73. wagtail/admin/locale/es/LC_MESSAGES/djangojs.mo +0 -0
  74. wagtail/admin/locale/es/LC_MESSAGES/djangojs.po +22 -13
  75. wagtail/admin/locale/es_419/LC_MESSAGES/django.po +1 -1
  76. wagtail/admin/locale/es_419/LC_MESSAGES/djangojs.mo +0 -0
  77. wagtail/admin/locale/es_419/LC_MESSAGES/djangojs.po +8 -2
  78. wagtail/admin/locale/es_VE/LC_MESSAGES/django.po +1 -1
  79. wagtail/admin/locale/es_VE/LC_MESSAGES/djangojs.mo +0 -0
  80. wagtail/admin/locale/es_VE/LC_MESSAGES/djangojs.po +5 -2
  81. wagtail/admin/locale/et/LC_MESSAGES/django.po +1 -1
  82. wagtail/admin/locale/et/LC_MESSAGES/djangojs.mo +0 -0
  83. wagtail/admin/locale/et/LC_MESSAGES/djangojs.po +17 -2
  84. wagtail/admin/locale/eu/LC_MESSAGES/django.po +1 -1
  85. wagtail/admin/locale/eu/LC_MESSAGES/djangojs.mo +0 -0
  86. wagtail/admin/locale/eu/LC_MESSAGES/djangojs.po +8 -2
  87. wagtail/admin/locale/fa/LC_MESSAGES/django.mo +0 -0
  88. wagtail/admin/locale/fa/LC_MESSAGES/django.po +5 -11
  89. wagtail/admin/locale/fa/LC_MESSAGES/djangojs.mo +0 -0
  90. wagtail/admin/locale/fa/LC_MESSAGES/djangojs.po +18 -3
  91. wagtail/admin/locale/fi/LC_MESSAGES/django.mo +0 -0
  92. wagtail/admin/locale/fi/LC_MESSAGES/django.po +1 -12
  93. wagtail/admin/locale/fi/LC_MESSAGES/djangojs.mo +0 -0
  94. wagtail/admin/locale/fi/LC_MESSAGES/djangojs.po +22 -12
  95. wagtail/admin/locale/fr/LC_MESSAGES/django.mo +0 -0
  96. wagtail/admin/locale/fr/LC_MESSAGES/django.po +38 -21
  97. wagtail/admin/locale/fr/LC_MESSAGES/djangojs.mo +0 -0
  98. wagtail/admin/locale/fr/LC_MESSAGES/djangojs.po +35 -14
  99. wagtail/admin/locale/gl/LC_MESSAGES/django.mo +0 -0
  100. wagtail/admin/locale/gl/LC_MESSAGES/django.po +36 -18
  101. wagtail/admin/locale/gl/LC_MESSAGES/djangojs.mo +0 -0
  102. wagtail/admin/locale/gl/LC_MESSAGES/djangojs.po +34 -12
  103. wagtail/admin/locale/he_IL/LC_MESSAGES/django.po +1 -1
  104. wagtail/admin/locale/he_IL/LC_MESSAGES/djangojs.mo +0 -0
  105. wagtail/admin/locale/he_IL/LC_MESSAGES/djangojs.po +20 -3
  106. wagtail/admin/locale/hi/LC_MESSAGES/djangojs.mo +0 -0
  107. wagtail/admin/locale/hi/LC_MESSAGES/djangojs.po +5 -2
  108. wagtail/admin/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  109. wagtail/admin/locale/hr_HR/LC_MESSAGES/djangojs.mo +0 -0
  110. wagtail/admin/locale/hr_HR/LC_MESSAGES/djangojs.po +17 -2
  111. wagtail/admin/locale/ht/LC_MESSAGES/django.po +1 -1
  112. wagtail/admin/locale/ht/LC_MESSAGES/djangojs.mo +0 -0
  113. wagtail/admin/locale/ht/LC_MESSAGES/djangojs.po +5 -2
  114. wagtail/admin/locale/hu/LC_MESSAGES/django.mo +0 -0
  115. wagtail/admin/locale/hu/LC_MESSAGES/django.po +7 -18
  116. wagtail/admin/locale/hu/LC_MESSAGES/djangojs.mo +0 -0
  117. wagtail/admin/locale/hu/LC_MESSAGES/djangojs.po +21 -11
  118. wagtail/admin/locale/id_ID/LC_MESSAGES/django.po +1 -1
  119. wagtail/admin/locale/id_ID/LC_MESSAGES/djangojs.mo +0 -0
  120. wagtail/admin/locale/id_ID/LC_MESSAGES/djangojs.po +18 -3
  121. wagtail/admin/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  122. wagtail/admin/locale/is_IS/LC_MESSAGES/django.po +7 -17
  123. wagtail/admin/locale/is_IS/LC_MESSAGES/djangojs.mo +0 -0
  124. wagtail/admin/locale/is_IS/LC_MESSAGES/djangojs.po +21 -12
  125. wagtail/admin/locale/it/LC_MESSAGES/django.mo +0 -0
  126. wagtail/admin/locale/it/LC_MESSAGES/django.po +599 -19
  127. wagtail/admin/locale/it/LC_MESSAGES/djangojs.mo +0 -0
  128. wagtail/admin/locale/it/LC_MESSAGES/djangojs.po +73 -13
  129. wagtail/admin/locale/ja/LC_MESSAGES/django.po +1 -1
  130. wagtail/admin/locale/ja/LC_MESSAGES/djangojs.mo +0 -0
  131. wagtail/admin/locale/ja/LC_MESSAGES/djangojs.po +23 -3
  132. wagtail/admin/locale/ka/LC_MESSAGES/django.po +1 -1
  133. wagtail/admin/locale/ka/LC_MESSAGES/djangojs.mo +0 -0
  134. wagtail/admin/locale/ka/LC_MESSAGES/djangojs.po +5 -2
  135. wagtail/admin/locale/ko/LC_MESSAGES/django.mo +0 -0
  136. wagtail/admin/locale/ko/LC_MESSAGES/django.po +1 -11
  137. wagtail/admin/locale/ko/LC_MESSAGES/djangojs.mo +0 -0
  138. wagtail/admin/locale/ko/LC_MESSAGES/djangojs.po +23 -13
  139. wagtail/admin/locale/lt/LC_MESSAGES/django.po +1 -1
  140. wagtail/admin/locale/lt/LC_MESSAGES/djangojs.mo +0 -0
  141. wagtail/admin/locale/lt/LC_MESSAGES/djangojs.po +21 -12
  142. wagtail/admin/locale/lv/LC_MESSAGES/django.po +1 -1
  143. wagtail/admin/locale/lv/LC_MESSAGES/djangojs.mo +0 -0
  144. wagtail/admin/locale/lv/LC_MESSAGES/djangojs.po +22 -4
  145. wagtail/admin/locale/mi/LC_MESSAGES/django.po +1 -1
  146. wagtail/admin/locale/mi/LC_MESSAGES/djangojs.mo +0 -0
  147. wagtail/admin/locale/mi/LC_MESSAGES/djangojs.po +14 -2
  148. wagtail/admin/locale/mn/LC_MESSAGES/django.po +1 -1
  149. wagtail/admin/locale/mn/LC_MESSAGES/djangojs.mo +0 -0
  150. wagtail/admin/locale/mn/LC_MESSAGES/djangojs.po +17 -2
  151. wagtail/admin/locale/my/LC_MESSAGES/django.po +1 -1
  152. wagtail/admin/locale/my/LC_MESSAGES/djangojs.mo +0 -0
  153. wagtail/admin/locale/my/LC_MESSAGES/djangojs.po +8 -2
  154. wagtail/admin/locale/nb/LC_MESSAGES/django.po +1 -1
  155. wagtail/admin/locale/nb/LC_MESSAGES/djangojs.mo +0 -0
  156. wagtail/admin/locale/nb/LC_MESSAGES/djangojs.po +18 -3
  157. wagtail/admin/locale/nl/LC_MESSAGES/django.mo +0 -0
  158. wagtail/admin/locale/nl/LC_MESSAGES/django.po +38 -21
  159. wagtail/admin/locale/nl/LC_MESSAGES/djangojs.mo +0 -0
  160. wagtail/admin/locale/nl/LC_MESSAGES/djangojs.po +36 -13
  161. wagtail/admin/locale/pl/LC_MESSAGES/django.mo +0 -0
  162. wagtail/admin/locale/pl/LC_MESSAGES/django.po +1 -10
  163. wagtail/admin/locale/pl/LC_MESSAGES/djangojs.mo +0 -0
  164. wagtail/admin/locale/pl/LC_MESSAGES/djangojs.po +21 -12
  165. wagtail/admin/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  166. wagtail/admin/locale/pt_BR/LC_MESSAGES/django.po +7 -16
  167. wagtail/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo +0 -0
  168. wagtail/admin/locale/pt_BR/LC_MESSAGES/djangojs.po +21 -13
  169. wagtail/admin/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  170. wagtail/admin/locale/pt_PT/LC_MESSAGES/django.po +1 -7
  171. wagtail/admin/locale/pt_PT/LC_MESSAGES/djangojs.mo +0 -0
  172. wagtail/admin/locale/pt_PT/LC_MESSAGES/djangojs.po +18 -12
  173. wagtail/admin/locale/ro/LC_MESSAGES/django.mo +0 -0
  174. wagtail/admin/locale/ro/LC_MESSAGES/django.po +7 -16
  175. wagtail/admin/locale/ro/LC_MESSAGES/djangojs.mo +0 -0
  176. wagtail/admin/locale/ro/LC_MESSAGES/djangojs.po +20 -11
  177. wagtail/admin/locale/ru/LC_MESSAGES/django.mo +0 -0
  178. wagtail/admin/locale/ru/LC_MESSAGES/django.po +186 -22
  179. wagtail/admin/locale/ru/LC_MESSAGES/djangojs.mo +0 -0
  180. wagtail/admin/locale/ru/LC_MESSAGES/djangojs.po +53 -14
  181. wagtail/admin/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  182. wagtail/admin/locale/sk_SK/LC_MESSAGES/djangojs.mo +0 -0
  183. wagtail/admin/locale/sk_SK/LC_MESSAGES/djangojs.po +20 -3
  184. wagtail/admin/locale/sl/LC_MESSAGES/django.mo +0 -0
  185. wagtail/admin/locale/sl/LC_MESSAGES/django.po +7 -16
  186. wagtail/admin/locale/sl/LC_MESSAGES/djangojs.mo +0 -0
  187. wagtail/admin/locale/sl/LC_MESSAGES/djangojs.po +21 -12
  188. wagtail/admin/locale/sr/LC_MESSAGES/djangojs.mo +0 -0
  189. wagtail/admin/locale/sr/LC_MESSAGES/djangojs.po +15 -0
  190. wagtail/admin/locale/sv/LC_MESSAGES/django.mo +0 -0
  191. wagtail/admin/locale/sv/LC_MESSAGES/django.po +329 -23
  192. wagtail/admin/locale/sv/LC_MESSAGES/djangojs.mo +0 -0
  193. wagtail/admin/locale/sv/LC_MESSAGES/djangojs.po +23 -13
  194. wagtail/admin/locale/ta/LC_MESSAGES/djangojs.mo +0 -0
  195. wagtail/admin/locale/ta/LC_MESSAGES/djangojs.po +5 -2
  196. wagtail/admin/locale/tet/LC_MESSAGES/django.po +1 -1
  197. wagtail/admin/locale/tet/LC_MESSAGES/djangojs.mo +0 -0
  198. wagtail/admin/locale/tet/LC_MESSAGES/djangojs.po +19 -4
  199. wagtail/admin/locale/th/LC_MESSAGES/django.mo +0 -0
  200. wagtail/admin/locale/th/LC_MESSAGES/django.po +1 -4
  201. wagtail/admin/locale/th/LC_MESSAGES/djangojs.mo +0 -0
  202. wagtail/admin/locale/th/LC_MESSAGES/djangojs.po +22 -3
  203. wagtail/admin/locale/tr/LC_MESSAGES/django.mo +0 -0
  204. wagtail/admin/locale/tr/LC_MESSAGES/django.po +4 -10
  205. wagtail/admin/locale/tr/LC_MESSAGES/djangojs.mo +0 -0
  206. wagtail/admin/locale/tr/LC_MESSAGES/djangojs.po +23 -5
  207. wagtail/admin/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  208. wagtail/admin/locale/tr_TR/LC_MESSAGES/djangojs.mo +0 -0
  209. wagtail/admin/locale/tr_TR/LC_MESSAGES/djangojs.po +19 -4
  210. wagtail/admin/locale/ug/LC_MESSAGES/django.mo +0 -0
  211. wagtail/admin/locale/ug/LC_MESSAGES/django.po +7 -16
  212. wagtail/admin/locale/ug/LC_MESSAGES/djangojs.mo +0 -0
  213. wagtail/admin/locale/ug/LC_MESSAGES/djangojs.po +20 -11
  214. wagtail/admin/locale/uk/LC_MESSAGES/django.mo +0 -0
  215. wagtail/admin/locale/uk/LC_MESSAGES/django.po +5 -11
  216. wagtail/admin/locale/uk/LC_MESSAGES/djangojs.mo +0 -0
  217. wagtail/admin/locale/uk/LC_MESSAGES/djangojs.po +22 -14
  218. wagtail/admin/locale/vi/LC_MESSAGES/django.po +1 -1
  219. wagtail/admin/locale/vi/LC_MESSAGES/djangojs.mo +0 -0
  220. wagtail/admin/locale/vi/LC_MESSAGES/djangojs.po +9 -2
  221. wagtail/admin/locale/zh/LC_MESSAGES/django.po +1 -1
  222. wagtail/admin/locale/zh/LC_MESSAGES/djangojs.mo +0 -0
  223. wagtail/admin/locale/zh/LC_MESSAGES/djangojs.po +20 -5
  224. wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  225. wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.po +1 -7
  226. wagtail/admin/locale/zh_Hans/LC_MESSAGES/djangojs.mo +0 -0
  227. wagtail/admin/locale/zh_Hans/LC_MESSAGES/djangojs.po +23 -13
  228. wagtail/admin/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
  229. wagtail/admin/locale/zh_Hant/LC_MESSAGES/django.po +1 -7
  230. wagtail/admin/locale/zh_Hant/LC_MESSAGES/djangojs.mo +0 -0
  231. wagtail/admin/locale/zh_Hant/LC_MESSAGES/djangojs.po +21 -3
  232. wagtail/admin/panels/comment_panel.py +1 -51
  233. wagtail/admin/panels/title_field_panel.py +3 -1
  234. wagtail/admin/static/wagtailadmin/css/core.css +1 -1
  235. wagtail/admin/static/wagtailadmin/js/bulk-actions.js +1 -1
  236. wagtail/admin/static/wagtailadmin/js/comments.js +1 -1
  237. wagtail/admin/static/wagtailadmin/js/core.js +1 -1
  238. wagtail/admin/static/wagtailadmin/js/core.js.LICENSE.txt +1 -1
  239. wagtail/admin/static/wagtailadmin/js/draftail.js +1 -1
  240. wagtail/admin/static/wagtailadmin/js/privacy-switch.js +1 -1
  241. wagtail/admin/static/wagtailadmin/js/sidebar.js +1 -1
  242. wagtail/admin/static/wagtailadmin/js/telepath/blocks.js +1 -1
  243. wagtail/admin/static/wagtailadmin/js/userbar.js +1 -1
  244. wagtail/admin/static/wagtailadmin/js/userbar.js.LICENSE.txt +1 -1
  245. wagtail/admin/static/wagtailadmin/js/vendor.js +1 -1
  246. wagtail/admin/static/wagtailadmin/js/wagtailadmin.js +1 -1
  247. wagtail/admin/templates/wagtailadmin/base.html +1 -1
  248. wagtail/admin/templates/wagtailadmin/generic/edit_partials.html +100 -0
  249. wagtail/admin/templates/wagtailadmin/generic/form.html +26 -5
  250. wagtail/admin/templates/wagtailadmin/generic/includes/_loaded_revision_inputs.html +3 -0
  251. wagtail/admin/templates/wagtailadmin/generic/listing_results.html +1 -17
  252. wagtail/admin/templates/wagtailadmin/pages/create.html +14 -4
  253. wagtail/admin/templates/wagtailadmin/pages/edit.html +16 -3
  254. wagtail/admin/templates/wagtailadmin/pages/edit_partials.html +19 -0
  255. wagtail/admin/templates/wagtailadmin/pages/index_results.html +1 -9
  256. wagtail/admin/templates/wagtailadmin/shared/autosave/indicator.html +36 -0
  257. wagtail/admin/templates/wagtailadmin/shared/breadcrumbs.html +1 -1
  258. wagtail/admin/templates/wagtailadmin/shared/editing_sessions/list.html +2 -2
  259. wagtail/admin/templates/wagtailadmin/shared/editing_sessions/module.html +19 -3
  260. wagtail/admin/templates/wagtailadmin/shared/headers/_actions.html +5 -0
  261. wagtail/admin/templates/wagtailadmin/shared/headers/_history_icon_link.html +2 -2
  262. wagtail/admin/templates/wagtailadmin/shared/headers/slim_header.html +8 -9
  263. wagtail/admin/templates/wagtailadmin/shared/listing/filter_partials.html +19 -0
  264. wagtail/admin/templates/wagtailadmin/shared/side_panel_toggle.html +3 -3
  265. wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/side_panel.html +3 -0
  266. wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/privacy.html +18 -6
  267. wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/usage.html +11 -4
  268. wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/workflow.html +22 -1
  269. wagtail/admin/templates/wagtailadmin/shared/side_panels/preview.html +1 -0
  270. wagtail/admin/templates/wagtailadmin/shared/side_panels.html +1 -2
  271. wagtail/admin/templates/wagtailadmin/shared/unsaved_changes_warning.html +20 -20
  272. wagtail/admin/templates/wagtailadmin/userbar/base.html +2 -0
  273. wagtail/admin/templates/wagtailadmin/userbar/item_accessibility.html +1 -1
  274. wagtail/admin/templatetags/wagtailadmin_tags.py +6 -14
  275. wagtail/admin/tests/pages/test_create_page.py +359 -1
  276. wagtail/admin/tests/pages/test_custom_listing.py +48 -2
  277. wagtail/admin/tests/pages/test_edit_page.py +987 -10
  278. wagtail/admin/tests/pages/test_explorer_view.py +9 -5
  279. wagtail/admin/tests/pages/test_page_search.py +15 -0
  280. wagtail/admin/tests/pages/test_revisions.py +4 -0
  281. wagtail/admin/tests/test_account_management.py +88 -2
  282. wagtail/admin/tests/test_collections_views.py +15 -15
  283. wagtail/admin/tests/test_compare.py +34 -0
  284. wagtail/admin/tests/test_editing_sessions.py +230 -8
  285. wagtail/admin/tests/test_forms.py +192 -1
  286. wagtail/admin/tests/test_icon_sprite.py +22 -2
  287. wagtail/admin/tests/test_page_chooser.py +13 -13
  288. wagtail/admin/tests/test_reports_views.py +4 -1
  289. wagtail/admin/tests/test_userbar.py +69 -5
  290. wagtail/admin/tests/test_views_generic.py +5 -5
  291. wagtail/admin/tests/test_workflows.py +14 -12
  292. wagtail/admin/tests/viewsets/test_model_viewset.py +13 -0
  293. wagtail/admin/ui/autosave.py +5 -0
  294. wagtail/admin/ui/editing_sessions.py +3 -0
  295. wagtail/admin/ui/side_panels.py +19 -20
  296. wagtail/admin/userbar.py +48 -27
  297. wagtail/admin/views/bulk_action/dispatcher.py +2 -2
  298. wagtail/admin/views/chooser.py +6 -6
  299. wagtail/admin/views/editing_sessions.py +20 -7
  300. wagtail/admin/views/generic/__init__.py +1 -0
  301. wagtail/admin/views/generic/chooser.py +5 -5
  302. wagtail/admin/views/generic/mixins.py +143 -26
  303. wagtail/admin/views/generic/models.py +157 -27
  304. wagtail/admin/views/generic/ordering.py +1 -1
  305. wagtail/admin/views/generic/preview.py +4 -4
  306. wagtail/admin/views/home.py +3 -1
  307. wagtail/admin/views/pages/create.py +78 -29
  308. wagtail/admin/views/pages/edit.py +162 -34
  309. wagtail/admin/views/pages/preview.py +4 -4
  310. wagtail/admin/views/pages/revisions.py +3 -0
  311. wagtail/admin/views/pages/search.py +4 -4
  312. wagtail/admin/views/pages/usage.py +2 -2
  313. wagtail/admin/views/tags.py +2 -2
  314. wagtail/admin/views/workflows.py +73 -54
  315. wagtail/admin/viewsets/model.py +34 -8
  316. wagtail/admin/widgets/button.py +11 -4
  317. wagtail/admin/widgets/chooser.py +6 -4
  318. wagtail/admin/widgets/slug.py +1 -1
  319. wagtail/api/v2/filters.py +27 -21
  320. wagtail/api/v2/pagination.py +4 -4
  321. wagtail/api/v2/views.py +7 -7
  322. wagtail/blocks/list_block.py +0 -8
  323. wagtail/blocks/migrations/migrate_operation.py +8 -1
  324. wagtail/blocks/stream_block.py +2 -10
  325. wagtail/blocks/struct_block.py +192 -12
  326. wagtail/compat.py +2 -2
  327. wagtail/contrib/forms/locale/af/LC_MESSAGES/django.mo +0 -0
  328. wagtail/contrib/forms/locale/az_AZ/LC_MESSAGES/django.mo +0 -0
  329. wagtail/contrib/forms/locale/bg/LC_MESSAGES/django.mo +0 -0
  330. wagtail/contrib/forms/locale/bg/LC_MESSAGES/django.po +4 -1
  331. wagtail/contrib/forms/locale/en/LC_MESSAGES/django.mo +0 -0
  332. wagtail/contrib/forms/locale/en/LC_MESSAGES/django.po +1 -1
  333. wagtail/contrib/forms/locale/eu/LC_MESSAGES/django.mo +0 -0
  334. wagtail/contrib/forms/locale/ht/LC_MESSAGES/django.mo +0 -0
  335. wagtail/contrib/forms/locale/hy/LC_MESSAGES/django.mo +0 -0
  336. wagtail/contrib/forms/locale/it/LC_MESSAGES/django.mo +0 -0
  337. wagtail/contrib/forms/locale/it/LC_MESSAGES/django.po +40 -2
  338. wagtail/contrib/forms/locale/ka/LC_MESSAGES/django.mo +0 -0
  339. wagtail/contrib/frontend_cache/backends/azure.py +6 -6
  340. wagtail/contrib/frontend_cache/backends/cloudfront.py +2 -2
  341. wagtail/contrib/frontend_cache/utils.py +1 -1
  342. wagtail/contrib/redirects/forms.py +1 -1
  343. wagtail/contrib/redirects/locale/ar/LC_MESSAGES/django.po +1 -1
  344. wagtail/contrib/redirects/locale/be/LC_MESSAGES/django.po +1 -1
  345. wagtail/contrib/redirects/locale/bg/LC_MESSAGES/django.mo +0 -0
  346. wagtail/contrib/redirects/locale/bg/LC_MESSAGES/django.po +7 -1
  347. wagtail/contrib/redirects/locale/bn/LC_MESSAGES/django.mo +0 -0
  348. wagtail/contrib/redirects/locale/bn/LC_MESSAGES/django.po +1 -1
  349. wagtail/contrib/redirects/locale/ca/LC_MESSAGES/django.po +1 -1
  350. wagtail/contrib/redirects/locale/cs/LC_MESSAGES/django.po +1 -1
  351. wagtail/contrib/redirects/locale/cy/LC_MESSAGES/django.po +1 -1
  352. wagtail/contrib/redirects/locale/da/LC_MESSAGES/django.po +1 -1
  353. wagtail/contrib/redirects/locale/de/LC_MESSAGES/django.mo +0 -0
  354. wagtail/contrib/redirects/locale/de/LC_MESSAGES/django.po +15 -3
  355. wagtail/contrib/redirects/locale/dv/LC_MESSAGES/django.po +1 -1
  356. wagtail/contrib/redirects/locale/el/LC_MESSAGES/django.po +1 -1
  357. wagtail/contrib/redirects/locale/en/LC_MESSAGES/django.mo +0 -0
  358. wagtail/contrib/redirects/locale/en/LC_MESSAGES/django.po +14 -14
  359. wagtail/contrib/redirects/locale/en_IN/LC_MESSAGES/django.mo +0 -0
  360. wagtail/contrib/redirects/locale/en_IN/LC_MESSAGES/django.po +1 -1
  361. wagtail/contrib/redirects/locale/es/LC_MESSAGES/django.po +1 -1
  362. wagtail/contrib/redirects/locale/es_419/LC_MESSAGES/django.mo +0 -0
  363. wagtail/contrib/redirects/locale/es_419/LC_MESSAGES/django.po +1 -1
  364. wagtail/contrib/redirects/locale/es_VE/LC_MESSAGES/django.mo +0 -0
  365. wagtail/contrib/redirects/locale/es_VE/LC_MESSAGES/django.po +1 -1
  366. wagtail/contrib/redirects/locale/et/LC_MESSAGES/django.po +1 -1
  367. wagtail/contrib/redirects/locale/eu/LC_MESSAGES/django.mo +0 -0
  368. wagtail/contrib/redirects/locale/eu/LC_MESSAGES/django.po +1 -1
  369. wagtail/contrib/redirects/locale/fa/LC_MESSAGES/django.po +1 -1
  370. wagtail/contrib/redirects/locale/fi/LC_MESSAGES/django.po +1 -1
  371. wagtail/contrib/redirects/locale/fr/LC_MESSAGES/django.po +1 -1
  372. wagtail/contrib/redirects/locale/gl/LC_MESSAGES/django.po +1 -1
  373. wagtail/contrib/redirects/locale/he_IL/LC_MESSAGES/django.po +1 -1
  374. wagtail/contrib/redirects/locale/hi/LC_MESSAGES/django.mo +0 -0
  375. wagtail/contrib/redirects/locale/hi/LC_MESSAGES/django.po +1 -1
  376. wagtail/contrib/redirects/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  377. wagtail/contrib/redirects/locale/ht/LC_MESSAGES/django.mo +0 -0
  378. wagtail/contrib/redirects/locale/ht/LC_MESSAGES/django.po +1 -1
  379. wagtail/contrib/redirects/locale/hu/LC_MESSAGES/django.po +1 -1
  380. wagtail/contrib/redirects/locale/hy/LC_MESSAGES/django.mo +0 -0
  381. wagtail/contrib/redirects/locale/hy/LC_MESSAGES/django.po +1 -1
  382. wagtail/contrib/redirects/locale/id_ID/LC_MESSAGES/django.po +1 -1
  383. wagtail/contrib/redirects/locale/is_IS/LC_MESSAGES/django.po +1 -1
  384. wagtail/contrib/redirects/locale/it/LC_MESSAGES/django.mo +0 -0
  385. wagtail/contrib/redirects/locale/it/LC_MESSAGES/django.po +17 -4
  386. wagtail/contrib/redirects/locale/ja/LC_MESSAGES/django.po +1 -1
  387. wagtail/contrib/redirects/locale/ka/LC_MESSAGES/django.mo +0 -0
  388. wagtail/contrib/redirects/locale/ka/LC_MESSAGES/django.po +1 -1
  389. wagtail/contrib/redirects/locale/ko/LC_MESSAGES/django.po +1 -1
  390. wagtail/contrib/redirects/locale/lt/LC_MESSAGES/django.po +1 -1
  391. wagtail/contrib/redirects/locale/lv/LC_MESSAGES/django.po +1 -1
  392. wagtail/contrib/redirects/locale/mi/LC_MESSAGES/django.po +1 -1
  393. wagtail/contrib/redirects/locale/mn/LC_MESSAGES/django.po +1 -1
  394. wagtail/contrib/redirects/locale/my/LC_MESSAGES/django.po +1 -1
  395. wagtail/contrib/redirects/locale/nb/LC_MESSAGES/django.po +1 -1
  396. wagtail/contrib/redirects/locale/nl/LC_MESSAGES/django.po +1 -1
  397. wagtail/contrib/redirects/locale/pl/LC_MESSAGES/django.po +1 -1
  398. wagtail/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  399. wagtail/contrib/redirects/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  400. wagtail/contrib/redirects/locale/ro/LC_MESSAGES/django.po +1 -1
  401. wagtail/contrib/redirects/locale/ru/LC_MESSAGES/django.mo +0 -0
  402. wagtail/contrib/redirects/locale/ru/LC_MESSAGES/django.po +15 -2
  403. wagtail/contrib/redirects/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  404. wagtail/contrib/redirects/locale/sl/LC_MESSAGES/django.po +1 -1
  405. wagtail/contrib/redirects/locale/sr/LC_MESSAGES/django.mo +0 -0
  406. wagtail/contrib/redirects/locale/sr/LC_MESSAGES/django.po +1 -1
  407. wagtail/contrib/redirects/locale/sv/LC_MESSAGES/django.mo +0 -0
  408. wagtail/contrib/redirects/locale/sv/LC_MESSAGES/django.po +17 -4
  409. wagtail/contrib/redirects/locale/ta/LC_MESSAGES/django.mo +0 -0
  410. wagtail/contrib/redirects/locale/ta/LC_MESSAGES/django.po +1 -1
  411. wagtail/contrib/redirects/locale/tet/LC_MESSAGES/django.po +1 -1
  412. wagtail/contrib/redirects/locale/th/LC_MESSAGES/django.po +1 -1
  413. wagtail/contrib/redirects/locale/tr/LC_MESSAGES/django.po +1 -1
  414. wagtail/contrib/redirects/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  415. wagtail/contrib/redirects/locale/ug/LC_MESSAGES/django.po +1 -1
  416. wagtail/contrib/redirects/locale/uk/LC_MESSAGES/django.po +1 -1
  417. wagtail/contrib/redirects/locale/vi/LC_MESSAGES/django.po +1 -1
  418. wagtail/contrib/redirects/locale/zh/LC_MESSAGES/django.po +1 -1
  419. wagtail/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  420. wagtail/contrib/redirects/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  421. wagtail/contrib/redirects/middleware.py +11 -7
  422. wagtail/contrib/redirects/models.py +17 -1
  423. wagtail/contrib/redirects/tests/test_import_admin_views.py +3 -3
  424. wagtail/contrib/redirects/tests/test_redirects.py +56 -8
  425. wagtail/contrib/search_promotions/locale/af/LC_MESSAGES/django.mo +0 -0
  426. wagtail/contrib/search_promotions/locale/af/LC_MESSAGES/django.po +1 -1
  427. wagtail/contrib/search_promotions/locale/ar/LC_MESSAGES/django.po +1 -1
  428. wagtail/contrib/search_promotions/locale/az_AZ/LC_MESSAGES/django.mo +0 -0
  429. wagtail/contrib/search_promotions/locale/az_AZ/LC_MESSAGES/django.po +1 -1
  430. wagtail/contrib/search_promotions/locale/be/LC_MESSAGES/django.po +1 -1
  431. wagtail/contrib/search_promotions/locale/bg/LC_MESSAGES/django.po +1 -1
  432. wagtail/contrib/search_promotions/locale/bn/LC_MESSAGES/django.mo +0 -0
  433. wagtail/contrib/search_promotions/locale/bn/LC_MESSAGES/django.po +1 -1
  434. wagtail/contrib/search_promotions/locale/ca/LC_MESSAGES/django.po +1 -1
  435. wagtail/contrib/search_promotions/locale/cs/LC_MESSAGES/django.po +1 -1
  436. wagtail/contrib/search_promotions/locale/cy/LC_MESSAGES/django.po +1 -1
  437. wagtail/contrib/search_promotions/locale/da/LC_MESSAGES/django.po +1 -1
  438. wagtail/contrib/search_promotions/locale/de/LC_MESSAGES/django.mo +0 -0
  439. wagtail/contrib/search_promotions/locale/de/LC_MESSAGES/django.po +9 -3
  440. wagtail/contrib/search_promotions/locale/dv/LC_MESSAGES/django.po +1 -1
  441. wagtail/contrib/search_promotions/locale/el/LC_MESSAGES/django.po +1 -1
  442. wagtail/contrib/search_promotions/locale/en/LC_MESSAGES/django.mo +0 -0
  443. wagtail/contrib/search_promotions/locale/en/LC_MESSAGES/django.po +6 -6
  444. wagtail/contrib/search_promotions/locale/es/LC_MESSAGES/django.po +1 -1
  445. wagtail/contrib/search_promotions/locale/es_419/LC_MESSAGES/django.mo +0 -0
  446. wagtail/contrib/search_promotions/locale/es_419/LC_MESSAGES/django.po +1 -1
  447. wagtail/contrib/search_promotions/locale/et/LC_MESSAGES/django.po +1 -1
  448. wagtail/contrib/search_promotions/locale/eu/LC_MESSAGES/django.po +1 -1
  449. wagtail/contrib/search_promotions/locale/fa/LC_MESSAGES/django.po +1 -1
  450. wagtail/contrib/search_promotions/locale/fi/LC_MESSAGES/django.po +1 -1
  451. wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.po +1 -1
  452. wagtail/contrib/search_promotions/locale/gl/LC_MESSAGES/django.po +1 -1
  453. wagtail/contrib/search_promotions/locale/he_IL/LC_MESSAGES/django.po +1 -1
  454. wagtail/contrib/search_promotions/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  455. wagtail/contrib/search_promotions/locale/ht/LC_MESSAGES/django.po +1 -1
  456. wagtail/contrib/search_promotions/locale/hu/LC_MESSAGES/django.po +1 -1
  457. wagtail/contrib/search_promotions/locale/id_ID/LC_MESSAGES/django.po +1 -1
  458. wagtail/contrib/search_promotions/locale/is_IS/LC_MESSAGES/django.po +1 -1
  459. wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.mo +0 -0
  460. wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.po +44 -3
  461. wagtail/contrib/search_promotions/locale/ja/LC_MESSAGES/django.po +1 -1
  462. wagtail/contrib/search_promotions/locale/ka/LC_MESSAGES/django.po +1 -1
  463. wagtail/contrib/search_promotions/locale/ko/LC_MESSAGES/django.po +1 -1
  464. wagtail/contrib/search_promotions/locale/lt/LC_MESSAGES/django.po +1 -1
  465. wagtail/contrib/search_promotions/locale/lv/LC_MESSAGES/django.po +1 -1
  466. wagtail/contrib/search_promotions/locale/mi/LC_MESSAGES/django.po +1 -1
  467. wagtail/contrib/search_promotions/locale/mn/LC_MESSAGES/django.po +1 -1
  468. wagtail/contrib/search_promotions/locale/my/LC_MESSAGES/django.po +1 -1
  469. wagtail/contrib/search_promotions/locale/nb/LC_MESSAGES/django.po +1 -1
  470. wagtail/contrib/search_promotions/locale/nl/LC_MESSAGES/django.po +1 -1
  471. wagtail/contrib/search_promotions/locale/pl/LC_MESSAGES/django.po +1 -1
  472. wagtail/contrib/search_promotions/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  473. wagtail/contrib/search_promotions/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  474. wagtail/contrib/search_promotions/locale/ro/LC_MESSAGES/django.po +1 -1
  475. wagtail/contrib/search_promotions/locale/ru/LC_MESSAGES/django.mo +0 -0
  476. wagtail/contrib/search_promotions/locale/ru/LC_MESSAGES/django.po +9 -3
  477. wagtail/contrib/search_promotions/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  478. wagtail/contrib/search_promotions/locale/sl/LC_MESSAGES/django.po +1 -1
  479. wagtail/contrib/search_promotions/locale/sv/LC_MESSAGES/django.po +1 -1
  480. wagtail/contrib/search_promotions/locale/tet/LC_MESSAGES/django.po +1 -1
  481. wagtail/contrib/search_promotions/locale/th/LC_MESSAGES/django.po +1 -1
  482. wagtail/contrib/search_promotions/locale/tr/LC_MESSAGES/django.po +1 -1
  483. wagtail/contrib/search_promotions/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  484. wagtail/contrib/search_promotions/locale/ug/LC_MESSAGES/django.po +1 -1
  485. wagtail/contrib/search_promotions/locale/uk/LC_MESSAGES/django.po +1 -1
  486. wagtail/contrib/search_promotions/locale/vi/LC_MESSAGES/django.po +1 -1
  487. wagtail/contrib/search_promotions/locale/zh/LC_MESSAGES/django.po +1 -1
  488. wagtail/contrib/search_promotions/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  489. wagtail/contrib/search_promotions/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  490. wagtail/contrib/search_promotions/tests.py +1 -1
  491. wagtail/contrib/search_promotions/views/settings.py +24 -25
  492. wagtail/contrib/settings/jinja2tags.py +2 -2
  493. wagtail/contrib/settings/locale/ar/LC_MESSAGES/django.po +1 -1
  494. wagtail/contrib/settings/locale/az_AZ/LC_MESSAGES/django.mo +0 -0
  495. wagtail/contrib/settings/locale/az_AZ/LC_MESSAGES/django.po +1 -1
  496. wagtail/contrib/settings/locale/be/LC_MESSAGES/django.po +1 -1
  497. wagtail/contrib/settings/locale/bg/LC_MESSAGES/django.mo +0 -0
  498. wagtail/{locale/af → contrib/settings/locale/bg}/LC_MESSAGES/django.po +7 -16
  499. wagtail/contrib/settings/locale/bn/LC_MESSAGES/django.po +1 -1
  500. wagtail/contrib/settings/locale/ca/LC_MESSAGES/django.po +1 -1
  501. wagtail/contrib/settings/locale/cs/LC_MESSAGES/django.po +1 -1
  502. wagtail/contrib/settings/locale/cy/LC_MESSAGES/django.po +1 -1
  503. wagtail/contrib/settings/locale/da/LC_MESSAGES/django.po +1 -1
  504. wagtail/contrib/settings/locale/de/LC_MESSAGES/django.mo +0 -0
  505. wagtail/contrib/settings/locale/de/LC_MESSAGES/django.po +7 -3
  506. wagtail/contrib/settings/locale/dv/LC_MESSAGES/django.po +1 -1
  507. wagtail/contrib/settings/locale/el/LC_MESSAGES/django.po +1 -1
  508. wagtail/contrib/settings/locale/en/LC_MESSAGES/django.mo +0 -0
  509. wagtail/contrib/settings/locale/en/LC_MESSAGES/django.po +2 -2
  510. wagtail/contrib/settings/locale/en_IN/LC_MESSAGES/django.mo +0 -0
  511. wagtail/contrib/settings/locale/en_IN/LC_MESSAGES/django.po +1 -1
  512. wagtail/contrib/settings/locale/es/LC_MESSAGES/django.po +1 -1
  513. wagtail/contrib/settings/locale/es_419/LC_MESSAGES/django.po +1 -1
  514. wagtail/contrib/settings/locale/es_VE/LC_MESSAGES/django.po +1 -1
  515. wagtail/contrib/settings/locale/et/LC_MESSAGES/django.po +1 -1
  516. wagtail/contrib/settings/locale/fa/LC_MESSAGES/django.po +1 -1
  517. wagtail/contrib/settings/locale/fi/LC_MESSAGES/django.po +1 -1
  518. wagtail/contrib/settings/locale/fr/LC_MESSAGES/django.po +1 -1
  519. wagtail/contrib/settings/locale/gl/LC_MESSAGES/django.po +1 -1
  520. wagtail/contrib/settings/locale/he_IL/LC_MESSAGES/django.po +1 -1
  521. wagtail/contrib/settings/locale/hi/LC_MESSAGES/django.po +1 -1
  522. wagtail/contrib/settings/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  523. wagtail/contrib/settings/locale/ht/LC_MESSAGES/django.po +1 -1
  524. wagtail/contrib/settings/locale/hu/LC_MESSAGES/django.po +1 -1
  525. wagtail/contrib/settings/locale/id_ID/LC_MESSAGES/django.po +1 -1
  526. wagtail/contrib/settings/locale/is_IS/LC_MESSAGES/django.po +1 -1
  527. wagtail/contrib/settings/locale/it/LC_MESSAGES/django.mo +0 -0
  528. wagtail/contrib/settings/locale/it/LC_MESSAGES/django.po +7 -3
  529. wagtail/contrib/settings/locale/ja/LC_MESSAGES/django.po +1 -1
  530. wagtail/contrib/settings/locale/ka/LC_MESSAGES/django.mo +0 -0
  531. wagtail/contrib/settings/locale/ka/LC_MESSAGES/django.po +1 -1
  532. wagtail/contrib/settings/locale/ko/LC_MESSAGES/django.po +1 -1
  533. wagtail/contrib/settings/locale/lt/LC_MESSAGES/django.po +1 -1
  534. wagtail/contrib/settings/locale/lv/LC_MESSAGES/django.po +1 -1
  535. wagtail/contrib/settings/locale/mi/LC_MESSAGES/django.po +1 -1
  536. wagtail/contrib/settings/locale/mn/LC_MESSAGES/django.po +1 -1
  537. wagtail/contrib/settings/locale/my/LC_MESSAGES/django.po +1 -1
  538. wagtail/contrib/settings/locale/nb/LC_MESSAGES/django.po +1 -1
  539. wagtail/contrib/settings/locale/nl/LC_MESSAGES/django.po +1 -1
  540. wagtail/contrib/settings/locale/pl/LC_MESSAGES/django.po +1 -1
  541. wagtail/contrib/settings/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  542. wagtail/contrib/settings/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  543. wagtail/contrib/settings/locale/ro/LC_MESSAGES/django.po +1 -1
  544. wagtail/contrib/settings/locale/ru/LC_MESSAGES/django.po +1 -1
  545. wagtail/contrib/settings/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  546. wagtail/contrib/settings/locale/sl/LC_MESSAGES/django.po +1 -1
  547. wagtail/contrib/settings/locale/sr/LC_MESSAGES/django.mo +0 -0
  548. wagtail/contrib/settings/locale/sr/LC_MESSAGES/django.po +1 -1
  549. wagtail/contrib/settings/locale/sv/LC_MESSAGES/django.mo +0 -0
  550. wagtail/contrib/settings/locale/sv/LC_MESSAGES/django.po +4 -3
  551. wagtail/contrib/settings/locale/ta/LC_MESSAGES/django.po +1 -1
  552. wagtail/contrib/settings/locale/tet/LC_MESSAGES/django.po +1 -1
  553. wagtail/contrib/settings/locale/th/LC_MESSAGES/django.po +1 -1
  554. wagtail/contrib/settings/locale/tr/LC_MESSAGES/django.po +1 -1
  555. wagtail/contrib/settings/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  556. wagtail/contrib/settings/locale/ug/LC_MESSAGES/django.po +1 -1
  557. wagtail/contrib/settings/locale/uk/LC_MESSAGES/django.po +1 -1
  558. wagtail/contrib/settings/locale/vi/LC_MESSAGES/django.po +1 -1
  559. wagtail/contrib/settings/locale/zh/LC_MESSAGES/django.mo +0 -0
  560. wagtail/contrib/settings/locale/zh/LC_MESSAGES/django.po +1 -1
  561. wagtail/contrib/settings/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  562. wagtail/contrib/settings/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  563. wagtail/contrib/settings/tests/generic/test_admin.py +118 -2
  564. wagtail/contrib/settings/tests/site_specific/test_admin.py +78 -15
  565. wagtail/contrib/settings/tests/site_specific/test_model.py +2 -2
  566. wagtail/contrib/settings/views.py +7 -0
  567. wagtail/contrib/simple_translation/locale/bg/LC_MESSAGES/django.mo +0 -0
  568. wagtail/contrib/simple_translation/locale/bg/LC_MESSAGES/django.po +26 -0
  569. wagtail/contrib/simple_translation/locale/el/LC_MESSAGES/django.mo +0 -0
  570. wagtail/contrib/simple_translation/locale/en/LC_MESSAGES/django.mo +0 -0
  571. wagtail/contrib/simple_translation/locale/en/LC_MESSAGES/django.po +1 -1
  572. wagtail/contrib/simple_translation/locale/es_419/LC_MESSAGES/django.mo +0 -0
  573. wagtail/contrib/simple_translation/locale/fa/LC_MESSAGES/django.mo +0 -0
  574. wagtail/contrib/simple_translation/locale/it/LC_MESSAGES/django.mo +0 -0
  575. wagtail/contrib/simple_translation/locale/it/LC_MESSAGES/django.po +5 -2
  576. wagtail/contrib/simple_translation/locale/mi/LC_MESSAGES/django.mo +0 -0
  577. wagtail/contrib/simple_translation/locale/mn/LC_MESSAGES/django.mo +0 -0
  578. wagtail/contrib/simple_translation/locale/nb/LC_MESSAGES/django.mo +0 -0
  579. wagtail/contrib/simple_translation/locale/vi/LC_MESSAGES/django.mo +0 -0
  580. wagtail/contrib/simple_translation/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
  581. wagtail/contrib/styleguide/locale/af/LC_MESSAGES/django.mo +0 -0
  582. wagtail/contrib/styleguide/locale/af/LC_MESSAGES/django.po +1 -1
  583. wagtail/contrib/styleguide/locale/ar/LC_MESSAGES/django.po +1 -1
  584. wagtail/contrib/styleguide/locale/az_AZ/LC_MESSAGES/django.mo +0 -0
  585. wagtail/contrib/styleguide/locale/az_AZ/LC_MESSAGES/django.po +1 -1
  586. wagtail/contrib/styleguide/locale/be/LC_MESSAGES/django.po +1 -1
  587. wagtail/contrib/styleguide/locale/bg/LC_MESSAGES/django.mo +0 -0
  588. wagtail/contrib/styleguide/locale/bg/LC_MESSAGES/django.po +1 -1
  589. wagtail/contrib/styleguide/locale/bn/LC_MESSAGES/django.mo +0 -0
  590. wagtail/contrib/styleguide/locale/bn/LC_MESSAGES/django.po +1 -1
  591. wagtail/contrib/styleguide/locale/ca/LC_MESSAGES/django.po +1 -1
  592. wagtail/contrib/styleguide/locale/cs/LC_MESSAGES/django.po +1 -1
  593. wagtail/contrib/styleguide/locale/cy/LC_MESSAGES/django.po +1 -1
  594. wagtail/contrib/styleguide/locale/da/LC_MESSAGES/django.mo +0 -0
  595. wagtail/contrib/styleguide/locale/da/LC_MESSAGES/django.po +1 -1
  596. wagtail/contrib/styleguide/locale/de/LC_MESSAGES/django.po +1 -1
  597. wagtail/contrib/styleguide/locale/dv/LC_MESSAGES/django.po +1 -1
  598. wagtail/contrib/styleguide/locale/el/LC_MESSAGES/django.po +1 -1
  599. wagtail/contrib/styleguide/locale/en/LC_MESSAGES/django.mo +0 -0
  600. wagtail/contrib/styleguide/locale/en/LC_MESSAGES/django.po +7 -7
  601. wagtail/contrib/styleguide/locale/en_IN/LC_MESSAGES/django.mo +0 -0
  602. wagtail/contrib/styleguide/locale/en_IN/LC_MESSAGES/django.po +1 -1
  603. wagtail/contrib/styleguide/locale/es/LC_MESSAGES/django.po +1 -1
  604. wagtail/contrib/styleguide/locale/es_419/LC_MESSAGES/django.mo +0 -0
  605. wagtail/contrib/styleguide/locale/es_419/LC_MESSAGES/django.po +1 -1
  606. wagtail/contrib/styleguide/locale/es_VE/LC_MESSAGES/django.mo +0 -0
  607. wagtail/contrib/styleguide/locale/es_VE/LC_MESSAGES/django.po +1 -1
  608. wagtail/contrib/styleguide/locale/et/LC_MESSAGES/django.po +1 -1
  609. wagtail/contrib/styleguide/locale/fa/LC_MESSAGES/django.po +1 -1
  610. wagtail/contrib/styleguide/locale/fi/LC_MESSAGES/django.po +1 -1
  611. wagtail/contrib/styleguide/locale/fr/LC_MESSAGES/django.po +1 -1
  612. wagtail/contrib/styleguide/locale/gl/LC_MESSAGES/django.po +1 -1
  613. wagtail/contrib/styleguide/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  614. wagtail/contrib/styleguide/locale/he_IL/LC_MESSAGES/django.po +1 -1
  615. wagtail/contrib/styleguide/locale/hi/LC_MESSAGES/django.mo +0 -0
  616. wagtail/contrib/styleguide/locale/hi/LC_MESSAGES/django.po +1 -1
  617. wagtail/contrib/styleguide/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  618. wagtail/contrib/styleguide/locale/ht/LC_MESSAGES/django.po +1 -1
  619. wagtail/contrib/styleguide/locale/hu/LC_MESSAGES/django.po +1 -1
  620. wagtail/contrib/styleguide/locale/id_ID/LC_MESSAGES/django.po +1 -1
  621. wagtail/contrib/styleguide/locale/is_IS/LC_MESSAGES/django.po +1 -1
  622. wagtail/contrib/styleguide/locale/it/LC_MESSAGES/django.po +1 -1
  623. wagtail/contrib/styleguide/locale/ja/LC_MESSAGES/django.po +1 -1
  624. wagtail/contrib/styleguide/locale/ka/LC_MESSAGES/django.mo +0 -0
  625. wagtail/contrib/styleguide/locale/ka/LC_MESSAGES/django.po +1 -1
  626. wagtail/contrib/styleguide/locale/ko/LC_MESSAGES/django.po +1 -1
  627. wagtail/contrib/styleguide/locale/lt/LC_MESSAGES/django.po +1 -1
  628. wagtail/contrib/styleguide/locale/lv/LC_MESSAGES/django.po +1 -1
  629. wagtail/contrib/styleguide/locale/mi/LC_MESSAGES/django.po +1 -1
  630. wagtail/contrib/styleguide/locale/mn/LC_MESSAGES/django.po +1 -1
  631. wagtail/contrib/styleguide/locale/my/LC_MESSAGES/django.po +1 -1
  632. wagtail/contrib/styleguide/locale/nb/LC_MESSAGES/django.po +1 -1
  633. wagtail/contrib/styleguide/locale/nl/LC_MESSAGES/django.po +1 -1
  634. wagtail/contrib/styleguide/locale/pl/LC_MESSAGES/django.po +1 -1
  635. wagtail/contrib/styleguide/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  636. wagtail/contrib/styleguide/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  637. wagtail/contrib/styleguide/locale/ro/LC_MESSAGES/django.po +1 -1
  638. wagtail/contrib/styleguide/locale/ru/LC_MESSAGES/django.po +1 -1
  639. wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  640. wagtail/contrib/styleguide/locale/sl/LC_MESSAGES/django.po +1 -1
  641. wagtail/contrib/styleguide/locale/sv/LC_MESSAGES/django.po +1 -1
  642. wagtail/contrib/styleguide/locale/ta/LC_MESSAGES/django.mo +0 -0
  643. wagtail/contrib/styleguide/locale/ta/LC_MESSAGES/django.po +1 -1
  644. wagtail/contrib/styleguide/locale/tet/LC_MESSAGES/django.po +1 -1
  645. wagtail/contrib/styleguide/locale/th/LC_MESSAGES/django.po +1 -1
  646. wagtail/contrib/styleguide/locale/tr/LC_MESSAGES/django.po +1 -1
  647. wagtail/contrib/styleguide/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  648. wagtail/contrib/styleguide/locale/ug/LC_MESSAGES/django.po +1 -1
  649. wagtail/contrib/styleguide/locale/uk/LC_MESSAGES/django.po +1 -1
  650. wagtail/contrib/styleguide/locale/vi/LC_MESSAGES/django.po +1 -1
  651. wagtail/contrib/styleguide/locale/zh/LC_MESSAGES/django.mo +0 -0
  652. wagtail/contrib/styleguide/locale/zh/LC_MESSAGES/django.po +1 -1
  653. wagtail/contrib/styleguide/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  654. wagtail/contrib/styleguide/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  655. wagtail/contrib/styleguide/tests.py +2 -0
  656. wagtail/contrib/styleguide/views.py +4 -5
  657. wagtail/contrib/table_block/locale/ar/LC_MESSAGES/django.mo +0 -0
  658. wagtail/contrib/table_block/locale/ar/LC_MESSAGES/django.po +5 -1
  659. wagtail/contrib/table_block/locale/de/LC_MESSAGES/django.mo +0 -0
  660. wagtail/contrib/table_block/locale/de/LC_MESSAGES/django.po +6 -3
  661. wagtail/contrib/table_block/locale/en/LC_MESSAGES/django.mo +0 -0
  662. wagtail/contrib/table_block/locale/en/LC_MESSAGES/django.po +1 -1
  663. wagtail/contrib/table_block/locale/en_IN/LC_MESSAGES/django.mo +0 -0
  664. wagtail/contrib/table_block/locale/et/LC_MESSAGES/django.mo +0 -0
  665. wagtail/contrib/table_block/locale/fa/LC_MESSAGES/django.mo +0 -0
  666. wagtail/contrib/table_block/locale/ht/LC_MESSAGES/django.mo +0 -0
  667. wagtail/contrib/table_block/locale/id_ID/LC_MESSAGES/django.mo +0 -0
  668. wagtail/contrib/table_block/locale/it/LC_MESSAGES/django.mo +0 -0
  669. wagtail/contrib/table_block/locale/it/LC_MESSAGES/django.po +5 -2
  670. wagtail/contrib/table_block/locale/ja/LC_MESSAGES/django.mo +0 -0
  671. wagtail/contrib/table_block/locale/lv/LC_MESSAGES/django.mo +0 -0
  672. wagtail/contrib/table_block/locale/mi/LC_MESSAGES/django.mo +0 -0
  673. wagtail/contrib/table_block/locale/mn/LC_MESSAGES/django.mo +0 -0
  674. wagtail/contrib/table_block/locale/my/LC_MESSAGES/django.mo +0 -0
  675. wagtail/contrib/table_block/locale/nb/LC_MESSAGES/django.mo +0 -0
  676. wagtail/contrib/table_block/locale/ru/LC_MESSAGES/django.mo +0 -0
  677. wagtail/contrib/table_block/locale/ru/LC_MESSAGES/django.po +6 -3
  678. wagtail/contrib/table_block/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  679. wagtail/contrib/table_block/locale/tet/LC_MESSAGES/django.mo +0 -0
  680. wagtail/contrib/table_block/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
  681. wagtail/contrib/table_block/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
  682. wagtail/contrib/typed_table_block/blocks.py +37 -0
  683. wagtail/contrib/typed_table_block/locale/ar/LC_MESSAGES/django.po +1 -1
  684. wagtail/contrib/typed_table_block/locale/be/LC_MESSAGES/django.po +1 -1
  685. wagtail/contrib/typed_table_block/locale/ca/LC_MESSAGES/django.po +1 -1
  686. wagtail/contrib/typed_table_block/locale/cy/LC_MESSAGES/django.po +1 -1
  687. wagtail/contrib/typed_table_block/locale/de/LC_MESSAGES/django.po +1 -1
  688. wagtail/contrib/typed_table_block/locale/dv/LC_MESSAGES/django.mo +0 -0
  689. wagtail/contrib/typed_table_block/locale/dv/LC_MESSAGES/django.po +1 -1
  690. wagtail/contrib/typed_table_block/locale/el/LC_MESSAGES/django.po +1 -1
  691. wagtail/contrib/typed_table_block/locale/en/LC_MESSAGES/django.mo +0 -0
  692. wagtail/contrib/typed_table_block/locale/en/LC_MESSAGES/django.po +10 -10
  693. wagtail/contrib/typed_table_block/locale/es/LC_MESSAGES/django.po +1 -1
  694. wagtail/contrib/typed_table_block/locale/fa/LC_MESSAGES/django.po +1 -1
  695. wagtail/contrib/typed_table_block/locale/fi/LC_MESSAGES/django.po +1 -1
  696. wagtail/contrib/typed_table_block/locale/fr/LC_MESSAGES/django.po +1 -1
  697. wagtail/contrib/typed_table_block/locale/gl/LC_MESSAGES/django.po +1 -1
  698. wagtail/contrib/typed_table_block/locale/hu/LC_MESSAGES/django.po +1 -1
  699. wagtail/contrib/typed_table_block/locale/is_IS/LC_MESSAGES/django.po +1 -1
  700. wagtail/contrib/typed_table_block/locale/it/LC_MESSAGES/django.po +1 -1
  701. wagtail/contrib/typed_table_block/locale/ko/LC_MESSAGES/django.po +1 -1
  702. wagtail/contrib/typed_table_block/locale/lt/LC_MESSAGES/django.po +1 -1
  703. wagtail/contrib/typed_table_block/locale/nl/LC_MESSAGES/django.po +1 -1
  704. wagtail/contrib/typed_table_block/locale/pl/LC_MESSAGES/django.po +1 -1
  705. wagtail/contrib/typed_table_block/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  706. wagtail/contrib/typed_table_block/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  707. wagtail/contrib/typed_table_block/locale/ro/LC_MESSAGES/django.po +1 -1
  708. wagtail/contrib/typed_table_block/locale/ru/LC_MESSAGES/django.po +1 -1
  709. wagtail/contrib/typed_table_block/locale/sl/LC_MESSAGES/django.po +1 -1
  710. wagtail/contrib/typed_table_block/locale/sv/LC_MESSAGES/django.mo +0 -0
  711. wagtail/contrib/typed_table_block/locale/sv/LC_MESSAGES/django.po +5 -4
  712. wagtail/contrib/typed_table_block/locale/th/LC_MESSAGES/django.mo +0 -0
  713. wagtail/contrib/typed_table_block/locale/th/LC_MESSAGES/django.po +1 -1
  714. wagtail/contrib/typed_table_block/locale/tr/LC_MESSAGES/django.po +1 -1
  715. wagtail/contrib/typed_table_block/locale/ug/LC_MESSAGES/django.po +1 -1
  716. wagtail/contrib/typed_table_block/locale/uk/LC_MESSAGES/django.po +1 -1
  717. wagtail/contrib/typed_table_block/locale/zh/LC_MESSAGES/django.po +1 -1
  718. wagtail/contrib/typed_table_block/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  719. wagtail/contrib/typed_table_block/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  720. wagtail/contrib/typed_table_block/tests.py +108 -0
  721. wagtail/coreutils.py +4 -4
  722. wagtail/documents/__init__.py +4 -4
  723. wagtail/documents/locale/af/LC_MESSAGES/django.mo +0 -0
  724. wagtail/documents/locale/af/LC_MESSAGES/django.po +1 -1
  725. wagtail/documents/locale/ar/LC_MESSAGES/django.po +1 -1
  726. wagtail/documents/locale/az_AZ/LC_MESSAGES/django.mo +0 -0
  727. wagtail/documents/locale/az_AZ/LC_MESSAGES/django.po +1 -1
  728. wagtail/documents/locale/be/LC_MESSAGES/django.po +1 -1
  729. wagtail/documents/locale/bg/LC_MESSAGES/django.mo +0 -0
  730. wagtail/documents/locale/bg/LC_MESSAGES/django.po +10 -1
  731. wagtail/documents/locale/bn/LC_MESSAGES/django.mo +0 -0
  732. wagtail/documents/locale/bn/LC_MESSAGES/django.po +1 -1
  733. wagtail/documents/locale/ca/LC_MESSAGES/django.po +1 -1
  734. wagtail/documents/locale/cs/LC_MESSAGES/django.po +1 -1
  735. wagtail/documents/locale/cy/LC_MESSAGES/django.po +1 -1
  736. wagtail/documents/locale/da/LC_MESSAGES/django.po +1 -1
  737. wagtail/documents/locale/de/LC_MESSAGES/django.mo +0 -0
  738. wagtail/documents/locale/de/LC_MESSAGES/django.po +18 -3
  739. wagtail/documents/locale/dv/LC_MESSAGES/django.po +1 -1
  740. wagtail/documents/locale/el/LC_MESSAGES/django.po +1 -1
  741. wagtail/documents/locale/en/LC_MESSAGES/django.mo +0 -0
  742. wagtail/documents/locale/en/LC_MESSAGES/django.po +15 -15
  743. wagtail/documents/locale/es/LC_MESSAGES/django.po +1 -1
  744. wagtail/documents/locale/es_419/LC_MESSAGES/django.po +1 -1
  745. wagtail/documents/locale/et/LC_MESSAGES/django.po +1 -1
  746. wagtail/documents/locale/eu/LC_MESSAGES/django.mo +0 -0
  747. wagtail/documents/locale/eu/LC_MESSAGES/django.po +1 -1
  748. wagtail/documents/locale/fa/LC_MESSAGES/django.po +1 -1
  749. wagtail/documents/locale/fi/LC_MESSAGES/django.po +1 -1
  750. wagtail/documents/locale/fr/LC_MESSAGES/django.po +1 -1
  751. wagtail/documents/locale/gl/LC_MESSAGES/django.po +1 -1
  752. wagtail/documents/locale/he_IL/LC_MESSAGES/django.po +1 -1
  753. wagtail/documents/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  754. wagtail/documents/locale/ht/LC_MESSAGES/django.mo +0 -0
  755. wagtail/documents/locale/ht/LC_MESSAGES/django.po +1 -1
  756. wagtail/documents/locale/hu/LC_MESSAGES/django.po +1 -1
  757. wagtail/documents/locale/id_ID/LC_MESSAGES/django.po +1 -1
  758. wagtail/documents/locale/is_IS/LC_MESSAGES/django.po +1 -1
  759. wagtail/documents/locale/it/LC_MESSAGES/django.mo +0 -0
  760. wagtail/documents/locale/it/LC_MESSAGES/django.po +33 -3
  761. wagtail/documents/locale/ja/LC_MESSAGES/django.po +1 -1
  762. wagtail/documents/locale/ka/LC_MESSAGES/django.po +1 -1
  763. wagtail/documents/locale/ko/LC_MESSAGES/django.po +1 -1
  764. wagtail/documents/locale/lt/LC_MESSAGES/django.po +1 -1
  765. wagtail/documents/locale/lv/LC_MESSAGES/django.po +1 -1
  766. wagtail/documents/locale/mi/LC_MESSAGES/django.po +1 -1
  767. wagtail/documents/locale/mn/LC_MESSAGES/django.po +1 -1
  768. wagtail/documents/locale/my/LC_MESSAGES/django.po +1 -1
  769. wagtail/documents/locale/nb/LC_MESSAGES/django.po +1 -1
  770. wagtail/documents/locale/nl/LC_MESSAGES/django.po +1 -1
  771. wagtail/documents/locale/pl/LC_MESSAGES/django.po +1 -1
  772. wagtail/documents/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  773. wagtail/documents/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  774. wagtail/documents/locale/ro/LC_MESSAGES/django.po +1 -1
  775. wagtail/documents/locale/ru/LC_MESSAGES/django.mo +0 -0
  776. wagtail/documents/locale/ru/LC_MESSAGES/django.po +7 -3
  777. wagtail/documents/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  778. wagtail/documents/locale/sl/LC_MESSAGES/django.po +1 -1
  779. wagtail/documents/locale/sv/LC_MESSAGES/django.mo +0 -0
  780. wagtail/documents/locale/sv/LC_MESSAGES/django.po +33 -5
  781. wagtail/documents/locale/tet/LC_MESSAGES/django.po +1 -1
  782. wagtail/documents/locale/th/LC_MESSAGES/django.po +1 -1
  783. wagtail/documents/locale/tr/LC_MESSAGES/django.po +1 -1
  784. wagtail/documents/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  785. wagtail/documents/locale/ug/LC_MESSAGES/django.po +1 -1
  786. wagtail/documents/locale/uk/LC_MESSAGES/django.po +1 -1
  787. wagtail/documents/locale/vi/LC_MESSAGES/django.po +1 -1
  788. wagtail/documents/locale/zh/LC_MESSAGES/django.po +1 -1
  789. wagtail/documents/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  790. wagtail/documents/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  791. wagtail/documents/models.py +1 -1
  792. wagtail/documents/tests/test_admin_views.py +19 -4
  793. wagtail/documents/tests/test_search.py +0 -2
  794. wagtail/documents/tests/test_views.py +6 -4
  795. wagtail/documents/views/bulk_actions/add_tags.py +1 -1
  796. wagtail/embeds/finders/facebook.py +3 -3
  797. wagtail/embeds/finders/instagram.py +3 -3
  798. wagtail/embeds/finders/oembed.py +7 -2
  799. wagtail/embeds/locale/az_AZ/LC_MESSAGES/django.mo +0 -0
  800. wagtail/embeds/locale/bn/LC_MESSAGES/django.mo +0 -0
  801. wagtail/embeds/locale/da/LC_MESSAGES/django.mo +0 -0
  802. wagtail/embeds/locale/dv/LC_MESSAGES/django.mo +0 -0
  803. wagtail/embeds/locale/en/LC_MESSAGES/django.mo +0 -0
  804. wagtail/embeds/locale/en/LC_MESSAGES/django.po +1 -1
  805. wagtail/embeds/locale/es_419/LC_MESSAGES/django.mo +0 -0
  806. wagtail/embeds/locale/lv/LC_MESSAGES/django.mo +0 -0
  807. wagtail/embeds/locale/my/LC_MESSAGES/django.mo +0 -0
  808. wagtail/embeds/oembed_providers.py +8 -0
  809. wagtail/embeds/tests/test_embeds.py +35 -0
  810. wagtail/images/__init__.py +4 -4
  811. wagtail/images/admin_urls.py +3 -3
  812. wagtail/images/blocks.py +1 -1
  813. wagtail/images/formats.py +2 -2
  814. wagtail/images/image_operations.py +2 -2
  815. wagtail/images/locale/ar/LC_MESSAGES/django.po +1 -1
  816. wagtail/images/locale/az_AZ/LC_MESSAGES/django.mo +0 -0
  817. wagtail/images/locale/az_AZ/LC_MESSAGES/django.po +1 -1
  818. wagtail/images/locale/be/LC_MESSAGES/django.po +1 -1
  819. wagtail/images/locale/bg/LC_MESSAGES/django.mo +0 -0
  820. wagtail/images/locale/bg/LC_MESSAGES/django.po +13 -1
  821. wagtail/images/locale/bn/LC_MESSAGES/django.po +1 -1
  822. wagtail/images/locale/ca/LC_MESSAGES/django.mo +0 -0
  823. wagtail/images/locale/ca/LC_MESSAGES/django.po +6 -3
  824. wagtail/images/locale/cs/LC_MESSAGES/django.po +1 -1
  825. wagtail/images/locale/cy/LC_MESSAGES/django.po +1 -1
  826. wagtail/images/locale/da/LC_MESSAGES/django.po +1 -1
  827. wagtail/images/locale/de/LC_MESSAGES/django.mo +0 -0
  828. wagtail/images/locale/de/LC_MESSAGES/django.po +30 -3
  829. wagtail/images/locale/dv/LC_MESSAGES/django.po +1 -1
  830. wagtail/images/locale/el/LC_MESSAGES/django.po +1 -1
  831. wagtail/images/locale/en/LC_MESSAGES/django.mo +0 -0
  832. wagtail/images/locale/en/LC_MESSAGES/django.po +44 -40
  833. wagtail/images/locale/es/LC_MESSAGES/django.po +1 -1
  834. wagtail/images/locale/es_419/LC_MESSAGES/django.po +1 -1
  835. wagtail/images/locale/et/LC_MESSAGES/django.po +1 -1
  836. wagtail/images/locale/eu/LC_MESSAGES/django.mo +0 -0
  837. wagtail/images/locale/eu/LC_MESSAGES/django.po +1 -1
  838. wagtail/images/locale/fa/LC_MESSAGES/django.po +1 -1
  839. wagtail/images/locale/fi/LC_MESSAGES/django.po +1 -1
  840. wagtail/images/locale/fr/LC_MESSAGES/django.mo +0 -0
  841. wagtail/images/locale/fr/LC_MESSAGES/django.po +6 -3
  842. wagtail/images/locale/gl/LC_MESSAGES/django.mo +0 -0
  843. wagtail/images/locale/gl/LC_MESSAGES/django.po +6 -3
  844. wagtail/images/locale/he_IL/LC_MESSAGES/django.po +1 -1
  845. wagtail/images/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  846. wagtail/images/locale/ht/LC_MESSAGES/django.mo +0 -0
  847. wagtail/images/locale/ht/LC_MESSAGES/django.po +1 -1
  848. wagtail/images/locale/hu/LC_MESSAGES/django.po +1 -1
  849. wagtail/images/locale/id_ID/LC_MESSAGES/django.po +1 -1
  850. wagtail/images/locale/is_IS/LC_MESSAGES/django.po +1 -1
  851. wagtail/images/locale/it/LC_MESSAGES/django.mo +0 -0
  852. wagtail/images/locale/it/LC_MESSAGES/django.po +54 -5
  853. wagtail/images/locale/ja/LC_MESSAGES/django.po +1 -1
  854. wagtail/images/locale/ka/LC_MESSAGES/django.po +1 -1
  855. wagtail/images/locale/ko/LC_MESSAGES/django.po +1 -1
  856. wagtail/images/locale/lt/LC_MESSAGES/django.po +1 -1
  857. wagtail/images/locale/lv/LC_MESSAGES/django.po +1 -1
  858. wagtail/images/locale/mi/LC_MESSAGES/django.po +1 -1
  859. wagtail/images/locale/mn/LC_MESSAGES/django.po +1 -1
  860. wagtail/images/locale/my/LC_MESSAGES/django.po +1 -1
  861. wagtail/images/locale/nb/LC_MESSAGES/django.po +1 -1
  862. wagtail/images/locale/nl/LC_MESSAGES/django.mo +0 -0
  863. wagtail/images/locale/nl/LC_MESSAGES/django.po +9 -6
  864. wagtail/images/locale/pl/LC_MESSAGES/django.po +1 -1
  865. wagtail/images/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  866. wagtail/images/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  867. wagtail/images/locale/ro/LC_MESSAGES/django.po +1 -1
  868. wagtail/images/locale/ru/LC_MESSAGES/django.mo +0 -0
  869. wagtail/images/locale/ru/LC_MESSAGES/django.po +15 -3
  870. wagtail/images/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  871. wagtail/images/locale/sl/LC_MESSAGES/django.po +1 -1
  872. wagtail/images/locale/sv/LC_MESSAGES/django.mo +0 -0
  873. wagtail/images/locale/sv/LC_MESSAGES/django.po +50 -7
  874. wagtail/images/locale/tet/LC_MESSAGES/django.po +1 -1
  875. wagtail/images/locale/th/LC_MESSAGES/django.po +1 -1
  876. wagtail/images/locale/tr/LC_MESSAGES/django.po +1 -1
  877. wagtail/images/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  878. wagtail/images/locale/ug/LC_MESSAGES/django.po +1 -1
  879. wagtail/images/locale/uk/LC_MESSAGES/django.po +1 -1
  880. wagtail/images/locale/vi/LC_MESSAGES/django.po +1 -1
  881. wagtail/images/locale/zh/LC_MESSAGES/django.po +1 -1
  882. wagtail/images/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  883. wagtail/images/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  884. wagtail/images/models.py +11 -10
  885. wagtail/images/templates/wagtailimages/images/index_results.html +1 -1
  886. wagtail/images/templates/wagtailimages/images/url_generator.html +17 -38
  887. wagtail/images/templates/wagtailimages/images/url_generator_output.html +28 -0
  888. wagtail/images/templatetags/wagtailimages_tags.py +4 -4
  889. wagtail/images/tests/test_admin_views.py +432 -59
  890. wagtail/images/tests/test_image_operations.py +2 -2
  891. wagtail/images/tests/test_models.py +0 -2
  892. wagtail/images/views/bulk_actions/add_tags.py +1 -1
  893. wagtail/images/views/images.py +72 -39
  894. wagtail/locale/ar/LC_MESSAGES/django.mo +0 -0
  895. wagtail/locale/ar/LC_MESSAGES/django.po +10 -19
  896. wagtail/locale/az_AZ/LC_MESSAGES/django.mo +0 -0
  897. wagtail/locale/az_AZ/LC_MESSAGES/django.po +4 -4
  898. wagtail/locale/be/LC_MESSAGES/django.mo +0 -0
  899. wagtail/locale/be/LC_MESSAGES/django.po +7 -19
  900. wagtail/locale/bg/LC_MESSAGES/django.mo +0 -0
  901. wagtail/locale/bg/LC_MESSAGES/django.po +35 -11
  902. wagtail/locale/bn/LC_MESSAGES/django.po +4 -4
  903. wagtail/locale/ca/LC_MESSAGES/django.mo +0 -0
  904. wagtail/locale/ca/LC_MESSAGES/django.po +24 -21
  905. wagtail/locale/cs/LC_MESSAGES/django.mo +0 -0
  906. wagtail/locale/cs/LC_MESSAGES/django.po +7 -19
  907. wagtail/locale/cy/LC_MESSAGES/django.mo +0 -0
  908. wagtail/locale/cy/LC_MESSAGES/django.po +10 -13
  909. wagtail/locale/da/LC_MESSAGES/django.mo +0 -0
  910. wagtail/locale/da/LC_MESSAGES/django.po +7 -16
  911. wagtail/locale/de/LC_MESSAGES/django.mo +0 -0
  912. wagtail/locale/de/LC_MESSAGES/django.po +41 -21
  913. wagtail/locale/dv/LC_MESSAGES/django.mo +0 -0
  914. wagtail/locale/dv/LC_MESSAGES/django.po +7 -19
  915. wagtail/locale/el/LC_MESSAGES/django.mo +0 -0
  916. wagtail/locale/el/LC_MESSAGES/django.po +10 -19
  917. wagtail/locale/en/LC_MESSAGES/django.mo +0 -0
  918. wagtail/locale/en/LC_MESSAGES/django.po +103 -105
  919. wagtail/locale/es/LC_MESSAGES/django.mo +0 -0
  920. wagtail/locale/es/LC_MESSAGES/django.po +10 -19
  921. wagtail/locale/es_419/LC_MESSAGES/django.po +6 -6
  922. wagtail/locale/et/LC_MESSAGES/django.mo +0 -0
  923. wagtail/locale/et/LC_MESSAGES/django.po +7 -16
  924. wagtail/locale/eu/LC_MESSAGES/django.mo +0 -0
  925. wagtail/locale/eu/LC_MESSAGES/django.po +4 -10
  926. wagtail/locale/fa/LC_MESSAGES/django.mo +0 -0
  927. wagtail/locale/fa/LC_MESSAGES/django.po +10 -16
  928. wagtail/locale/fi/LC_MESSAGES/django.mo +0 -0
  929. wagtail/locale/fi/LC_MESSAGES/django.po +10 -19
  930. wagtail/locale/fr/LC_MESSAGES/django.mo +0 -0
  931. wagtail/locale/fr/LC_MESSAGES/django.po +24 -21
  932. wagtail/locale/gl/LC_MESSAGES/django.mo +0 -0
  933. wagtail/locale/gl/LC_MESSAGES/django.po +24 -21
  934. wagtail/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  935. wagtail/locale/he_IL/LC_MESSAGES/django.po +10 -16
  936. wagtail/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  937. wagtail/locale/hr_HR/LC_MESSAGES/django.po +7 -16
  938. wagtail/locale/hu/LC_MESSAGES/django.mo +0 -0
  939. wagtail/locale/hu/LC_MESSAGES/django.po +10 -19
  940. wagtail/locale/id_ID/LC_MESSAGES/django.mo +0 -0
  941. wagtail/locale/id_ID/LC_MESSAGES/django.po +7 -16
  942. wagtail/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  943. wagtail/locale/is_IS/LC_MESSAGES/django.po +10 -19
  944. wagtail/locale/it/LC_MESSAGES/django.mo +0 -0
  945. wagtail/locale/it/LC_MESSAGES/django.po +126 -21
  946. wagtail/locale/ja/LC_MESSAGES/django.mo +0 -0
  947. wagtail/locale/ja/LC_MESSAGES/django.po +10 -19
  948. wagtail/locale/ka/LC_MESSAGES/django.mo +0 -0
  949. wagtail/locale/ka/LC_MESSAGES/django.po +9 -6
  950. wagtail/locale/ko/LC_MESSAGES/django.mo +0 -0
  951. wagtail/locale/ko/LC_MESSAGES/django.po +10 -19
  952. wagtail/locale/lt/LC_MESSAGES/django.mo +0 -0
  953. wagtail/locale/lt/LC_MESSAGES/django.po +7 -19
  954. wagtail/locale/lv/LC_MESSAGES/django.mo +0 -0
  955. wagtail/locale/lv/LC_MESSAGES/django.po +10 -19
  956. wagtail/locale/mi/LC_MESSAGES/django.mo +0 -0
  957. wagtail/locale/mi/LC_MESSAGES/django.po +7 -13
  958. wagtail/locale/mn/LC_MESSAGES/django.mo +0 -0
  959. wagtail/locale/mn/LC_MESSAGES/django.po +7 -16
  960. wagtail/locale/my/LC_MESSAGES/django.po +6 -6
  961. wagtail/locale/nb/LC_MESSAGES/django.mo +0 -0
  962. wagtail/locale/nb/LC_MESSAGES/django.po +10 -16
  963. wagtail/locale/nl/LC_MESSAGES/django.mo +0 -0
  964. wagtail/locale/nl/LC_MESSAGES/django.po +22 -21
  965. wagtail/locale/pl/LC_MESSAGES/django.mo +0 -0
  966. wagtail/locale/pl/LC_MESSAGES/django.po +10 -19
  967. wagtail/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  968. wagtail/locale/pt_BR/LC_MESSAGES/django.po +10 -19
  969. wagtail/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  970. wagtail/locale/pt_PT/LC_MESSAGES/django.po +10 -19
  971. wagtail/locale/ro/LC_MESSAGES/django.mo +0 -0
  972. wagtail/locale/ro/LC_MESSAGES/django.po +10 -19
  973. wagtail/locale/ru/LC_MESSAGES/django.mo +0 -0
  974. wagtail/locale/ru/LC_MESSAGES/django.po +32 -21
  975. wagtail/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  976. wagtail/locale/sk_SK/LC_MESSAGES/django.po +10 -16
  977. wagtail/locale/sl/LC_MESSAGES/django.mo +0 -0
  978. wagtail/locale/sl/LC_MESSAGES/django.po +10 -19
  979. wagtail/locale/sv/LC_MESSAGES/django.mo +0 -0
  980. wagtail/locale/sv/LC_MESSAGES/django.po +105 -31
  981. wagtail/locale/tet/LC_MESSAGES/django.mo +0 -0
  982. wagtail/locale/tet/LC_MESSAGES/django.po +7 -16
  983. wagtail/locale/th/LC_MESSAGES/django.mo +0 -0
  984. wagtail/locale/th/LC_MESSAGES/django.po +7 -19
  985. wagtail/locale/tr/LC_MESSAGES/django.mo +0 -0
  986. wagtail/locale/tr/LC_MESSAGES/django.po +10 -19
  987. wagtail/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
  988. wagtail/locale/tr_TR/LC_MESSAGES/django.po +10 -16
  989. wagtail/locale/ug/LC_MESSAGES/django.mo +0 -0
  990. wagtail/locale/ug/LC_MESSAGES/django.po +10 -19
  991. wagtail/locale/uk/LC_MESSAGES/django.mo +0 -0
  992. wagtail/locale/uk/LC_MESSAGES/django.po +7 -19
  993. wagtail/locale/vi/LC_MESSAGES/django.po +7 -7
  994. wagtail/locale/zh/LC_MESSAGES/django.mo +0 -0
  995. wagtail/locale/zh/LC_MESSAGES/django.po +6 -15
  996. wagtail/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  997. wagtail/locale/zh_Hans/LC_MESSAGES/django.po +10 -19
  998. wagtail/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
  999. wagtail/locale/zh_Hant/LC_MESSAGES/django.po +7 -19
  1000. wagtail/locales/locale/bg/LC_MESSAGES/django.mo +0 -0
  1001. wagtail/locales/locale/bg/LC_MESSAGES/django.po +9 -2
  1002. wagtail/locales/locale/da/LC_MESSAGES/django.mo +0 -0
  1003. wagtail/locales/locale/el/LC_MESSAGES/django.mo +0 -0
  1004. wagtail/locales/locale/en/LC_MESSAGES/django.mo +0 -0
  1005. wagtail/locales/locale/en/LC_MESSAGES/django.po +1 -1
  1006. wagtail/locales/locale/et/LC_MESSAGES/django.mo +0 -0
  1007. wagtail/locales/locale/fa/LC_MESSAGES/django.mo +0 -0
  1008. wagtail/locales/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  1009. wagtail/locales/locale/id_ID/LC_MESSAGES/django.mo +0 -0
  1010. wagtail/locales/locale/it/LC_MESSAGES/django.mo +0 -0
  1011. wagtail/locales/locale/it/LC_MESSAGES/django.po +13 -2
  1012. wagtail/locales/locale/ja/LC_MESSAGES/django.mo +0 -0
  1013. wagtail/locales/locale/lv/LC_MESSAGES/django.mo +0 -0
  1014. wagtail/locales/locale/mn/LC_MESSAGES/django.mo +0 -0
  1015. wagtail/locales/locale/my/LC_MESSAGES/django.mo +0 -0
  1016. wagtail/locales/locale/nb/LC_MESSAGES/django.mo +0 -0
  1017. wagtail/locales/locale/ru/LC_MESSAGES/django.mo +0 -0
  1018. wagtail/locales/locale/ru/LC_MESSAGES/django.po +7 -2
  1019. wagtail/locales/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  1020. wagtail/locales/locale/sv/LC_MESSAGES/django.mo +0 -0
  1021. wagtail/locales/locale/sv/LC_MESSAGES/django.po +4 -3
  1022. wagtail/locales/locale/tet/LC_MESSAGES/django.mo +0 -0
  1023. wagtail/locales/locale/th/LC_MESSAGES/django.mo +0 -0
  1024. wagtail/locales/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
  1025. wagtail/locales/locale/vi/LC_MESSAGES/django.mo +0 -0
  1026. wagtail/locales/locale/zh/LC_MESSAGES/django.mo +0 -0
  1027. wagtail/locales/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
  1028. wagtail/locales/tests.py +5 -5
  1029. wagtail/models/i18n.py +4 -6
  1030. wagtail/models/media.py +18 -0
  1031. wagtail/models/pages.py +65 -11
  1032. wagtail/models/reference_index.py +15 -0
  1033. wagtail/models/revisions.py +40 -12
  1034. wagtail/models/workflows.py +0 -3
  1035. wagtail/permission_policies/base.py +2 -2
  1036. wagtail/permission_policies/collections.py +2 -2
  1037. wagtail/project_template/requirements.txt +2 -2
  1038. wagtail/search/locale/ar/LC_MESSAGES/django.mo +0 -0
  1039. wagtail/search/locale/be/LC_MESSAGES/django.mo +0 -0
  1040. wagtail/search/locale/ca/LC_MESSAGES/django.mo +0 -0
  1041. wagtail/search/locale/cs/LC_MESSAGES/django.mo +0 -0
  1042. wagtail/search/locale/cy/LC_MESSAGES/django.mo +0 -0
  1043. wagtail/search/locale/de/LC_MESSAGES/django.mo +0 -0
  1044. wagtail/search/locale/dv/LC_MESSAGES/django.mo +0 -0
  1045. wagtail/search/locale/en/LC_MESSAGES/django.mo +0 -0
  1046. wagtail/search/locale/en/LC_MESSAGES/django.po +1 -1
  1047. wagtail/search/locale/es/LC_MESSAGES/django.mo +0 -0
  1048. wagtail/search/locale/et/LC_MESSAGES/django.mo +0 -0
  1049. wagtail/search/locale/fa/LC_MESSAGES/django.mo +0 -0
  1050. wagtail/search/locale/fi/LC_MESSAGES/django.mo +0 -0
  1051. wagtail/search/locale/fr/LC_MESSAGES/django.mo +0 -0
  1052. wagtail/search/locale/gl/LC_MESSAGES/django.mo +0 -0
  1053. wagtail/search/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  1054. wagtail/search/locale/ht/LC_MESSAGES/django.mo +0 -0
  1055. wagtail/search/locale/hu/LC_MESSAGES/django.mo +0 -0
  1056. wagtail/search/locale/id_ID/LC_MESSAGES/django.mo +0 -0
  1057. wagtail/search/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  1058. wagtail/search/locale/it/LC_MESSAGES/django.mo +0 -0
  1059. wagtail/search/locale/ja/LC_MESSAGES/django.mo +0 -0
  1060. wagtail/search/locale/ko/LC_MESSAGES/django.mo +0 -0
  1061. wagtail/search/locale/lt/LC_MESSAGES/django.mo +0 -0
  1062. wagtail/search/locale/mi/LC_MESSAGES/django.mo +0 -0
  1063. wagtail/search/locale/mn/LC_MESSAGES/django.mo +0 -0
  1064. wagtail/search/locale/my/LC_MESSAGES/django.mo +0 -0
  1065. wagtail/search/locale/nb/LC_MESSAGES/django.mo +0 -0
  1066. wagtail/search/locale/nl/LC_MESSAGES/django.mo +0 -0
  1067. wagtail/search/locale/pl/LC_MESSAGES/django.mo +0 -0
  1068. wagtail/search/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  1069. wagtail/search/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  1070. wagtail/search/locale/ro/LC_MESSAGES/django.mo +0 -0
  1071. wagtail/search/locale/ru/LC_MESSAGES/django.mo +0 -0
  1072. wagtail/search/locale/sl/LC_MESSAGES/django.mo +0 -0
  1073. wagtail/search/locale/sv/LC_MESSAGES/django.mo +0 -0
  1074. wagtail/search/locale/tet/LC_MESSAGES/django.mo +0 -0
  1075. wagtail/search/locale/th/LC_MESSAGES/django.mo +0 -0
  1076. wagtail/search/locale/tr/LC_MESSAGES/django.mo +0 -0
  1077. wagtail/search/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
  1078. wagtail/search/locale/ug/LC_MESSAGES/django.mo +0 -0
  1079. wagtail/search/locale/uk/LC_MESSAGES/django.mo +0 -0
  1080. wagtail/search/locale/vi/LC_MESSAGES/django.mo +0 -0
  1081. wagtail/search/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  1082. wagtail/search/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
  1083. wagtail/signal_handlers.py +1 -0
  1084. wagtail/sites/locale/bn/LC_MESSAGES/django.mo +0 -0
  1085. wagtail/sites/locale/da/LC_MESSAGES/django.mo +0 -0
  1086. wagtail/sites/locale/dv/LC_MESSAGES/django.mo +0 -0
  1087. wagtail/sites/locale/en/LC_MESSAGES/django.mo +0 -0
  1088. wagtail/sites/locale/en/LC_MESSAGES/django.po +1 -1
  1089. wagtail/sites/locale/en_IN/LC_MESSAGES/django.mo +0 -0
  1090. wagtail/sites/locale/es_419/LC_MESSAGES/django.mo +0 -0
  1091. wagtail/sites/locale/es_VE/LC_MESSAGES/django.mo +0 -0
  1092. wagtail/sites/locale/hi/LC_MESSAGES/django.mo +0 -0
  1093. wagtail/sites/locale/ka/LC_MESSAGES/django.mo +0 -0
  1094. wagtail/sites/locale/sr/LC_MESSAGES/django.mo +0 -0
  1095. wagtail/sites/locale/sv/LC_MESSAGES/django.mo +0 -0
  1096. wagtail/sites/locale/sv/LC_MESSAGES/django.po +3 -2
  1097. wagtail/sites/locale/ta/LC_MESSAGES/django.mo +0 -0
  1098. wagtail/sites/tests.py +7 -7
  1099. wagtail/snippets/action_menu.py +2 -1
  1100. wagtail/snippets/locale/af/LC_MESSAGES/django.mo +0 -0
  1101. wagtail/snippets/locale/af/LC_MESSAGES/django.po +1 -1
  1102. wagtail/snippets/locale/ar/LC_MESSAGES/django.po +1 -1
  1103. wagtail/snippets/locale/az_AZ/LC_MESSAGES/django.po +1 -1
  1104. wagtail/snippets/locale/be/LC_MESSAGES/django.po +1 -1
  1105. wagtail/snippets/locale/bg/LC_MESSAGES/django.mo +0 -0
  1106. wagtail/snippets/locale/bg/LC_MESSAGES/django.po +10 -1
  1107. wagtail/snippets/locale/bn/LC_MESSAGES/django.po +1 -1
  1108. wagtail/snippets/locale/ca/LC_MESSAGES/django.mo +0 -0
  1109. wagtail/snippets/locale/ca/LC_MESSAGES/django.po +11 -3
  1110. wagtail/snippets/locale/cs/LC_MESSAGES/django.po +1 -1
  1111. wagtail/snippets/locale/cy/LC_MESSAGES/django.po +1 -1
  1112. wagtail/snippets/locale/da/LC_MESSAGES/django.po +1 -1
  1113. wagtail/snippets/locale/de/LC_MESSAGES/django.mo +0 -0
  1114. wagtail/snippets/locale/de/LC_MESSAGES/django.po +15 -3
  1115. wagtail/snippets/locale/dv/LC_MESSAGES/django.po +1 -1
  1116. wagtail/snippets/locale/el/LC_MESSAGES/django.po +1 -1
  1117. wagtail/snippets/locale/en/LC_MESSAGES/django.mo +0 -0
  1118. wagtail/snippets/locale/en/LC_MESSAGES/django.po +23 -13
  1119. wagtail/snippets/locale/en_IN/LC_MESSAGES/django.mo +0 -0
  1120. wagtail/snippets/locale/en_IN/LC_MESSAGES/django.po +1 -1
  1121. wagtail/snippets/locale/es/LC_MESSAGES/django.po +1 -1
  1122. wagtail/snippets/locale/es_419/LC_MESSAGES/django.po +1 -1
  1123. wagtail/snippets/locale/es_VE/LC_MESSAGES/django.po +1 -1
  1124. wagtail/snippets/locale/et/LC_MESSAGES/django.po +1 -1
  1125. wagtail/snippets/locale/eu/LC_MESSAGES/django.mo +0 -0
  1126. wagtail/snippets/locale/eu/LC_MESSAGES/django.po +1 -1
  1127. wagtail/snippets/locale/fa/LC_MESSAGES/django.po +1 -1
  1128. wagtail/snippets/locale/fi/LC_MESSAGES/django.po +1 -1
  1129. wagtail/snippets/locale/fr/LC_MESSAGES/django.mo +0 -0
  1130. wagtail/snippets/locale/fr/LC_MESSAGES/django.po +11 -3
  1131. wagtail/snippets/locale/gl/LC_MESSAGES/django.mo +0 -0
  1132. wagtail/snippets/locale/gl/LC_MESSAGES/django.po +9 -1
  1133. wagtail/snippets/locale/he_IL/LC_MESSAGES/django.po +1 -1
  1134. wagtail/snippets/locale/hi/LC_MESSAGES/django.mo +0 -0
  1135. wagtail/snippets/locale/hi/LC_MESSAGES/django.po +1 -1
  1136. wagtail/snippets/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  1137. wagtail/snippets/locale/ht/LC_MESSAGES/django.mo +0 -0
  1138. wagtail/snippets/locale/ht/LC_MESSAGES/django.po +1 -1
  1139. wagtail/snippets/locale/hu/LC_MESSAGES/django.po +1 -1
  1140. wagtail/snippets/locale/id_ID/LC_MESSAGES/django.po +1 -1
  1141. wagtail/snippets/locale/is_IS/LC_MESSAGES/django.po +1 -1
  1142. wagtail/snippets/locale/it/LC_MESSAGES/django.mo +0 -0
  1143. wagtail/snippets/locale/it/LC_MESSAGES/django.po +11 -1
  1144. wagtail/snippets/locale/ja/LC_MESSAGES/django.po +1 -1
  1145. wagtail/snippets/locale/ka/LC_MESSAGES/django.mo +0 -0
  1146. wagtail/snippets/locale/ka/LC_MESSAGES/django.po +1 -1
  1147. wagtail/snippets/locale/ko/LC_MESSAGES/django.po +1 -1
  1148. wagtail/snippets/locale/lt/LC_MESSAGES/django.po +1 -1
  1149. wagtail/snippets/locale/lv/LC_MESSAGES/django.po +1 -1
  1150. wagtail/snippets/locale/mi/LC_MESSAGES/django.po +1 -1
  1151. wagtail/snippets/locale/mn/LC_MESSAGES/django.po +1 -1
  1152. wagtail/snippets/locale/my/LC_MESSAGES/django.po +1 -1
  1153. wagtail/snippets/locale/nb/LC_MESSAGES/django.po +1 -1
  1154. wagtail/snippets/locale/nl/LC_MESSAGES/django.mo +0 -0
  1155. wagtail/snippets/locale/nl/LC_MESSAGES/django.po +11 -3
  1156. wagtail/snippets/locale/pl/LC_MESSAGES/django.po +1 -1
  1157. wagtail/snippets/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  1158. wagtail/snippets/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  1159. wagtail/snippets/locale/ro/LC_MESSAGES/django.po +1 -1
  1160. wagtail/snippets/locale/ru/LC_MESSAGES/django.mo +0 -0
  1161. wagtail/snippets/locale/ru/LC_MESSAGES/django.po +11 -3
  1162. wagtail/snippets/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  1163. wagtail/snippets/locale/sl/LC_MESSAGES/django.po +1 -1
  1164. wagtail/snippets/locale/sr/LC_MESSAGES/django.mo +0 -0
  1165. wagtail/snippets/locale/sr/LC_MESSAGES/django.po +1 -1
  1166. wagtail/snippets/locale/sv/LC_MESSAGES/django.mo +0 -0
  1167. wagtail/snippets/locale/sv/LC_MESSAGES/django.po +13 -2
  1168. wagtail/snippets/locale/ta/LC_MESSAGES/django.mo +0 -0
  1169. wagtail/snippets/locale/ta/LC_MESSAGES/django.po +1 -1
  1170. wagtail/snippets/locale/tet/LC_MESSAGES/django.po +1 -1
  1171. wagtail/snippets/locale/th/LC_MESSAGES/django.po +1 -1
  1172. wagtail/snippets/locale/tr/LC_MESSAGES/django.po +1 -1
  1173. wagtail/snippets/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  1174. wagtail/snippets/locale/ug/LC_MESSAGES/django.po +1 -1
  1175. wagtail/snippets/locale/uk/LC_MESSAGES/django.po +1 -1
  1176. wagtail/snippets/locale/vi/LC_MESSAGES/django.po +1 -1
  1177. wagtail/snippets/locale/zh/LC_MESSAGES/django.po +1 -1
  1178. wagtail/snippets/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  1179. wagtail/snippets/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  1180. wagtail/snippets/tests/test_chooser_block.py +197 -0
  1181. wagtail/snippets/tests/test_chooser_panel.py +149 -0
  1182. wagtail/snippets/tests/test_chooser_views.py +375 -0
  1183. wagtail/snippets/tests/test_chooser_widget.py +22 -0
  1184. wagtail/snippets/tests/test_compare_revisions_view.py +167 -0
  1185. wagtail/snippets/tests/test_copy_view.py +38 -0
  1186. wagtail/snippets/tests/test_create_view.py +1163 -0
  1187. wagtail/snippets/tests/test_delete_view.py +225 -0
  1188. wagtail/snippets/tests/test_edit_view.py +3243 -0
  1189. wagtail/snippets/tests/test_history_view.py +182 -0
  1190. wagtail/snippets/tests/test_index_view.py +105 -0
  1191. wagtail/snippets/tests/test_list_view.py +786 -0
  1192. wagtail/snippets/tests/test_locking.py +28 -0
  1193. wagtail/snippets/tests/test_permissions.py +167 -0
  1194. wagtail/snippets/tests/test_preview.py +3 -3
  1195. wagtail/snippets/tests/test_revert_view.py +343 -0
  1196. wagtail/snippets/tests/test_snippet_models.py +112 -0
  1197. wagtail/snippets/tests/test_unpublish_view.py +228 -0
  1198. wagtail/snippets/tests/test_unschedule_view.py +151 -0
  1199. wagtail/snippets/tests/test_viewset.py +38 -5
  1200. wagtail/snippets/views/snippets.py +76 -30
  1201. wagtail/snippets/widgets.py +2 -2
  1202. wagtail/templatetags/wagtailcore_tags.py +2 -2
  1203. wagtail/test/dummy_external_storage.py +1 -1
  1204. wagtail/test/testapp/fixtures/test.json +22 -0
  1205. wagtail/test/testapp/fixtures/test_empty.json +2 -0
  1206. wagtail/test/testapp/fixtures/test_explorable_pages.json +10 -0
  1207. wagtail/test/testapp/fixtures/test_specific.json +9 -0
  1208. wagtail/test/testapp/migrations/0059_nopromotepage.py +25 -0
  1209. wagtail/test/testapp/models.py +7 -0
  1210. wagtail/test/testapp/views.py +5 -0
  1211. wagtail/test/utils/page_tests.py +7 -7
  1212. wagtail/test/utils/wagtail_factories/builder.py +2 -2
  1213. wagtail/tests/streamfield_migrations/test_migrations.py +35 -0
  1214. wagtail/tests/test_blocks.py +321 -61
  1215. wagtail/tests/test_collection_model.py +12 -0
  1216. wagtail/tests/test_page_model.py +190 -1
  1217. wagtail/tests/test_page_privacy.py +5 -0
  1218. wagtail/tests/test_reference_index.py +42 -0
  1219. wagtail/tests/test_revision_model.py +118 -1
  1220. wagtail/tests/test_utils.py +2 -2
  1221. wagtail/users/locale/ar/LC_MESSAGES/django.po +1 -1
  1222. wagtail/users/locale/be/LC_MESSAGES/django.po +1 -1
  1223. wagtail/users/locale/bg/LC_MESSAGES/django.mo +0 -0
  1224. wagtail/users/locale/bg/LC_MESSAGES/django.po +10 -1
  1225. wagtail/users/locale/bn/LC_MESSAGES/django.po +1 -1
  1226. wagtail/users/locale/ca/LC_MESSAGES/django.po +1 -1
  1227. wagtail/users/locale/cs/LC_MESSAGES/django.po +1 -1
  1228. wagtail/users/locale/cy/LC_MESSAGES/django.po +1 -1
  1229. wagtail/users/locale/da/LC_MESSAGES/django.po +1 -1
  1230. wagtail/users/locale/de/LC_MESSAGES/django.mo +0 -0
  1231. wagtail/users/locale/de/LC_MESSAGES/django.po +6 -3
  1232. wagtail/users/locale/dv/LC_MESSAGES/django.po +1 -1
  1233. wagtail/users/locale/el/LC_MESSAGES/django.po +1 -1
  1234. wagtail/users/locale/en/LC_MESSAGES/django.mo +0 -0
  1235. wagtail/users/locale/en/LC_MESSAGES/django.po +14 -14
  1236. wagtail/users/locale/es/LC_MESSAGES/django.po +1 -1
  1237. wagtail/users/locale/es_419/LC_MESSAGES/django.po +1 -1
  1238. wagtail/users/locale/et/LC_MESSAGES/django.po +1 -1
  1239. wagtail/users/locale/eu/LC_MESSAGES/django.mo +0 -0
  1240. wagtail/users/locale/eu/LC_MESSAGES/django.po +1 -1
  1241. wagtail/users/locale/fa/LC_MESSAGES/django.po +1 -1
  1242. wagtail/users/locale/fi/LC_MESSAGES/django.po +1 -1
  1243. wagtail/users/locale/fr/LC_MESSAGES/django.po +1 -1
  1244. wagtail/users/locale/gl/LC_MESSAGES/django.po +1 -1
  1245. wagtail/users/locale/he_IL/LC_MESSAGES/django.po +1 -1
  1246. wagtail/users/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  1247. wagtail/users/locale/hu/LC_MESSAGES/django.po +1 -1
  1248. wagtail/users/locale/hy/LC_MESSAGES/django.po +1 -1
  1249. wagtail/users/locale/id_ID/LC_MESSAGES/django.mo +0 -0
  1250. wagtail/users/locale/id_ID/LC_MESSAGES/django.po +7 -3
  1251. wagtail/users/locale/is_IS/LC_MESSAGES/django.po +1 -1
  1252. wagtail/users/locale/it/LC_MESSAGES/django.mo +0 -0
  1253. wagtail/users/locale/it/LC_MESSAGES/django.po +15 -3
  1254. wagtail/users/locale/ja/LC_MESSAGES/django.po +1 -1
  1255. wagtail/users/locale/ka/LC_MESSAGES/django.po +1 -1
  1256. wagtail/users/locale/ko/LC_MESSAGES/django.po +1 -1
  1257. wagtail/users/locale/lt/LC_MESSAGES/django.po +1 -1
  1258. wagtail/users/locale/lv/LC_MESSAGES/django.po +1 -1
  1259. wagtail/users/locale/mi/LC_MESSAGES/django.po +1 -1
  1260. wagtail/users/locale/mn/LC_MESSAGES/django.po +1 -1
  1261. wagtail/users/locale/my/LC_MESSAGES/django.po +1 -1
  1262. wagtail/users/locale/nb/LC_MESSAGES/django.po +1 -1
  1263. wagtail/users/locale/nl/LC_MESSAGES/django.po +1 -1
  1264. wagtail/users/locale/pl/LC_MESSAGES/django.po +1 -1
  1265. wagtail/users/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  1266. wagtail/users/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  1267. wagtail/users/locale/ro/LC_MESSAGES/django.po +1 -1
  1268. wagtail/users/locale/ru/LC_MESSAGES/django.mo +0 -0
  1269. wagtail/users/locale/ru/LC_MESSAGES/django.po +4 -4
  1270. wagtail/users/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  1271. wagtail/users/locale/sl/LC_MESSAGES/django.po +1 -1
  1272. wagtail/users/locale/sv/LC_MESSAGES/django.mo +0 -0
  1273. wagtail/users/locale/sv/LC_MESSAGES/django.po +49 -18
  1274. wagtail/users/locale/tet/LC_MESSAGES/django.po +1 -1
  1275. wagtail/users/locale/th/LC_MESSAGES/django.po +1 -1
  1276. wagtail/users/locale/tr/LC_MESSAGES/django.po +1 -1
  1277. wagtail/users/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  1278. wagtail/users/locale/ug/LC_MESSAGES/django.po +1 -1
  1279. wagtail/users/locale/uk/LC_MESSAGES/django.po +1 -1
  1280. wagtail/users/locale/vi/LC_MESSAGES/django.po +1 -1
  1281. wagtail/users/locale/zh/LC_MESSAGES/django.po +1 -1
  1282. wagtail/users/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  1283. wagtail/users/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  1284. wagtail/users/tests/test_admin_views.py +39 -25
  1285. wagtail/users/utils.py +4 -1
  1286. wagtail/users/views/groups.py +19 -5
  1287. wagtail/users/wagtail_hooks.py +1 -1
  1288. wagtail/utils/loading.py +2 -2
  1289. wagtail-7.3.data/data/AGENTS.md +21 -0
  1290. wagtail-7.3.data/data/CHANGELOG.txt +4957 -0
  1291. wagtail-7.3.data/data/CODE_OF_CONDUCT.md +71 -0
  1292. wagtail-7.3.data/data/CONTRIBUTORS.md +1001 -0
  1293. wagtail-7.3.data/data/SPONSORS.md +55 -0
  1294. {wagtail-7.2.2.dist-info → wagtail-7.3.dist-info}/METADATA +6 -6
  1295. {wagtail-7.2.2.dist-info → wagtail-7.3.dist-info}/RECORD +1299 -1265
  1296. wagtail/images/static/wagtailimages/js/image-url-generator.js +0 -1
  1297. wagtail/snippets/tests/test_snippets.py +0 -6377
  1298. {wagtail-7.2.2.dist-info → wagtail-7.3.dist-info}/WHEEL +0 -0
  1299. {wagtail-7.2.2.dist-info → wagtail-7.3.dist-info}/entry_points.txt +0 -0
  1300. {wagtail-7.2.2.dist-info → wagtail-7.3.dist-info}/licenses/LICENSE +0 -0
  1301. {wagtail-7.2.2.dist-info → wagtail-7.3.dist-info}/top_level.txt +0 -0
@@ -7,15 +7,22 @@
7
7
  {% trans "Usage" %}
8
8
  </h3>
9
9
  </div>
10
- <a class="w-text-14 w-text-text-link-default hover:w-text-text-link-hover w-no-underline w-transition"
11
- href="{{ usage_url }}"
12
- >
10
+ {% fragment as usage_label %}
13
11
  {% if usage_url_text %}
14
12
  {{ usage_url_text }}
15
13
  {% else %}
16
14
  {% blocktrans trimmed with counter=usage_count usage_count=usage_count|intcomma count counter=counter %}Used {{ usage_count }} time{% plural %}Used {{ usage_count }} times{% endblocktrans %}
17
15
  {% endif %}
18
- </a>
16
+ {% endfragment %}
17
+ {% if usage_url %}
18
+ <a class="w-text-14 w-text-text-link-default hover:w-text-text-link-hover w-no-underline w-transition"
19
+ href="{{ usage_url }}"
20
+ >
21
+ {{ usage_label }}
22
+ </a>
23
+ {% else %}
24
+ <span>{{ usage_label }}</span>
25
+ {% endif %}
19
26
  </div>
20
27
  </section>
21
28
  </div>
@@ -80,6 +80,19 @@
80
80
  {% endif %}
81
81
  {% endwith %}
82
82
  </div>
83
+ {% else %}
84
+ {% if draftstate_enabled %}
85
+ {% trans "Draft" as title %}
86
+ {% fragment as icon_name %}draft{% endfragment %}
87
+ {% else %}
88
+ {% trans "Live" as title %}
89
+ {% fragment as icon_name %}doc-full-inverse{% endfragment %}
90
+ {% endif %}
91
+ {% blocktranslate trimmed asvar help_text with user=request.user|user_display_name %}
92
+ To be created by {{ user }}
93
+ {% endblocktranslate %}
94
+
95
+ {{ block.super }}
83
96
  {% endif %}
84
97
  {% endblock %}
85
98
 
@@ -88,7 +101,15 @@
88
101
  {% dialog_toggle classname='w-bg-transparent w-text-14 w-p-0 w-text-text-link-default hover:w-text-text-link-hover w-inline-flex w-justify-center w-transition' dialog_id="workflow-status-dialog" text=action_text %}
89
102
 
90
103
  {# info subtitle #}
91
- {% if object.get_latest_revision %}
104
+ {% if is_partial %}
105
+ {% comment %}
106
+ The dialog will be teleported to the body. Do not re-render the dialog
107
+ when rendering partials, as we would end up with multiple instances.
108
+ We also don't render it when hydrating the create view, as it's unlikely
109
+ that the object immediately enters a workflow on creation without a
110
+ full-page reload.
111
+ {% endcomment %}
112
+ {% elif object.get_latest_revision %}
92
113
  {% workflow_status_with_date workflow_state as message_heading %}
93
114
  {% if workflow_state.requested_by %}
94
115
  {% blocktrans trimmed with user=workflow_state.requested_by|user_display_name asvar modified_by %}by {{ user }}{% endblocktrans %}
@@ -3,6 +3,7 @@
3
3
  <div
4
4
  class="w-preview"
5
5
  data-controller="w-preview"
6
+ data-action="w-unsaved:add@document->w-preview#setStale"
6
7
  data-w-preview-has-errors-class="w-preview--has-errors"
7
8
  data-w-preview-proxy-class="w-preview__proxy"
8
9
  data-w-preview-selected-size-class="w-preview__size-button--selected"
@@ -27,8 +27,7 @@
27
27
 
28
28
  {% for panel in side_panels %}
29
29
  <div class="form-side__panel" data-side-panel="{{ panel.name }}" hidden>
30
- <h2 id="side-panel-{{ panel.name }}-title" class="w-sr-only">{{ panel.title }}</h2>
31
- {% component panel %}
30
+ {% include "wagtailadmin/shared/side_panels/includes/side_panel.html" with panel=panel %}
32
31
  </div>
33
32
  {% endfor %}
34
33
  </aside>
@@ -3,31 +3,31 @@
3
3
  class="footer__container footer__container--hidden"
4
4
  aria-live="polite"
5
5
  data-controller="w-messages"
6
- data-action="w-unsaved:add@document->w-messages#add w-unsaved:clear@document->w-messages#clear"
6
+ data-action="w-unsaved:add@document->w-messages#add w-unsaved:clear@document->w-messages#clear w-autosave:error@document->w-messages#add"
7
7
  data-w-messages-clear-delay-value="1024"
8
8
  data-w-messages-clear-param="true"
9
9
  data-w-messages-hide-class="footer__container--hidden"
10
10
  >
11
11
  <div class="footer__save-warning footer__emphasise-span-tags" data-w-messages-target="container"></div>
12
12
  {% block message_templates %}
13
- {% trans 'Save your changes before leaving' as generic_save_message %}
14
- <template data-w-messages-target="template" data-type="edits">
15
- <div>
16
- <b>{% blocktrans trimmed %}You have <span>unsaved edits</span>{% endblocktrans %}</b>
17
- <p>{{ generic_save_message }}</p>
18
- </div>
19
- </template>
20
- <template data-w-messages-target="template" data-type="comments">
21
- <div>
22
- <b>{% blocktrans trimmed %}You have <span>unsaved comments</span>{% endblocktrans %}</b>
23
- <p>{{ generic_save_message }}</p>
24
- </div>
25
- </template>
26
- <template data-w-messages-target="template" data-type="all">
27
- <div>
28
- <b>{% blocktrans trimmed %}You have <span>unsaved edits</span> and <span>comments</span>{% endblocktrans %}</b>
29
- <p>{{ generic_save_message }}</p>
30
- </div>
31
- </template>
13
+ {% if autosave_enabled %}
14
+ {% blocktranslate trimmed asvar generic_save_message %}
15
+ Autosave is <span>paused</span>
16
+ {% endblocktranslate %}
17
+ <template data-w-messages-target="template" data-selector="p">
18
+ <div>
19
+ <b>{{ generic_save_message }}</b>
20
+ <p></p>
21
+ </div>
22
+ </template>
23
+ {% else %}
24
+ {% trans 'Save your changes before leaving' as generic_save_message %}
25
+ <template data-w-messages-target="template" data-type="edits">
26
+ <div>
27
+ <b>{% blocktrans trimmed %}You have <span>unsaved edits</span>{% endblocktrans %}</b>
28
+ <p>{{ generic_save_message }}</p>
29
+ </div>
30
+ </template>
31
+ {% endif %}
32
32
  {% endblock %}
33
33
  </div>
@@ -9,6 +9,7 @@
9
9
  <link rel="stylesheet" href="{% build_absolute_url core_css_url %}">
10
10
  {# For headless userbar: the contents of the hook also need absolute URLs #}
11
11
  {% hook_output 'insert_global_admin_css' %}
12
+ {{ media.css }}
12
13
  {% endblock %}
13
14
  <div class="w-userbar-nav">
14
15
 
@@ -49,5 +50,6 @@
49
50
  {% versioned_static 'wagtailadmin/js/userbar.js' as userbar_js_url %}
50
51
  <script src="{% build_absolute_url vendor_js_url %}"></script>
51
52
  <script src="{% build_absolute_url userbar_js_url %}"></script>
53
+ {{ media.js }}
52
54
  {% endblock %}
53
55
  <!-- end Wagtail user bar embed code -->
@@ -4,7 +4,7 @@
4
4
  {% block item_content %}
5
5
  <button type="button" id="accessibility-trigger" role="menuitem">
6
6
  <span class="w-sr-only">{% trans 'Issues found' %}</span><span class="w-a11y-result__count" data-a11y-result-count></span>
7
- {% trans 'Accessibility' %}
7
+ {% trans 'Checks' %}
8
8
  </button>
9
9
  {{ axe_configuration|json_script:"accessibility-axe-configuration" }}
10
10
  {% trans 'Warnings' as dialog_title %}
@@ -19,7 +19,6 @@ from django.utils import timezone
19
19
  from django.utils.encoding import force_str
20
20
  from django.utils.formats import get_format
21
21
  from django.utils.html import avoid_wrapping, json_script
22
- from django.utils.http import urlencode
23
22
  from django.utils.safestring import mark_safe
24
23
  from django.utils.timesince import timesince
25
24
  from django.utils.translation import gettext_lazy as _
@@ -40,7 +39,6 @@ from wagtail.admin.utils import (
40
39
  get_keyboard_key_labels_from_request,
41
40
  get_latest_str,
42
41
  get_user_display_name,
43
- get_valid_next_url_from_request,
44
42
  )
45
43
  from wagtail.admin.views.bulk_action.registry import bulk_action_registry
46
44
  from wagtail.admin.views.pages.utils import get_breadcrumbs_items_for_page
@@ -509,18 +507,14 @@ def bulk_action_choices(context, app_label, model_name):
509
507
  bulk_action_more_list = bulk_actions_list[4:]
510
508
  bulk_actions_list = bulk_actions_list[:4]
511
509
 
512
- next_url = get_valid_next_url_from_request(context["request"])
513
- if not next_url:
514
- next_url = context["request"].path
515
-
510
+ # These buttons are not re-rendered after AJAX search and filters are applied,
511
+ # so don't include a 'next' parameter and let the JS construct it later.
516
512
  bulk_action_buttons = [
517
513
  ListingButton(
518
514
  action.display_name,
519
515
  reverse(
520
516
  "wagtail_bulk_action", args=[app_label, model_name, action.action_type]
521
- )
522
- + "?"
523
- + urlencode({"next": next_url}),
517
+ ),
524
518
  attrs={"aria-label": action.aria_label, "data-bulk-action-button": ""},
525
519
  priority=action.action_priority,
526
520
  classname=" ".join(action.classes | {"bulk-action-btn"}),
@@ -539,9 +533,7 @@ def bulk_action_choices(context, app_label, model_name):
539
533
  url=reverse(
540
534
  "wagtail_bulk_action",
541
535
  args=[app_label, model_name, action.action_type],
542
- )
543
- + "?"
544
- + urlencode({"next": next_url}),
536
+ ),
545
537
  attrs={
546
538
  "aria-label": action.aria_label,
547
539
  "data-bulk-action-button": "",
@@ -1037,9 +1029,9 @@ def fragment(parser, token):
1037
1029
  tag_name, *options, target_var = token.split_contents()
1038
1030
  nodelist = parser.parse(("endfragment",))
1039
1031
  parser.delete_first_token()
1040
- except ValueError:
1032
+ except ValueError as e:
1041
1033
  if settings.DEBUG:
1042
- raise template.TemplateSyntaxError(error_message)
1034
+ raise template.TemplateSyntaxError(error_message) from e
1043
1035
  return ""
1044
1036
 
1045
1037
  stripped = "stripped" in options
@@ -2,7 +2,7 @@ import datetime
2
2
  from unittest import mock
3
3
 
4
4
  from django.contrib.auth.models import Group, Permission
5
- from django.http import HttpRequest, HttpResponse
5
+ from django.http import HttpRequest, HttpResponse, JsonResponse
6
6
  from django.test import TestCase
7
7
  from django.test.utils import override_settings
8
8
  from django.urls import reverse
@@ -572,6 +572,32 @@ class TestPageCreation(WagtailTestUtils, TestCase):
572
572
  # form should be marked as having unsaved changes for the purposes of the dirty-forms warning
573
573
  self.assertContains(response, 'data-w-unsaved-force-value="true"')
574
574
 
575
+ def test_create_simplepage_post_invalid_with_json_response(self):
576
+ post_data = {
577
+ "title": "",
578
+ "content": "Some content",
579
+ "slug": "hello-world",
580
+ }
581
+ response = self.client.post(
582
+ reverse(
583
+ "wagtailadmin_pages:add",
584
+ args=("tests", "simplepage", self.root_page.id),
585
+ ),
586
+ post_data,
587
+ headers={"Accept": "application/json"},
588
+ )
589
+
590
+ self.assertEqual(response.status_code, 400)
591
+ self.assertEqual(response["Content-Type"], "application/json")
592
+ self.assertEqual(
593
+ response.json(),
594
+ {
595
+ "success": False,
596
+ "error_code": "validation_error",
597
+ "error_message": "There are validation errors, click save to highlight them.",
598
+ },
599
+ )
600
+
575
601
  def test_create_simplepage_post_with_blank_content(self):
576
602
  """
577
603
  Saving a page as draft with blank content should be allowed, as this skips
@@ -610,6 +636,63 @@ class TestPageCreation(WagtailTestUtils, TestCase):
610
636
  any(Page.find_problems()), msg="treebeard found consistency problems"
611
637
  )
612
638
 
639
+ def test_create_simplepage_post_with_json_response(self):
640
+ post_data = {
641
+ "title": "New page",
642
+ "content": "hello world",
643
+ "slug": "hello-world",
644
+ }
645
+ response = self.client.post(
646
+ reverse(
647
+ "wagtailadmin_pages:add",
648
+ args=("tests", "simplepage", self.root_page.id),
649
+ ),
650
+ post_data,
651
+ headers={"Accept": "application/json"},
652
+ )
653
+ # Find the page and check it
654
+ page = Page.objects.get(
655
+ path__startswith=self.root_page.path, slug="hello-world"
656
+ ).specific
657
+
658
+ self.assertEqual(response.status_code, 200)
659
+ self.assertEqual(response["Content-Type"], "application/json")
660
+ revision = page.get_latest_revision()
661
+ response_json = response.json()
662
+ edit_url = reverse("wagtailadmin_pages:edit", args=(page.pk,))
663
+ self.assertEqual(response_json["success"], True)
664
+ self.assertEqual(response_json["pk"], page.pk)
665
+ self.assertEqual(response_json["revision_id"], revision.pk)
666
+ self.assertEqual(
667
+ response_json["revision_created_at"],
668
+ revision.created_at.isoformat(),
669
+ )
670
+ self.assertEqual(response_json["field_updates"], {})
671
+ self.assertEqual(
672
+ response_json["comments"],
673
+ {
674
+ "comments": [],
675
+ "user": str(self.user.pk),
676
+ "authors": {},
677
+ },
678
+ )
679
+ self.assertEqual(response_json["url"], edit_url)
680
+ self.assertEqual(
681
+ response_json["hydrate_url"],
682
+ f"{edit_url}?_w_hydrate_create_view=1",
683
+ )
684
+
685
+ self.assertEqual(page.title, post_data["title"])
686
+ self.assertEqual(page.draft_title, post_data["title"])
687
+ self.assertIsInstance(page, SimplePage)
688
+ self.assertFalse(page.live)
689
+ self.assertFalse(page.first_published_at)
690
+
691
+ # treebeard should report no consistency problems with the tree
692
+ self.assertFalse(
693
+ any(Page.find_problems()), msg="treebeard found consistency problems"
694
+ )
695
+
613
696
  def test_publish_simplepage_post_with_blank_content(self):
614
697
  post_data = {
615
698
  "title": "New page",
@@ -1799,6 +1882,52 @@ class TestPageCreation(WagtailTestUtils, TestCase):
1799
1882
  self.assertEqual(response.status_code, 200)
1800
1883
  self.assertEqual(response.content, b"Overridden!")
1801
1884
 
1885
+ def test_before_create_page_hook_with_json_response(self):
1886
+ def non_json_hook_func(request, parent_page, page_class):
1887
+ self.assertIsInstance(request, HttpRequest)
1888
+ self.assertEqual(parent_page.id, self.root_page.id)
1889
+ self.assertEqual(page_class, SimplePage)
1890
+
1891
+ return HttpResponse("Overridden!")
1892
+
1893
+ def json_hook_func(request, parent_page, page_class):
1894
+ self.assertIsInstance(request, HttpRequest)
1895
+ self.assertEqual(parent_page.id, self.root_page.id)
1896
+ self.assertEqual(page_class, SimplePage)
1897
+
1898
+ return JsonResponse({"status": "purple"})
1899
+
1900
+ with self.register_hook("before_create_page", non_json_hook_func):
1901
+ response = self.client.get(
1902
+ reverse(
1903
+ "wagtailadmin_pages:add",
1904
+ args=("tests", "simplepage", self.root_page.id),
1905
+ ),
1906
+ headers={"Accept": "application/json"},
1907
+ )
1908
+
1909
+ self.assertEqual(response.status_code, 400)
1910
+ self.assertEqual(
1911
+ response.json(),
1912
+ {
1913
+ "success": False,
1914
+ "error_code": "blocked_by_hook",
1915
+ "error_message": "Request to create page was blocked by hook.",
1916
+ },
1917
+ )
1918
+
1919
+ with self.register_hook("before_create_page", json_hook_func):
1920
+ response = self.client.get(
1921
+ reverse(
1922
+ "wagtailadmin_pages:add",
1923
+ args=("tests", "simplepage", self.root_page.id),
1924
+ ),
1925
+ headers={"Accept": "application/json"},
1926
+ )
1927
+
1928
+ self.assertEqual(response.status_code, 200)
1929
+ self.assertEqual(response.json(), {"status": "purple"})
1930
+
1802
1931
  def test_before_create_page_hook_post(self):
1803
1932
  def hook_func(request, parent_page, page_class):
1804
1933
  self.assertIsInstance(request, HttpRequest)
@@ -1827,6 +1956,70 @@ class TestPageCreation(WagtailTestUtils, TestCase):
1827
1956
  # page should not be created
1828
1957
  self.assertFalse(Page.objects.filter(title="New page!").exists())
1829
1958
 
1959
+ def test_before_create_page_hook_post_with_json_response(self):
1960
+ def non_json_hook_func(request, parent_page, page_class):
1961
+ self.assertIsInstance(request, HttpRequest)
1962
+ self.assertEqual(parent_page.id, self.root_page.id)
1963
+ self.assertEqual(page_class, SimplePage)
1964
+
1965
+ return HttpResponse("Overridden!")
1966
+
1967
+ def json_hook_func(request, parent_page, page_class):
1968
+ self.assertIsInstance(request, HttpRequest)
1969
+ self.assertEqual(parent_page.id, self.root_page.id)
1970
+ self.assertEqual(page_class, SimplePage)
1971
+
1972
+ return JsonResponse({"status": "purple"})
1973
+
1974
+ with self.register_hook("before_create_page", non_json_hook_func):
1975
+ post_data = {
1976
+ "title": "New page!",
1977
+ "content": "Some content",
1978
+ "slug": "hello-world",
1979
+ }
1980
+ response = self.client.post(
1981
+ reverse(
1982
+ "wagtailadmin_pages:add",
1983
+ args=("tests", "simplepage", self.root_page.id),
1984
+ ),
1985
+ post_data,
1986
+ headers={"Accept": "application/json"},
1987
+ )
1988
+
1989
+ self.assertEqual(response.status_code, 400)
1990
+ self.assertEqual(
1991
+ response.json(),
1992
+ {
1993
+ "success": False,
1994
+ "error_code": "blocked_by_hook",
1995
+ "error_message": "Request to create page was blocked by hook.",
1996
+ },
1997
+ )
1998
+
1999
+ # page should not be created
2000
+ self.assertFalse(Page.objects.filter(title="New page!").exists())
2001
+
2002
+ with self.register_hook("before_create_page", json_hook_func):
2003
+ post_data = {
2004
+ "title": "New page!",
2005
+ "content": "Some content",
2006
+ "slug": "hello-world",
2007
+ }
2008
+ response = self.client.post(
2009
+ reverse(
2010
+ "wagtailadmin_pages:add",
2011
+ args=("tests", "simplepage", self.root_page.id),
2012
+ ),
2013
+ post_data,
2014
+ headers={"Accept": "application/json"},
2015
+ )
2016
+
2017
+ self.assertEqual(response.status_code, 200)
2018
+ self.assertEqual(response.json(), {"status": "purple"})
2019
+
2020
+ # page should not be created
2021
+ self.assertFalse(Page.objects.filter(title="New page!").exists())
2022
+
1830
2023
  def test_after_create_page_hook(self):
1831
2024
  def hook_func(request, page):
1832
2025
  self.assertIsInstance(request, HttpRequest)
@@ -1858,6 +2051,70 @@ class TestPageCreation(WagtailTestUtils, TestCase):
1858
2051
  # page should be created
1859
2052
  self.assertTrue(Page.objects.filter(title="New page!").exists())
1860
2053
 
2054
+ def test_after_create_page_hook_with_json_response(self):
2055
+ def non_json_hook_func(request, page):
2056
+ self.assertIsInstance(request, HttpRequest)
2057
+ self.assertIsInstance(page, SimplePage)
2058
+
2059
+ # Both are None as this is only a draft
2060
+ self.assertIsNone(page.first_published_at)
2061
+ self.assertIsNone(page.last_published_at)
2062
+
2063
+ return HttpResponse("Overridden!")
2064
+
2065
+ def json_hook_func(request, page):
2066
+ self.assertIsInstance(request, HttpRequest)
2067
+ self.assertIsInstance(page, SimplePage)
2068
+
2069
+ # Both are None as this is only a draft
2070
+ self.assertIsNone(page.first_published_at)
2071
+ self.assertIsNone(page.last_published_at)
2072
+
2073
+ return JsonResponse({"status": "purple"})
2074
+
2075
+ with self.register_hook("after_create_page", non_json_hook_func):
2076
+ post_data = {
2077
+ "title": "New page!",
2078
+ "content": "Some content",
2079
+ "slug": "hello-world",
2080
+ }
2081
+ response = self.client.post(
2082
+ reverse(
2083
+ "wagtailadmin_pages:add",
2084
+ args=("tests", "simplepage", self.root_page.id),
2085
+ ),
2086
+ post_data,
2087
+ headers={"Accept": "application/json"},
2088
+ )
2089
+
2090
+ self.assertEqual(response.status_code, 200)
2091
+ # hook response is ignored, since it's not a JSON response
2092
+ self.assertEqual(response.json()["success"], True)
2093
+
2094
+ # page should be created
2095
+ self.assertTrue(Page.objects.filter(title="New page!").exists())
2096
+
2097
+ with self.register_hook("after_create_page", json_hook_func):
2098
+ post_data = {
2099
+ "title": "Another new page!",
2100
+ "content": "Some content",
2101
+ "slug": "hello-another-world",
2102
+ }
2103
+ response = self.client.post(
2104
+ reverse(
2105
+ "wagtailadmin_pages:add",
2106
+ args=("tests", "simplepage", self.root_page.id),
2107
+ ),
2108
+ post_data,
2109
+ headers={"Accept": "application/json"},
2110
+ )
2111
+
2112
+ self.assertEqual(response.status_code, 200)
2113
+ self.assertEqual(response.json(), {"status": "purple"})
2114
+
2115
+ # page should be created
2116
+ self.assertTrue(Page.objects.filter(title="Another new page!").exists())
2117
+
1861
2118
  def test_after_create_page_hook_with_page_publish(self):
1862
2119
  def hook_func(request, page):
1863
2120
  self.assertIsInstance(request, HttpRequest)
@@ -2004,6 +2261,56 @@ class TestPageCreation(WagtailTestUtils, TestCase):
2004
2261
 
2005
2262
  self.assertEqual(response.context["page"].locale, fr_locale)
2006
2263
 
2264
+ def test_create_shows_status_side_panel_skeleton(self):
2265
+ self.user.first_name = "Chrismansyah"
2266
+ self.user.last_name = "Rahadi"
2267
+ self.user.save()
2268
+ response = self.client.get(
2269
+ reverse(
2270
+ "wagtailadmin_pages:add",
2271
+ args=("tests", "simplepage", self.root_page.id),
2272
+ )
2273
+ )
2274
+ soup = self.get_soup(response.content)
2275
+ panel = soup.select_one('[data-side-panel="status"]')
2276
+ self.assertIsNotNone(panel)
2277
+
2278
+ def assert_panel_section(label_id, label_text, description):
2279
+ section = panel.select_one(f'[aria-labelledby="{label_id}"]')
2280
+ self.assertIsNotNone(section)
2281
+ label = section.select_one(f"#{label_id}")
2282
+ self.assertIsNotNone(label)
2283
+ self.assertEqual(label.get_text(separator="\n", strip=True), label_text)
2284
+ self.assertEqual(
2285
+ section.get_text(separator="\n", strip=True),
2286
+ f"{label_text}\n{description}",
2287
+ )
2288
+
2289
+ assert_panel_section(
2290
+ "status-sidebar-draft",
2291
+ "Draft",
2292
+ "To be created by Chrismansyah Rahadi",
2293
+ )
2294
+
2295
+ assert_panel_section(
2296
+ "status-sidebar-unlocked",
2297
+ "Locking:\nUnlocked",
2298
+ "Anyone can edit this page",
2299
+ )
2300
+
2301
+ assert_panel_section(
2302
+ "status-sidebar-visible-to-all",
2303
+ "Page visibility:\nVisible to all",
2304
+ "Once live anyone can view",
2305
+ )
2306
+
2307
+ usage_section = panel.select("section")[-1]
2308
+ self.assertIsNotNone(usage_section)
2309
+ self.assertEqual(
2310
+ usage_section.get_text(separator="\n", strip=True),
2311
+ "Usage\nReferenced 0 times",
2312
+ )
2313
+
2007
2314
 
2008
2315
  class TestPermissionedFieldPanels(WagtailTestUtils, TestCase):
2009
2316
  fixtures = ["test.json"]
@@ -2715,6 +3022,57 @@ class TestCommenting(WagtailTestUtils, TestCase):
2715
3022
  self.assertIn("w-init", form["data-controller"])
2716
3023
  self.assertEqual("", form["data-w-init-event-value"])
2717
3024
 
3025
+ def test_new_comment_json(self):
3026
+ post_data = {
3027
+ "title": "New page",
3028
+ "content": "hello world",
3029
+ "slug": "hello-world",
3030
+ "comments-TOTAL_FORMS": "1",
3031
+ "comments-INITIAL_FORMS": "0",
3032
+ "comments-MIN_NUM_FORMS": "0",
3033
+ "comments-MAX_NUM_FORMS": "",
3034
+ "comments-0-DELETE": "",
3035
+ "comments-0-resolved": "",
3036
+ "comments-0-id": "",
3037
+ "comments-0-contentpath": "title",
3038
+ "comments-0-text": "A test comment",
3039
+ "comments-0-position": "",
3040
+ "comments-0-replies-TOTAL_FORMS": "0",
3041
+ "comments-0-replies-INITIAL_FORMS": "0",
3042
+ "comments-0-replies-MIN_NUM_FORMS": "0",
3043
+ "comments-0-replies-MAX_NUM_FORMS": "0",
3044
+ }
3045
+ response = self.client.post(
3046
+ reverse(
3047
+ "wagtailadmin_pages:add",
3048
+ args=("tests", "simplepage", self.root_page.id),
3049
+ ),
3050
+ post_data,
3051
+ headers={"Accept": "application/json"},
3052
+ )
3053
+
3054
+ self.assertEqual(response.status_code, 200)
3055
+ response_json = response.json()
3056
+ self.assertEqual(response_json["success"], True)
3057
+ pk = response_json["pk"]
3058
+ new_page = SimplePage.objects.get(pk=pk)
3059
+
3060
+ # Check the comment was added
3061
+ comment = new_page.wagtail_admin_comments.get()
3062
+ self.assertEqual(comment.text, "A test comment")
3063
+
3064
+ # Should include serialized comments data in the response
3065
+ comments_json = response_json["comments"]
3066
+ self.assertEqual(len(comments_json["comments"]), 1)
3067
+ comment_json = comments_json["comments"][0]
3068
+ self.assertEqual(comment_json["pk"], comment.pk)
3069
+ self.assertEqual(comment_json["page"], new_page.pk)
3070
+ self.assertEqual(comment_json["user"], str(self.user.pk))
3071
+ self.assertEqual(comment_json["text"], "A test comment")
3072
+ self.assertEqual(comment_json["contentpath"], "title")
3073
+ self.assertEqual(comments_json["user"], str(self.user.pk))
3074
+ self.assertIn(str(self.user.pk), comments_json["authors"])
3075
+
2718
3076
 
2719
3077
  class TestCreateViewChildPagePrivacy(WagtailTestUtils, TestCase):
2720
3078
  def setUp(self):