wagtail 6.0.1__py3-none-any.whl → 6.1rc1__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 (512) hide show
  1. wagtail/__init__.py +1 -1
  2. wagtail/admin/checks.py +51 -0
  3. wagtail/admin/compare.py +1 -1
  4. wagtail/admin/filters.py +70 -1
  5. wagtail/admin/forms/account.py +1 -1
  6. wagtail/admin/forms/collections.py +15 -0
  7. wagtail/admin/forms/pages.py +49 -0
  8. wagtail/admin/locale/ca/LC_MESSAGES/django.mo +0 -0
  9. wagtail/admin/locale/ca/LC_MESSAGES/django.po +122 -0
  10. wagtail/admin/locale/de/LC_MESSAGES/django.mo +0 -0
  11. wagtail/admin/locale/de/LC_MESSAGES/django.po +5 -5
  12. wagtail/admin/locale/en/LC_MESSAGES/django.po +474 -385
  13. wagtail/admin/locale/en/LC_MESSAGES/djangojs.po +3 -3
  14. wagtail/admin/locale/es/LC_MESSAGES/django.mo +0 -0
  15. wagtail/admin/locale/es/LC_MESSAGES/django.po +6 -6
  16. wagtail/admin/locale/fr/LC_MESSAGES/django.mo +0 -0
  17. wagtail/admin/locale/fr/LC_MESSAGES/django.po +70 -3
  18. wagtail/admin/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  19. wagtail/admin/locale/he_IL/LC_MESSAGES/django.po +2 -6
  20. wagtail/admin/locale/he_IL/LC_MESSAGES/djangojs.mo +0 -0
  21. wagtail/admin/locale/he_IL/LC_MESSAGES/djangojs.po +2 -2
  22. wagtail/admin/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  23. wagtail/admin/locale/hr_HR/LC_MESSAGES/django.po +4 -0
  24. wagtail/admin/locale/hu/LC_MESSAGES/django.mo +0 -0
  25. wagtail/admin/locale/hu/LC_MESSAGES/django.po +142 -2
  26. wagtail/admin/locale/it/LC_MESSAGES/django.mo +0 -0
  27. wagtail/admin/locale/it/LC_MESSAGES/django.po +80 -8
  28. wagtail/admin/locale/it/LC_MESSAGES/djangojs.mo +0 -0
  29. wagtail/admin/locale/it/LC_MESSAGES/djangojs.po +14 -2
  30. wagtail/admin/locale/lv/LC_MESSAGES/django.mo +0 -0
  31. wagtail/admin/locale/lv/LC_MESSAGES/django.po +154 -1
  32. wagtail/admin/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  33. wagtail/admin/locale/pt_PT/LC_MESSAGES/django.po +73 -2
  34. wagtail/admin/locale/ro/LC_MESSAGES/django.mo +0 -0
  35. wagtail/admin/locale/ro/LC_MESSAGES/django.po +3 -3
  36. wagtail/admin/locale/sl/LC_MESSAGES/django.mo +0 -0
  37. wagtail/admin/locale/sl/LC_MESSAGES/django.po +145 -2
  38. wagtail/admin/locale/sv/LC_MESSAGES/django.mo +0 -0
  39. wagtail/admin/locale/sv/LC_MESSAGES/django.po +77 -3
  40. wagtail/admin/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
  41. wagtail/admin/locale/zh_Hant/LC_MESSAGES/django.po +17 -1
  42. wagtail/admin/panels/comment_panel.py +1 -1
  43. wagtail/admin/panels/field_panel.py +1 -1
  44. wagtail/admin/rich_text/converters/editor_html.py +3 -1
  45. wagtail/admin/rich_text/editors/draftail/__init__.py +28 -2
  46. wagtail/admin/static/wagtailadmin/css/core.css +1 -1
  47. wagtail/admin/static/wagtailadmin/css/panels/draftail.css +1 -1
  48. wagtail/admin/static/wagtailadmin/images/favicon.ico +0 -0
  49. wagtail/admin/static/wagtailadmin/js/bulk-actions.js +1 -1
  50. wagtail/admin/static/wagtailadmin/js/chooser-modal.js +1 -1
  51. wagtail/admin/static/wagtailadmin/js/chooser-widget-telepath.js +1 -1
  52. wagtail/admin/static/wagtailadmin/js/chooser-widget.js +1 -1
  53. wagtail/admin/static/wagtailadmin/js/comments.js +1 -1
  54. wagtail/admin/static/wagtailadmin/js/core.js +1 -1
  55. wagtail/admin/static/wagtailadmin/js/core.js.LICENSE.txt +1 -1
  56. wagtail/admin/static/wagtailadmin/js/date-time-chooser.js +1 -1
  57. wagtail/admin/static/wagtailadmin/js/draftail.js +1 -1
  58. wagtail/admin/static/wagtailadmin/js/expanding-formset.js +1 -1
  59. wagtail/admin/static/wagtailadmin/js/filtered-select.js +1 -1
  60. wagtail/admin/static/wagtailadmin/js/modal-workflow.js +1 -1
  61. wagtail/admin/static/wagtailadmin/js/page-chooser-modal.js +1 -1
  62. wagtail/admin/static/wagtailadmin/js/page-chooser-telepath.js +1 -1
  63. wagtail/admin/static/wagtailadmin/js/page-chooser.js +1 -1
  64. wagtail/admin/static/wagtailadmin/js/preview-panel.js +1 -1
  65. wagtail/admin/static/wagtailadmin/js/privacy-switch.js +1 -1
  66. wagtail/admin/static/wagtailadmin/js/sidebar.js +1 -1
  67. wagtail/admin/static/wagtailadmin/js/task-chooser-modal.js +1 -1
  68. wagtail/admin/static/wagtailadmin/js/task-chooser.js +1 -1
  69. wagtail/admin/static/wagtailadmin/js/telepath/blocks.js +1 -1
  70. wagtail/admin/static/wagtailadmin/js/telepath/telepath.js +1 -1
  71. wagtail/admin/static/wagtailadmin/js/telepath/widgets.js +1 -1
  72. wagtail/admin/static/wagtailadmin/js/userbar.js +1 -1
  73. wagtail/admin/static/wagtailadmin/js/vendor.js +1 -1
  74. wagtail/admin/static/wagtailadmin/js/vendor.js.LICENSE.txt +4 -4
  75. wagtail/admin/static/wagtailadmin/js/wagtailadmin.js +1 -1
  76. wagtail/admin/static/wagtailadmin/js/workflow-action.js +1 -1
  77. wagtail/admin/staticfiles.py +1 -0
  78. wagtail/admin/templates/wagtailadmin/admin_base.html +1 -0
  79. wagtail/admin/templates/wagtailadmin/base.html +1 -0
  80. wagtail/admin/templates/wagtailadmin/collection_privacy/set_privacy.html +3 -1
  81. wagtail/admin/templates/wagtailadmin/collections/edit.html +0 -1
  82. wagtail/admin/templates/wagtailadmin/collections/index_results.html +10 -0
  83. wagtail/admin/templates/wagtailadmin/generic/base.html +1 -9
  84. wagtail/admin/templates/wagtailadmin/generic/form.html +4 -2
  85. wagtail/admin/templates/wagtailadmin/generic/history/action_cell.html +27 -0
  86. wagtail/admin/templates/wagtailadmin/generic/index_results.html +8 -0
  87. wagtail/admin/templates/wagtailadmin/home/workflow_objects_to_moderate.html +3 -4
  88. wagtail/admin/templates/wagtailadmin/icons/keyboard.svg +1 -0
  89. wagtail/admin/templates/wagtailadmin/page_privacy/set_privacy.html +3 -1
  90. wagtail/admin/templates/wagtailadmin/pages/_editor_js.html +0 -15
  91. wagtail/admin/templates/wagtailadmin/pages/action_menu/save_draft.html +3 -1
  92. wagtail/admin/templates/wagtailadmin/pages/choose_parent.html +17 -0
  93. wagtail/admin/templates/wagtailadmin/pages/explorable_index.html +8 -0
  94. wagtail/admin/templates/wagtailadmin/pages/history.html +1 -61
  95. wagtail/admin/templates/wagtailadmin/pages/index.html +1 -5
  96. wagtail/admin/templates/wagtailadmin/pages/listing/_locked_indicator.html +2 -2
  97. wagtail/admin/templates/wagtailadmin/pages/listing/_page_title_column_header.html +25 -27
  98. wagtail/admin/templates/wagtailadmin/pages/page_listing_header.html +2 -1
  99. wagtail/admin/templates/wagtailadmin/panels/multi_field_panel_child.html +1 -1
  100. wagtail/admin/templates/wagtailadmin/panels/publishing/schedule_publishing_panel.html +3 -1
  101. wagtail/admin/templates/wagtailadmin/panels/tabbed_interface.html +1 -1
  102. wagtail/admin/templates/wagtailadmin/shared/active_filters.html +2 -1
  103. wagtail/admin/templates/wagtailadmin/shared/breadcrumbs.html +8 -0
  104. wagtail/admin/templates/wagtailadmin/shared/forms/single_checkbox.html +1 -1
  105. wagtail/admin/templates/wagtailadmin/shared/headers/page_edit_header.html +1 -1
  106. wagtail/admin/templates/wagtailadmin/shared/headers/slim_header.html +21 -9
  107. wagtail/admin/templates/wagtailadmin/shared/human_readable_date.html +1 -1
  108. wagtail/admin/templates/wagtailadmin/shared/keyboard_shortcuts_dialog.html +29 -0
  109. wagtail/admin/templates/wagtailadmin/shared/side_panel_toggle.html +2 -1
  110. wagtail/admin/templates/wagtailadmin/skeleton.html +2 -1
  111. wagtail/admin/templates/wagtailadmin/tables/related_objects_cell.html +9 -0
  112. wagtail/admin/templates/wagtailadmin/tables/title_cell.html +9 -7
  113. wagtail/admin/templates/wagtailadmin/widgets/draftail_rich_text_area.html +1 -1
  114. wagtail/admin/templates/wagtailadmin/workflows/create.html +6 -23
  115. wagtail/admin/templates/wagtailadmin/workflows/create_task.html +6 -15
  116. wagtail/admin/templates/wagtailadmin/workflows/edit.html +6 -23
  117. wagtail/admin/templates/wagtailadmin/workflows/edit_task.html +6 -13
  118. wagtail/admin/templates/wagtailadmin/workflows/includes/task_usage_cell.html +4 -4
  119. wagtail/admin/templates/wagtailadmin/workflows/includes/workflow_tasks_cell.html +18 -0
  120. wagtail/admin/templates/wagtailadmin/workflows/includes/workflow_title_cell.html +7 -0
  121. wagtail/admin/templates/wagtailadmin/workflows/includes/workflow_used_by_cell.html +25 -0
  122. wagtail/admin/templates/wagtailadmin/workflows/index.html +0 -99
  123. wagtail/admin/templates/wagtailadmin/workflows/index_results.html +10 -0
  124. wagtail/admin/templates/wagtailadmin/workflows/task_index.html +0 -30
  125. wagtail/admin/templates/wagtailadmin/workflows/task_index_results.html +10 -0
  126. wagtail/admin/templates/wagtailadmin/workflows/usage.html +1 -1
  127. wagtail/admin/templatetags/wagtailadmin_tags.py +116 -39
  128. wagtail/admin/tests/api/test_pages.py +26 -10
  129. wagtail/admin/tests/pages/test_create_page.py +10 -4
  130. wagtail/admin/tests/pages/test_custom_listing.py +37 -0
  131. wagtail/admin/tests/pages/test_edit_page.py +6 -6
  132. wagtail/admin/tests/pages/test_explorer_view.py +19 -18
  133. wagtail/admin/tests/pages/test_move_page.py +1 -1
  134. wagtail/admin/tests/pages/test_page_usage.py +50 -2
  135. wagtail/admin/tests/pages/test_parent_page_chooser_view.py +119 -0
  136. wagtail/admin/tests/pages/test_preview.py +18 -4
  137. wagtail/admin/tests/test_account_management.py +20 -1
  138. wagtail/admin/tests/test_audit_log.py +172 -5
  139. wagtail/admin/tests/test_checks.py +92 -0
  140. wagtail/admin/tests/test_collections_views.py +19 -5
  141. wagtail/admin/tests/test_compare.py +6 -6
  142. wagtail/admin/tests/test_dashboard.py +404 -0
  143. wagtail/admin/tests/test_dbwhitelister.py +4 -5
  144. wagtail/admin/tests/test_edit_handlers.py +2 -2
  145. wagtail/admin/tests/test_keyboard_shortcuts.py +84 -0
  146. wagtail/admin/tests/test_page_chooser.py +31 -18
  147. wagtail/admin/tests/test_privacy.py +36 -2
  148. wagtail/admin/tests/test_rich_text.py +168 -23
  149. wagtail/admin/tests/test_templatetags.py +411 -43
  150. wagtail/admin/tests/test_views.py +4 -2
  151. wagtail/admin/tests/test_workflows.py +531 -9
  152. wagtail/admin/tests/tests.py +3 -1
  153. wagtail/admin/tests/ui/test_tables.py +48 -1
  154. wagtail/admin/tests/viewsets/test_model_viewset.py +130 -23
  155. wagtail/admin/ui/side_panels.py +3 -1
  156. wagtail/admin/ui/tables/__init__.py +13 -1
  157. wagtail/admin/ui/tables/pages.py +17 -6
  158. wagtail/admin/urls/__init__.py +8 -3
  159. wagtail/admin/urls/pages.py +5 -0
  160. wagtail/admin/urls/workflows.py +10 -0
  161. wagtail/admin/views/chooser.py +20 -24
  162. wagtail/admin/views/collections.py +17 -1
  163. wagtail/admin/views/generic/base.py +34 -4
  164. wagtail/admin/views/generic/history.py +220 -51
  165. wagtail/admin/views/generic/mixins.py +7 -4
  166. wagtail/admin/views/generic/models.py +54 -47
  167. wagtail/admin/views/generic/multiple_upload.py +17 -8
  168. wagtail/admin/views/generic/usage.py +17 -11
  169. wagtail/admin/views/home.py +15 -12
  170. wagtail/admin/views/mixins.py +30 -0
  171. wagtail/admin/views/pages/choose_parent.py +73 -0
  172. wagtail/admin/views/pages/history.py +54 -66
  173. wagtail/admin/views/pages/listing.py +187 -106
  174. wagtail/admin/views/pages/usage.py +6 -1
  175. wagtail/admin/views/pages/utils.py +70 -1
  176. wagtail/admin/views/workflows.py +150 -21
  177. wagtail/admin/viewsets/model.py +2 -2
  178. wagtail/admin/viewsets/pages.py +77 -0
  179. wagtail/admin/wagtail_hooks.py +40 -2
  180. wagtail/admin/widgets/button.py +10 -10
  181. wagtail/api/v2/filters.py +1 -1
  182. wagtail/api/v2/tests/test_pages.py +1 -1
  183. wagtail/blocks/base.py +18 -9
  184. wagtail/blocks/field_block.py +9 -7
  185. wagtail/blocks/list_block.py +16 -6
  186. wagtail/blocks/static_block.py +3 -0
  187. wagtail/blocks/stream_block.py +58 -23
  188. wagtail/blocks/struct_block.py +15 -9
  189. wagtail/contrib/forms/locale/en/LC_MESSAGES/django.po +39 -47
  190. wagtail/contrib/forms/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  191. wagtail/contrib/forms/locale/he_IL/LC_MESSAGES/django.po +2 -2
  192. wagtail/contrib/forms/models.py +5 -5
  193. wagtail/contrib/forms/templates/wagtailforms/list_submissions.html +44 -33
  194. wagtail/contrib/forms/templates/wagtailforms/submissions_index.html +2 -63
  195. wagtail/contrib/forms/tests/test_models.py +26 -0
  196. wagtail/contrib/forms/urls.py +6 -0
  197. wagtail/contrib/forms/views.py +52 -49
  198. wagtail/contrib/redirects/locale/ca/LC_MESSAGES/django.mo +0 -0
  199. wagtail/contrib/redirects/locale/ca/LC_MESSAGES/django.po +3 -3
  200. wagtail/contrib/redirects/locale/en/LC_MESSAGES/django.po +34 -42
  201. wagtail/contrib/redirects/locale/fr/LC_MESSAGES/django.po +2 -2
  202. wagtail/contrib/redirects/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  203. wagtail/contrib/redirects/locale/he_IL/LC_MESSAGES/django.po +2 -2
  204. wagtail/contrib/redirects/signal_handlers.py +1 -1
  205. wagtail/contrib/redirects/templates/wagtailredirects/index.html +1 -36
  206. wagtail/contrib/redirects/templates/wagtailredirects/index_results.html +18 -0
  207. wagtail/contrib/redirects/templates/wagtailredirects/redirect_target_cell.html +8 -0
  208. wagtail/contrib/redirects/tests/test_import_command.py +1 -1
  209. wagtail/contrib/redirects/tests/test_redirects.py +79 -8
  210. wagtail/contrib/redirects/urls.py +2 -1
  211. wagtail/contrib/redirects/views.py +85 -55
  212. wagtail/contrib/search_promotions/admin_urls.py +2 -1
  213. wagtail/contrib/search_promotions/locale/en/LC_MESSAGES/django.po +41 -64
  214. wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.po +2 -2
  215. wagtail/contrib/search_promotions/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  216. wagtail/contrib/search_promotions/locale/he_IL/LC_MESSAGES/django.po +2 -2
  217. wagtail/contrib/search_promotions/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  218. wagtail/contrib/search_promotions/locale/hr_HR/LC_MESSAGES/django.po +41 -2
  219. wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.mo +0 -0
  220. wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.po +9 -3
  221. wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/index.html +1 -16
  222. wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/index_results.html +11 -0
  223. wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/list.html +0 -51
  224. wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/results.html +3 -16
  225. wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/search_promotion_column.html +15 -0
  226. wagtail/contrib/search_promotions/tests.py +122 -9
  227. wagtail/contrib/search_promotions/views.py +66 -65
  228. wagtail/contrib/settings/locale/en/LC_MESSAGES/django.po +3 -3
  229. wagtail/contrib/settings/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  230. wagtail/contrib/settings/locale/he_IL/LC_MESSAGES/django.po +2 -2
  231. wagtail/contrib/settings/locale/tr/LC_MESSAGES/django.mo +0 -0
  232. wagtail/contrib/settings/locale/tr/LC_MESSAGES/django.po +6 -2
  233. wagtail/contrib/settings/registry.py +10 -5
  234. wagtail/contrib/settings/tests/generic/test_admin.py +9 -0
  235. wagtail/contrib/settings/tests/site_specific/test_admin.py +10 -1
  236. wagtail/contrib/settings/tests/site_specific/test_model.py +3 -3
  237. wagtail/contrib/settings/tests/site_specific/test_templates.py +1 -1
  238. wagtail/contrib/settings/views.py +3 -1
  239. wagtail/contrib/simple_translation/locale/en/LC_MESSAGES/django.po +1 -1
  240. wagtail/contrib/simple_translation/tests/test_wagtail_hooks.py +2 -2
  241. wagtail/contrib/styleguide/locale/en/LC_MESSAGES/django.po +7 -7
  242. wagtail/contrib/styleguide/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  243. wagtail/contrib/styleguide/locale/he_IL/LC_MESSAGES/django.po +2 -2
  244. wagtail/contrib/table_block/blocks.py +2 -2
  245. wagtail/contrib/table_block/locale/ca/LC_MESSAGES/django.mo +0 -0
  246. wagtail/contrib/table_block/locale/ca/LC_MESSAGES/django.po +27 -2
  247. wagtail/contrib/table_block/locale/en/LC_MESSAGES/django.po +1 -1
  248. wagtail/contrib/table_block/locale/hu/LC_MESSAGES/django.mo +0 -0
  249. wagtail/contrib/table_block/locale/hu/LC_MESSAGES/django.po +27 -2
  250. wagtail/contrib/table_block/locale/it/LC_MESSAGES/django.mo +0 -0
  251. wagtail/contrib/table_block/locale/it/LC_MESSAGES/django.po +27 -2
  252. wagtail/contrib/table_block/static/table_block/js/table.js +1 -1
  253. wagtail/contrib/table_block/tests.py +6 -0
  254. wagtail/contrib/typed_table_block/locale/ca/LC_MESSAGES/django.mo +0 -0
  255. wagtail/contrib/typed_table_block/locale/ca/LC_MESSAGES/django.po +12 -2
  256. wagtail/contrib/typed_table_block/locale/en/LC_MESSAGES/django.po +1 -1
  257. wagtail/contrib/typed_table_block/locale/hu/LC_MESSAGES/django.mo +0 -0
  258. wagtail/contrib/typed_table_block/locale/hu/LC_MESSAGES/django.po +12 -2
  259. wagtail/contrib/typed_table_block/locale/it/LC_MESSAGES/django.mo +0 -0
  260. wagtail/contrib/typed_table_block/locale/it/LC_MESSAGES/django.po +12 -2
  261. wagtail/contrib/typed_table_block/static/typed_table_block/js/typed_table_block.js +1 -1
  262. wagtail/coreutils.py +3 -2
  263. wagtail/documents/admin_urls.py +2 -2
  264. wagtail/documents/locale/en/LC_MESSAGES/django.po +22 -22
  265. wagtail/documents/locale/fr/LC_MESSAGES/django.po +2 -2
  266. wagtail/documents/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  267. wagtail/documents/locale/he_IL/LC_MESSAGES/django.po +2 -2
  268. wagtail/documents/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  269. wagtail/documents/locale/hr_HR/LC_MESSAGES/django.po +19 -2
  270. wagtail/documents/locale/hu/LC_MESSAGES/django.mo +0 -0
  271. wagtail/documents/locale/hu/LC_MESSAGES/django.po +16 -2
  272. wagtail/documents/locale/it/LC_MESSAGES/django.mo +0 -0
  273. wagtail/documents/locale/it/LC_MESSAGES/django.po +19 -2
  274. wagtail/documents/migrations/0013_delete_uploadeddocument.py +16 -0
  275. wagtail/documents/models.py +1 -20
  276. wagtail/documents/rich_text/__init__.py +11 -7
  277. wagtail/documents/static/wagtaildocs/js/document-chooser-modal.js +1 -1
  278. wagtail/documents/static/wagtaildocs/js/document-chooser-telepath.js +1 -1
  279. wagtail/documents/static/wagtaildocs/js/document-chooser.js +1 -1
  280. wagtail/documents/templates/wagtaildocs/documents/index.html +0 -16
  281. wagtail/documents/tests/test_admin_views.py +155 -23
  282. wagtail/documents/tests/test_collection_privacy.py +55 -1
  283. wagtail/documents/tests/test_rich_text.py +14 -0
  284. wagtail/documents/views/documents.py +25 -22
  285. wagtail/documents/views/multiple.py +6 -7
  286. wagtail/documents/views/serve.py +16 -1
  287. wagtail/documents/wagtail_hooks.py +20 -15
  288. wagtail/embeds/blocks.py +5 -0
  289. wagtail/embeds/locale/en/LC_MESSAGES/django.po +2 -2
  290. wagtail/embeds/locale/fr/LC_MESSAGES/django.po +2 -2
  291. wagtail/embeds/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  292. wagtail/embeds/locale/he_IL/LC_MESSAGES/django.po +2 -2
  293. wagtail/embeds/rich_text/__init__.py +1 -1
  294. wagtail/embeds/tests/test_rich_text.py +14 -0
  295. wagtail/embeds/wagtail_hooks.py +4 -14
  296. wagtail/fields.py +3 -48
  297. wagtail/images/admin_urls.py +2 -2
  298. wagtail/images/check_files/wagtail.jpg +0 -0
  299. wagtail/images/check_files/wagtail.png +0 -0
  300. wagtail/images/fields.py +2 -0
  301. wagtail/images/image_operations.py +1 -1
  302. wagtail/images/locale/ca/LC_MESSAGES/django.mo +0 -0
  303. wagtail/images/locale/ca/LC_MESSAGES/django.po +12 -0
  304. wagtail/images/locale/en/LC_MESSAGES/django.po +33 -45
  305. wagtail/images/locale/fr/LC_MESSAGES/django.po +2 -2
  306. wagtail/images/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  307. wagtail/images/locale/he_IL/LC_MESSAGES/django.po +2 -2
  308. wagtail/images/locale/hu/LC_MESSAGES/django.mo +0 -0
  309. wagtail/images/locale/hu/LC_MESSAGES/django.po +28 -2
  310. wagtail/images/locale/it/LC_MESSAGES/django.mo +0 -0
  311. wagtail/images/locale/it/LC_MESSAGES/django.po +14 -2
  312. wagtail/images/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  313. wagtail/images/locale/pt_PT/LC_MESSAGES/django.po +4 -0
  314. wagtail/images/migrations/0026_delete_uploadedimage.py +16 -0
  315. wagtail/images/models.py +49 -43
  316. wagtail/images/rich_text/__init__.py +18 -8
  317. wagtail/images/static/wagtailimages/js/image-chooser-modal.js +1 -1
  318. wagtail/images/static/wagtailimages/js/image-chooser-telepath.js +1 -1
  319. wagtail/images/static/wagtailimages/js/image-chooser.js +1 -1
  320. wagtail/images/templates/wagtailimages/images/image_listing_header.html +6 -0
  321. wagtail/images/templates/wagtailimages/images/index.html +11 -51
  322. wagtail/images/tests/test_admin_views.py +119 -62
  323. wagtail/images/tests/test_image_operations.py +10 -0
  324. wagtail/images/tests/test_models.py +35 -33
  325. wagtail/images/tests/test_rich_text.py +14 -0
  326. wagtail/images/tests/utils.py +1 -1
  327. wagtail/images/views/images.py +35 -64
  328. wagtail/images/views/multiple.py +6 -7
  329. wagtail/images/wagtail_hooks.py +4 -14
  330. wagtail/locale/en/LC_MESSAGES/django.po +150 -136
  331. wagtail/locale/es/LC_MESSAGES/django.mo +0 -0
  332. wagtail/locale/es/LC_MESSAGES/django.po +3 -2
  333. wagtail/locale/fr/LC_MESSAGES/django.po +2 -2
  334. wagtail/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  335. wagtail/locale/he_IL/LC_MESSAGES/django.po +2 -2
  336. wagtail/locale/it/LC_MESSAGES/django.mo +0 -0
  337. wagtail/locale/it/LC_MESSAGES/django.po +5 -5
  338. wagtail/locale/sl/LC_MESSAGES/django.mo +0 -0
  339. wagtail/locale/sl/LC_MESSAGES/django.po +27 -2
  340. wagtail/locales/locale/ar/LC_MESSAGES/django.po +1 -1
  341. wagtail/locales/locale/be/LC_MESSAGES/django.po +1 -1
  342. wagtail/locales/locale/bg/LC_MESSAGES/django.po +1 -1
  343. wagtail/locales/locale/ca/LC_MESSAGES/django.po +1 -1
  344. wagtail/locales/locale/cs/LC_MESSAGES/django.po +1 -1
  345. wagtail/locales/locale/cy/LC_MESSAGES/django.po +1 -1
  346. wagtail/locales/locale/da/LC_MESSAGES/django.po +1 -1
  347. wagtail/locales/locale/de/LC_MESSAGES/django.po +1 -1
  348. wagtail/locales/locale/el/LC_MESSAGES/django.po +1 -1
  349. wagtail/locales/locale/en/LC_MESSAGES/django.po +1 -1
  350. wagtail/locales/locale/es/LC_MESSAGES/django.po +1 -1
  351. wagtail/locales/locale/et/LC_MESSAGES/django.po +2 -2
  352. wagtail/locales/locale/fa/LC_MESSAGES/django.po +1 -1
  353. wagtail/locales/locale/fi/LC_MESSAGES/django.po +1 -1
  354. wagtail/locales/locale/fr/LC_MESSAGES/django.po +1 -1
  355. wagtail/locales/locale/gl/LC_MESSAGES/django.po +1 -1
  356. wagtail/locales/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  357. wagtail/locales/locale/he_IL/LC_MESSAGES/django.po +3 -3
  358. wagtail/locales/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  359. wagtail/locales/locale/hu/LC_MESSAGES/django.po +1 -1
  360. wagtail/locales/locale/id_ID/LC_MESSAGES/django.po +1 -1
  361. wagtail/locales/locale/is_IS/LC_MESSAGES/django.po +1 -1
  362. wagtail/locales/locale/it/LC_MESSAGES/django.po +1 -1
  363. wagtail/locales/locale/ja/LC_MESSAGES/django.po +1 -1
  364. wagtail/locales/locale/ko/LC_MESSAGES/django.po +1 -1
  365. wagtail/locales/locale/lt/LC_MESSAGES/django.po +1 -1
  366. wagtail/locales/locale/lv/LC_MESSAGES/django.po +1 -1
  367. wagtail/locales/locale/mi/LC_MESSAGES/django.po +1 -1
  368. wagtail/locales/locale/mn/LC_MESSAGES/django.po +1 -1
  369. wagtail/locales/locale/my/LC_MESSAGES/django.po +1 -1
  370. wagtail/locales/locale/nb/LC_MESSAGES/django.po +1 -1
  371. wagtail/locales/locale/nl/LC_MESSAGES/django.po +1 -1
  372. wagtail/locales/locale/pl/LC_MESSAGES/django.po +1 -1
  373. wagtail/locales/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  374. wagtail/locales/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  375. wagtail/locales/locale/ro/LC_MESSAGES/django.po +1 -1
  376. wagtail/locales/locale/ru/LC_MESSAGES/django.po +1 -1
  377. wagtail/locales/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  378. wagtail/locales/locale/sl/LC_MESSAGES/django.po +1 -1
  379. wagtail/locales/locale/sv/LC_MESSAGES/django.po +1 -1
  380. wagtail/locales/locale/tet/LC_MESSAGES/django.po +1 -1
  381. wagtail/locales/locale/th/LC_MESSAGES/django.po +1 -1
  382. wagtail/locales/locale/tr/LC_MESSAGES/django.po +1 -1
  383. wagtail/locales/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  384. wagtail/locales/locale/uk/LC_MESSAGES/django.po +1 -1
  385. wagtail/locales/locale/vi/LC_MESSAGES/django.po +1 -1
  386. wagtail/locales/locale/zh/LC_MESSAGES/django.po +1 -1
  387. wagtail/locales/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  388. wagtail/locales/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  389. wagtail/locales/tests.py +18 -3
  390. wagtail/locales/views.py +0 -1
  391. wagtail/management/commands/rebuild_references_index.py +3 -1
  392. wagtail/migrations/0092_alter_collectionviewrestriction_password_and_more.py +33 -0
  393. wagtail/migrations/0093_uploadedfile.py +53 -0
  394. wagtail/models/__init__.py +147 -32
  395. wagtail/models/i18n.py +1 -1
  396. wagtail/models/{collections.py → media.py} +33 -2
  397. wagtail/models/reference_index.py +1 -1
  398. wagtail/models/view_restrictions.py +10 -3
  399. wagtail/project_template/project_name/settings/base.py +6 -0
  400. wagtail/project_template/requirements.txt +1 -1
  401. wagtail/rich_text/__init__.py +25 -8
  402. wagtail/rich_text/pages.py +19 -8
  403. wagtail/rich_text/rewriters.py +140 -68
  404. wagtail/search/backends/database/mysql/mysql.py +3 -3
  405. wagtail/search/backends/database/postgres/postgres.py +3 -3
  406. wagtail/search/backends/database/sqlite/sqlite.py +2 -2
  407. wagtail/search/backends/elasticsearch7.py +4 -0
  408. wagtail/search/locale/en/LC_MESSAGES/django.po +3 -3
  409. wagtail/search/tests/test_postgres_backend.py +50 -0
  410. wagtail/sites/locale/en/LC_MESSAGES/django.po +8 -8
  411. wagtail/sites/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  412. wagtail/sites/locale/he_IL/LC_MESSAGES/django.po +2 -2
  413. wagtail/sites/locale/ro/LC_MESSAGES/django.mo +0 -0
  414. wagtail/sites/locale/ro/LC_MESSAGES/django.po +3 -2
  415. wagtail/sites/tests.py +35 -9
  416. wagtail/sites/views.py +3 -1
  417. wagtail/snippets/locale/de/LC_MESSAGES/django.mo +0 -0
  418. wagtail/snippets/locale/de/LC_MESSAGES/django.po +7 -8
  419. wagtail/snippets/locale/en/LC_MESSAGES/django.po +16 -56
  420. wagtail/snippets/locale/fr/LC_MESSAGES/django.po +2 -2
  421. wagtail/snippets/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  422. wagtail/snippets/locale/he_IL/LC_MESSAGES/django.po +2 -2
  423. wagtail/snippets/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  424. wagtail/snippets/locale/hr_HR/LC_MESSAGES/django.po +6 -2
  425. wagtail/snippets/locale/lv/LC_MESSAGES/django.mo +0 -0
  426. wagtail/snippets/locale/lv/LC_MESSAGES/django.po +12 -0
  427. wagtail/snippets/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
  428. wagtail/snippets/locale/zh_Hant/LC_MESSAGES/django.po +4 -0
  429. wagtail/snippets/static/wagtailsnippets/js/snippet-chooser-telepath.js +1 -1
  430. wagtail/snippets/static/wagtailsnippets/js/snippet-chooser.js +1 -1
  431. wagtail/snippets/templates/wagtailsnippets/snippets/action_menu/publish.html +3 -1
  432. wagtail/snippets/templates/wagtailsnippets/snippets/action_menu/save.html +3 -1
  433. wagtail/snippets/templates/wagtailsnippets/snippets/create.html +2 -3
  434. wagtail/snippets/templates/wagtailsnippets/snippets/edit.html +2 -3
  435. wagtail/snippets/tests/test_preview.py +13 -2
  436. wagtail/snippets/tests/test_snippets.py +41 -16
  437. wagtail/snippets/tests/test_viewset.py +95 -18
  438. wagtail/snippets/tests/test_workflows.py +12 -0
  439. wagtail/snippets/views/snippets.py +1 -40
  440. wagtail/templatetags/wagtailcore_tags.py +1 -1
  441. wagtail/test/demosite/models.py +1 -1
  442. wagtail/test/middleware.py +14 -1
  443. wagtail/test/testapp/fixtures/test.json +20 -0
  444. wagtail/test/testapp/migrations/0001_squashed_0073_revisablechildmodel_secret_text.py +8 -8
  445. wagtail/test/testapp/migrations/0023_snippetchoosermodel_full_featured.py +1 -0
  446. wagtail/test/testapp/migrations/0034_custompermissionmodel.py +44 -0
  447. wagtail/test/testapp/migrations/0035_modelwithcustommanager.py +30 -0
  448. wagtail/test/testapp/migrations/0036_complexdefaultstreampage.py +28 -0
  449. wagtail/test/testapp/models.py +79 -2
  450. wagtail/test/testapp/templates/tests/custom_docs_password_required.html +10 -0
  451. wagtail/test/testapp/templates/tests/custom_page_password_required.html +10 -0
  452. wagtail/test/testapp/views.py +24 -2
  453. wagtail/test/testapp/wagtail_hooks.py +19 -0
  454. wagtail/test/utils/wagtail_tests.py +2 -2
  455. wagtail/tests/test_blocks.py +262 -1
  456. wagtail/tests/test_migrations.py +1 -1
  457. wagtail/tests/test_page_model.py +77 -0
  458. wagtail/tests/test_page_privacy.py +18 -1
  459. wagtail/tests/test_rich_text.py +95 -5
  460. wagtail/tests/test_streamfield.py +43 -0
  461. wagtail/tests/test_utils.py +8 -2
  462. wagtail/tests/test_views.py +52 -1
  463. wagtail/tests/test_whitelist.py +7 -7
  464. wagtail/users/forms.py +3 -1
  465. wagtail/users/locale/en/LC_MESSAGES/django.po +124 -96
  466. wagtail/users/locale/fr/LC_MESSAGES/django.po +2 -2
  467. wagtail/users/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  468. wagtail/users/locale/he_IL/LC_MESSAGES/django.po +2 -2
  469. wagtail/users/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  470. wagtail/users/locale/hr_HR/LC_MESSAGES/django.po +13 -2
  471. wagtail/users/migrations/0013_userprofile_density.py +23 -0
  472. wagtail/users/models.py +14 -3
  473. wagtail/users/templates/wagtailusers/groups/create.html +1 -7
  474. wagtail/users/templates/wagtailusers/groups/edit.html +1 -13
  475. wagtail/users/templates/wagtailusers/groups/includes/formatted_permissions.html +46 -2
  476. wagtail/users/templates/wagtailusers/groups/includes/group_form_js.html +0 -3
  477. wagtail/users/templates/wagtailusers/users/create.html +1 -14
  478. wagtail/users/templates/wagtailusers/users/edit.html +1 -14
  479. wagtail/users/templates/wagtailusers/users/index.html +2 -5
  480. wagtail/users/templates/wagtailusers/users/index_results.html +3 -13
  481. wagtail/users/templates/wagtailusers/users/user_cell.html +9 -0
  482. wagtail/users/templatetags/wagtailusers_tags.py +107 -20
  483. wagtail/users/tests/test_admin_views.py +669 -90
  484. wagtail/users/views/groups.py +58 -61
  485. wagtail/users/views/users.py +211 -92
  486. wagtail/users/wagtail_hooks.py +6 -38
  487. wagtail/users/widgets.py +3 -5
  488. wagtail/utils/text.py +1 -1
  489. wagtail/views.py +5 -9
  490. wagtail/whitelist.py +1 -1
  491. {wagtail-6.0.1.dist-info → wagtail-6.1rc1.dist-info}/METADATA +5 -6
  492. {wagtail-6.0.1.dist-info → wagtail-6.1rc1.dist-info}/RECORD +496 -477
  493. wagtail/admin/static/wagtailadmin/js/page-editor.js +0 -1
  494. wagtail/admin/static/wagtailadmin/js/vendor/mousetrap.min.js +0 -1
  495. wagtail/admin/static/wagtailadmin/js/vendor/urlify.js +0 -1
  496. wagtail/admin/static/wagtailadmin/js/vendor/xregexp.min.js +0 -1
  497. wagtail/admin/templates/wagtailadmin/collections/index.html +0 -34
  498. wagtail/admin/templates/wagtailadmin/pages/revisions/_actions.html +0 -22
  499. wagtail/admin/templates/wagtailadmin/shared/page_breadcrumbs.html +0 -55
  500. wagtail/admin/tests/pages/test_dashboard.py +0 -172
  501. wagtail/contrib/redirects/templates/wagtailredirects/results.html +0 -23
  502. wagtail/documents/templates/wagtaildocs/documents/list.html +0 -2
  503. wagtail/search/tests/test_postgres_stemming.py +0 -40
  504. wagtail/sites/templates/wagtailsites/create.html +0 -7
  505. wagtail/sites/templates/wagtailsites/edit.html +0 -7
  506. wagtail/snippets/templates/wagtailsnippets/snippets/revisions/_actions.html +0 -36
  507. wagtail/users/templates/wagtailusers/users/list.html +0 -62
  508. wagtail/users/urls/users.py +0 -12
  509. {wagtail-6.0.1.dist-info → wagtail-6.1rc1.dist-info}/LICENSE +0 -0
  510. {wagtail-6.0.1.dist-info → wagtail-6.1rc1.dist-info}/WHEEL +0 -0
  511. {wagtail-6.0.1.dist-info → wagtail-6.1rc1.dist-info}/entry_points.txt +0 -0
  512. {wagtail-6.0.1.dist-info → wagtail-6.1rc1.dist-info}/top_level.txt +0 -0
@@ -1,23 +1,23 @@
1
1
  import os
2
2
 
3
3
  from django.core.exceptions import PermissionDenied, SuspiciousOperation
4
- from django.core.paginator import InvalidPage, Paginator
5
4
  from django.db import transaction
6
- from django.db.models import Q
7
- from django.http import Http404
8
5
  from django.shortcuts import get_object_or_404, redirect, render
9
6
  from django.template.response import TemplateResponse
10
7
  from django.urls import reverse
11
8
  from django.utils.encoding import force_str
9
+ from django.utils.functional import cached_property
12
10
  from django.utils.translation import gettext as _
13
- from django.utils.translation import ngettext
11
+ from django.utils.translation import gettext_lazy, ngettext
14
12
  from django.views.decorators.http import require_http_methods
15
- from django.views.decorators.vary import vary_on_headers
16
13
 
17
14
  from wagtail.admin import messages
18
15
  from wagtail.admin.auth import PermissionPolicyChecker
19
16
  from wagtail.admin.forms.search import SearchForm
17
+ from wagtail.admin.ui.tables import Column, StatusTagColumn, TitleColumn
18
+ from wagtail.admin.views import generic
20
19
  from wagtail.admin.views.reports import ReportView
20
+ from wagtail.admin.widgets.button import Button
21
21
  from wagtail.contrib.redirects import models
22
22
  from wagtail.contrib.redirects.filters import RedirectsReportFilterSet
23
23
  from wagtail.contrib.redirects.forms import (
@@ -26,6 +26,7 @@ from wagtail.contrib.redirects.forms import (
26
26
  ImportForm,
27
27
  RedirectForm,
28
28
  )
29
+ from wagtail.contrib.redirects.models import Redirect
29
30
  from wagtail.contrib.redirects.permissions import permission_policy
30
31
  from wagtail.contrib.redirects.utils import (
31
32
  get_file_storage,
@@ -39,62 +40,91 @@ from wagtail.log_actions import log
39
40
  permission_checker = PermissionPolicyChecker(permission_policy)
40
41
 
41
42
 
42
- @permission_checker.require_any("add", "change", "delete")
43
- @vary_on_headers("X-Requested-With")
44
- def index(request):
45
- query_string = request.GET.get("q", "")
46
- ordering = request.GET.get("ordering", "old_path")
43
+ class RedirectTargetColumn(Column):
44
+ cell_template_name = "wagtailredirects/redirect_target_cell.html"
45
+ url_name = "wagtailadmin_pages:edit"
47
46
 
48
- redirects = models.Redirect.objects.prefetch_related("redirect_page", "site")
47
+ def get_value(self, instance):
48
+ if instance.redirect_page:
49
+ return instance.redirect_page.get_admin_display_title()
50
+ return instance.redirect_link
49
51
 
50
- # Search
51
- if query_string:
52
- redirects = redirects.filter(
53
- Q(old_path__icontains=query_string)
54
- | Q(redirect_page__url_path__icontains=query_string)
55
- | Q(redirect_link__icontains=query_string)
56
- )
52
+ def get_url(self, instance):
53
+ if instance.redirect_page:
54
+ return reverse(self.url_name, args=[instance.redirect_page_id])
55
+ return None
57
56
 
58
- # Ordering (A bit useless at the moment as only 'old_path' is allowed)
59
- if ordering not in ["old_path"]:
60
- ordering = "old_path"
57
+ def get_cell_context_data(self, instance, parent_context):
58
+ context = super().get_cell_context_data(instance, parent_context)
59
+ context["url"] = self.get_url(instance)
60
+ return context
61
61
 
62
- redirects = redirects.order_by(ordering)
63
62
 
64
- # Pagination
65
- paginator = Paginator(redirects, per_page=20)
66
- try:
67
- redirects = paginator.page(request.GET.get("p", 1))
68
- except InvalidPage:
69
- raise Http404
63
+ class IndexView(generic.IndexView):
64
+ template_name = "wagtailredirects/index.html"
65
+ results_template_name = "wagtailredirects/index_results.html"
66
+ permission_policy = permission_policy
67
+ model = Redirect
68
+ header_icon = "redirect"
69
+ add_item_label = gettext_lazy("Add redirect")
70
+ context_object_name = "redirects"
71
+ index_url_name = "wagtailredirects:index"
72
+ index_results_url_name = "wagtailredirects:index_results"
73
+ add_url_name = "wagtailredirects:add"
74
+ edit_url_name = "wagtailredirects:edit"
75
+ delete_url_name = "wagtailredirects:delete"
76
+ default_ordering = "old_path"
77
+ paginate_by = 20
78
+ page_title = gettext_lazy("Redirects")
79
+ search_fields = ["old_path", "redirect_page__url_path", "redirect_link"]
80
+ _show_breadcrumbs = True
81
+ columns = [
82
+ TitleColumn(
83
+ "old_path",
84
+ label=gettext_lazy("From"),
85
+ url_name="wagtailredirects:edit",
86
+ sort_key="old_path",
87
+ ),
88
+ Column(
89
+ "site",
90
+ label=gettext_lazy("Site"),
91
+ width="25%",
92
+ sort_key="site__site_name",
93
+ ),
94
+ RedirectTargetColumn(
95
+ "redirect_page",
96
+ label=gettext_lazy("To"),
97
+ width="30%",
98
+ ),
99
+ StatusTagColumn(
100
+ "is_permanent",
101
+ accessor="get_is_permanent_display",
102
+ label=gettext_lazy("Type"),
103
+ width="10%",
104
+ sort_key="is_permanent",
105
+ primary=lambda r: r.is_permanent,
106
+ ),
107
+ ]
70
108
 
71
- # Render template
72
- if request.headers.get("x-requested-with") == "XMLHttpRequest":
73
- return TemplateResponse(
74
- request,
75
- "wagtailredirects/results.html",
76
- {
77
- "ordering": ordering,
78
- "redirects": redirects,
79
- "query_string": query_string,
80
- },
81
- )
82
- else:
83
- return TemplateResponse(
84
- request,
85
- "wagtailredirects/index.html",
86
- {
87
- "ordering": ordering,
88
- "redirects": redirects,
89
- "query_string": query_string,
90
- "search_form": SearchForm(
91
- data={"q": query_string} if query_string else None,
92
- ),
93
- "user_can_add": permission_policy.user_has_permission(
94
- request.user, "add"
95
- ),
96
- },
97
- )
109
+ def get_base_queryset(self):
110
+ return super().get_base_queryset().select_related("redirect_page", "site")
111
+
112
+ @cached_property
113
+ def header_more_buttons(self):
114
+ return [
115
+ Button(
116
+ _("Import redirects"),
117
+ url=reverse("wagtailredirects:start_import"),
118
+ icon_name="doc-full-inverse",
119
+ priority=90,
120
+ ),
121
+ Button(
122
+ _("Export redirects"),
123
+ url=reverse("wagtailredirects:report"),
124
+ icon_name="download",
125
+ priority=100,
126
+ ),
127
+ ]
98
128
 
99
129
 
100
130
  @permission_checker.require("change")
@@ -4,7 +4,8 @@ from wagtail.contrib.search_promotions import views
4
4
 
5
5
  app_name = "wagtailsearchpromotions"
6
6
  urlpatterns = [
7
- path("", views.index, name="index"),
7
+ path("", views.IndexView.as_view(), name="index"),
8
+ path("results/", views.IndexView.as_view(results_only=True), name="index_results"),
8
9
  path("add/", views.add, name="add"),
9
10
  path("<int:query_id>/", views.edit, name="edit"),
10
11
  path("<int:query_id>/delete/", views.delete, name="delete"),
@@ -8,7 +8,7 @@ msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2024-01-24 13:51+0000\n"
11
+ "POT-Creation-Date: 2024-04-18 17:28+0100\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -151,7 +151,7 @@ msgid "Recommended search result"
151
151
  msgstr ""
152
152
 
153
153
  #: templates/wagtailsearchpromotions/includes/searchpromotions_formset.html:4
154
- #: templates/wagtailsearchpromotions/index.html:6 wagtail_hooks.py:36
154
+ #: views.py:82 wagtail_hooks.py:36
155
155
  msgid "Promoted search results"
156
156
  msgstr ""
157
157
 
@@ -159,118 +159,95 @@ msgstr ""
159
159
  msgid "Add a recommended result"
160
160
  msgstr ""
161
161
 
162
- #: templates/wagtailsearchpromotions/index.html:3
163
- msgid "Search Terms"
162
+ #: templates/wagtailsearchpromotions/index_results.html:5
163
+ #: templates/wagtailsearchpromotions/results.html:5
164
+ #, python-format
165
+ msgid "Sorry, no promoted results match \"<em>%(query_string)s</em>\""
164
166
  msgstr ""
165
167
 
166
- #: templates/wagtailsearchpromotions/index.html:7
167
- msgid "Add new promoted result"
168
+ #: templates/wagtailsearchpromotions/index_results.html:7
169
+ #: templates/wagtailsearchpromotions/results.html:8
170
+ #, python-format
171
+ msgid ""
172
+ "No promoted results have been created. Why not <a "
173
+ "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
168
174
  msgstr ""
169
175
 
170
- #: templates/wagtailsearchpromotions/list.html:9
171
- msgid "Search term(s)"
176
+ #: templates/wagtailsearchpromotions/index_results.html:9
177
+ msgid "No promoted results have been created."
172
178
  msgstr ""
173
179
 
174
- #: templates/wagtailsearchpromotions/list.html:11
175
- #: templates/wagtailsearchpromotions/list.html:13
176
- msgid "Order by search term alphabetically"
180
+ #: templates/wagtailsearchpromotions/queries/chooser/chooser.html:2
181
+ msgid "Popular search terms"
177
182
  msgstr ""
178
183
 
179
- #: templates/wagtailsearchpromotions/list.html:11
180
- msgid "Order by search term reverse alphabetically"
184
+ #: templates/wagtailsearchpromotions/queries/chooser/chooser.html:11
185
+ msgid "Search"
181
186
  msgstr ""
182
187
 
183
- #: templates/wagtailsearchpromotions/list.html:16
184
- msgid "Promoted results"
188
+ #: templates/wagtailsearchpromotions/queries/chooser/results.html:9
189
+ msgid "Terms"
185
190
  msgstr ""
186
191
 
187
- #: templates/wagtailsearchpromotions/list.html:18
188
192
  #: templates/wagtailsearchpromotions/queries/chooser/results.html:10
193
+ #: views.py:59
189
194
  msgid "Views (past week)"
190
195
  msgstr ""
191
196
 
192
- #: templates/wagtailsearchpromotions/list.html:20
193
- #: templates/wagtailsearchpromotions/list.html:22
194
- msgid "Order by views (lowest first)"
195
- msgstr ""
196
-
197
- #: templates/wagtailsearchpromotions/list.html:20
198
- msgid "Order by views (highest first)"
197
+ #: templates/wagtailsearchpromotions/queries/chooser/results.html:24
198
+ msgid "No results found"
199
199
  msgstr ""
200
200
 
201
- #: templates/wagtailsearchpromotions/list.html:31
202
- msgid "Edit this promotion"
201
+ #: templates/wagtailsearchpromotions/queries/chooser_field.html:7
202
+ msgid "Choose from popular search terms"
203
203
  msgstr ""
204
204
 
205
- #: templates/wagtailsearchpromotions/list.html:39
205
+ #: templates/wagtailsearchpromotions/search_promotion_column.html:8
206
206
  msgid "External link"
207
207
  msgstr ""
208
208
 
209
- #: templates/wagtailsearchpromotions/list.html:44
209
+ #: templates/wagtailsearchpromotions/search_promotion_column.html:13
210
210
  msgid "None"
211
211
  msgstr ""
212
212
 
213
- #: templates/wagtailsearchpromotions/queries/chooser/chooser.html:2
214
- msgid "Popular search terms"
215
- msgstr ""
216
-
217
- #: templates/wagtailsearchpromotions/queries/chooser/chooser.html:11
218
- msgid "Search"
219
- msgstr ""
220
-
221
- #: templates/wagtailsearchpromotions/queries/chooser/results.html:9
222
- msgid "Terms"
223
- msgstr ""
224
-
225
- #: templates/wagtailsearchpromotions/queries/chooser/results.html:24
226
- msgid "No results found"
213
+ #: views.py:33
214
+ msgid "Search Terms"
227
215
  msgstr ""
228
216
 
229
- #: templates/wagtailsearchpromotions/queries/chooser_field.html:7
230
- msgid "Choose from popular search terms"
217
+ #: views.py:43
218
+ msgid "Add new promoted result"
231
219
  msgstr ""
232
220
 
233
- #: templates/wagtailsearchpromotions/results.html:5
234
- #, python-format
235
- msgid "There is %(counter)s match"
236
- msgid_plural "There are %(counter)s matches"
237
- msgstr[0] ""
238
- msgstr[1] ""
239
-
240
- #: templates/wagtailsearchpromotions/results.html:18
241
- #, python-format
242
- msgid "Sorry, no promoted results match \"<em>%(query_string)s</em>\""
221
+ #: views.py:47
222
+ msgid "Search term(s)"
243
223
  msgstr ""
244
224
 
245
- #: templates/wagtailsearchpromotions/results.html:21
246
- #, python-format
247
- msgid ""
248
- "No promoted results have been created. Why not <a "
249
- "href=\"%(wagtailsearchpromotions_add_url)s\">add one</a>?"
225
+ #: views.py:54
226
+ msgid "Promoted results"
250
227
  msgstr ""
251
228
 
252
- #: views.py:144
229
+ #: views.py:145
253
230
  #, python-format
254
231
  msgid "Editor's picks for '%(query)s' created."
255
232
  msgstr ""
256
233
 
257
- #: views.py:148 views.py:208
234
+ #: views.py:149 views.py:209
258
235
  msgid "Edit"
259
236
  msgstr ""
260
237
 
261
- #: views.py:166
238
+ #: views.py:167
262
239
  msgid "Recommendations have not been created due to errors"
263
240
  msgstr ""
264
241
 
265
- #: views.py:204
242
+ #: views.py:205
266
243
  #, python-format
267
244
  msgid "Editor's picks for '%(query)s' updated."
268
245
  msgstr ""
269
246
 
270
- #: views.py:224
247
+ #: views.py:225
271
248
  msgid "Recommendations have not been saved due to errors"
272
249
  msgstr ""
273
250
 
274
- #: views.py:254
251
+ #: views.py:255
275
252
  msgid "Editor's picks deleted."
276
253
  msgstr ""
@@ -5,8 +5,8 @@
5
5
  # Translators:
6
6
  # Adrien <laadrien@gmail.com>, 2014
7
7
  # Bertrand Bordage <bordage.bertrand@gmail.com>, 2015,2018
8
- # fpoulain <fpoulain@metrodore.fr>, 2018
9
- # fpoulain <fpoulain@metrodore.fr>, 2018
8
+ # 69c761fa404d2f74d5a7a2904d9e6f47_dc2dbc9 <f37077798760362881f9d396b6e22ec7_1878>, 2018
9
+ # 69c761fa404d2f74d5a7a2904d9e6f47_dc2dbc9 <f37077798760362881f9d396b6e22ec7_1878>, 2018
10
10
  # Léo <leo@naeka.fr>, 2016
11
11
  # Loic Teixeira, 2020,2022
12
12
  # Loic Teixeira, 2020,2022-2023
@@ -19,8 +19,8 @@ msgstr ""
19
19
  "Content-Type: text/plain; charset=UTF-8\n"
20
20
  "Content-Transfer-Encoding: 8bit\n"
21
21
  "Language: he_IL\n"
22
- "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % "
23
- "1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
22
+ "Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % "
23
+ "1 == 0) ? 1: 2;\n"
24
24
 
25
25
  msgid "Search term(s)/phrase"
26
26
  msgstr "חיפוש מושגים/משפט"
@@ -3,14 +3,14 @@
3
3
  # This file is distributed under the same license as the PACKAGE package.
4
4
  #
5
5
  # Translators:
6
- # Dino Aljević <dino8890@protonmail.com>, 2020,2022-2023
6
+ # Dino Aljević <dino8890@protonmail.com>, 2020,2022-2024
7
7
  msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: Wagtail\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
11
  "POT-Creation-Date: 2024-01-24 13:51+0000\n"
12
12
  "PO-Revision-Date: 2015-08-26 14:04+0000\n"
13
- "Last-Translator: Dino Aljević <dino8890@protonmail.com>, 2020,2022-2023\n"
13
+ "Last-Translator: Dino Aljević <dino8890@protonmail.com>, 2020,2022-2024\n"
14
14
  "Language-Team: Croatian (Croatia) (http://app.transifex.com/torchbox/wagtail/"
15
15
  "language/hr_HR/)\n"
16
16
  "MIME-Version: 1.0\n"
@@ -36,15 +36,37 @@ msgstr ""
36
36
  msgid "Please specify at least one recommendation for this search term."
37
37
  msgstr "Molimo navedite barem jednu preporuku za ovaj pojam."
38
38
 
39
+ msgid "You must enter an external link text if you enter an external link URL."
40
+ msgstr ""
41
+ "Potrebno je unijeti tekst vanjske poveznice ako uneste URL vanjske poveznice."
42
+
43
+ msgid "You must recommend a page OR an external link."
44
+ msgstr "Potrebno je preporučiti stranicu ILI vanjsku poveznicu."
45
+
46
+ msgid "Please only select a page OR enter an external link."
47
+ msgstr "Molimo odaberite samo stranicu ILI vanjsku poveznicu."
48
+
39
49
  msgid "Query Daily Hits"
40
50
  msgstr "Dnevni pregledi za upit"
41
51
 
42
52
  msgid "page"
43
53
  msgstr "stranica"
44
54
 
55
+ msgid "Choose an internal page for this promotion"
56
+ msgstr "Odaberite unutarnju stranicu za promociju"
57
+
58
+ msgid "External link URL"
59
+ msgstr "URL vanjske poveznice"
60
+
61
+ msgid "Alternatively, use an external link for this promotion"
62
+ msgstr "Ili iskoristite vanjsku poveznicu za promociju"
63
+
45
64
  msgid "description"
46
65
  msgstr "opis"
47
66
 
67
+ msgid "Applies to internal page or external link"
68
+ msgstr "Za unutarnju stranicu ili vanjsku poveznicu"
69
+
48
70
  msgid "search promotion"
49
71
  msgstr "Promocija pretraživanja"
50
72
 
@@ -54,6 +76,17 @@ msgstr "Dodaj promociju"
54
76
  msgid "Add search pick"
55
77
  msgstr "Dodaj promovirani rezultat"
56
78
 
79
+ msgid ""
80
+ "<p>Promoted search results are a means of recommending specific pages or "
81
+ "external links that might not organically come high up in search results. E."
82
+ "g recommending your primary donation page to a user searching with the less "
83
+ "common term \"<em>giving</em>\".</p>"
84
+ msgstr ""
85
+ "<p> Promovirani rezultati pretraživanja su način za preporuku određenih "
86
+ "stranica ili vanjskih poveznica koje se možda neće priordno pojaviti pri "
87
+ "vrhu u rezultatima pretraživanja. Npr. preporuka glavne stranice za donacije "
88
+ "korisniku koji pretražuje manje učestao pojam \"<em>darivanje</em>\".</p>"
89
+
57
90
  msgid ""
58
91
  "<p>The \"Search term(s)/phrase\" field below must contain the full and exact "
59
92
  "search for which you wish to provide recommended results, <em>including</em> "
@@ -96,9 +129,15 @@ msgstr "Pomakni gore"
96
129
  msgid "Move down"
97
130
  msgstr "Pomakni dolje"
98
131
 
132
+ msgid "Recommended search result"
133
+ msgstr "Preporučeni rezultat pretraživanja"
134
+
99
135
  msgid "Promoted search results"
100
136
  msgstr "Promovirani rezultati pretraživanja"
101
137
 
138
+ msgid "Add a recommended result"
139
+ msgstr "Dodaj preporučeni rezultat"
140
+
102
141
  msgid "Search Terms"
103
142
  msgstr "Pojmovi za pretraživanje"
104
143
 
@@ -7,7 +7,7 @@
7
7
  # Giacomo Ghizzani <giacomo.ghz@gmail.com>, 2015,2017
8
8
  # giammi <gian-maria.daffre@giammi.org>, 2018
9
9
  # giammi <gian-maria.daffre@giammi.org>, 2018
10
- # Marco Badan <marco.badan@gmail.com>, 2021-2022
10
+ # Marco Badan <marco.badan@gmail.com>, 2021-2022,2024
11
11
  # Sandro Badalamenti <sandro@mailinator.com>, 2019
12
12
  msgid ""
13
13
  msgstr ""
@@ -15,7 +15,7 @@ msgstr ""
15
15
  "Report-Msgid-Bugs-To: \n"
16
16
  "POT-Creation-Date: 2024-01-24 13:51+0000\n"
17
17
  "PO-Revision-Date: 2015-08-26 14:04+0000\n"
18
- "Last-Translator: Sandro Badalamenti <sandro@mailinator.com>, 2019\n"
18
+ "Last-Translator: Marco Badan <marco.badan@gmail.com>, 2021-2022,2024\n"
19
19
  "Language-Team: Italian (http://app.transifex.com/torchbox/wagtail/language/"
20
20
  "it/)\n"
21
21
  "MIME-Version: 1.0\n"
@@ -29,7 +29,7 @@ msgid "Wagtail search promotions"
29
29
  msgstr "Ricerca in evidenza Wagtail"
30
30
 
31
31
  msgid "Search term(s)/phrase"
32
- msgstr "Cerca termine(i)/frase"
32
+ msgstr "Termine/i di ricerca/frase"
33
33
 
34
34
  msgid ""
35
35
  "Enter the full search string to match. An exact match is required for your "
@@ -104,9 +104,15 @@ msgstr "Sposta su"
104
104
  msgid "Move down"
105
105
  msgstr "Sposta giù"
106
106
 
107
+ msgid "Recommended search result"
108
+ msgstr "Risultato di ricerca consigliato"
109
+
107
110
  msgid "Promoted search results"
108
111
  msgstr "Risultati di ricerca in evidenza"
109
112
 
113
+ msgid "Add a recommended result"
114
+ msgstr "Aggiungi un risultato consigliato"
115
+
110
116
  msgid "Search Terms"
111
117
  msgstr "Termini di ricerca"
112
118
 
@@ -1,17 +1,2 @@
1
- {% extends "wagtailadmin/base.html" %}
1
+ {% extends "wagtailadmin/generic/index.html" %}
2
2
  {% load i18n %}
3
- {% block titletag %}{% trans "Search Terms" %}{% endblock %}
4
-
5
- {% block content %}
6
- {% trans "Promoted search results" as sp_title_str %}
7
- {% trans "Add new promoted result" as sp_text_str %}
8
- {% url 'wagtailsearchpromotions:index' as search_results_url %}
9
- {% url "wagtailsearchpromotions:add" as add_link %}
10
- {% include "wagtailadmin/shared/header.html" with title=sp_title_str action_url=add_link icon="pick" action_text=sp_text_str search_url="wagtailsearchpromotions:index" search_results_url=search_results_url search_target="#editorspicks-results" %}
11
-
12
- <div class="nice-padding">
13
- <div id="editorspicks-results" class="redirects">
14
- {% include "wagtailsearchpromotions/results.html" %}
15
- </div>
16
- </div>
17
- {% endblock %}
@@ -0,0 +1,11 @@
1
+ {% extends "wagtailadmin/generic/index_results.html" %}
2
+ {% load i18n %}
3
+ {% block no_results_message %}
4
+ {% if is_searching %}
5
+ <p role="alert">{% blocktrans trimmed %}Sorry, no promoted results match "<em>{{ query_string }}</em>"{% endblocktrans %}</p>
6
+ {% elif add_url %}
7
+ <p>{% blocktrans trimmed with wagtailsearchpromotions_add_url=add_url %}No promoted results have been created. Why not <a href="{{ wagtailsearchpromotions_add_url }}">add one</a>?{% endblocktrans %}</p>
8
+ {% else %}
9
+ <p>{% blocktrans trimmed %}No promoted results have been created.{% endblocktrans %}</p>
10
+ {% endif %}
11
+ {% endblock %}
@@ -1,51 +0,0 @@
1
- {% load i18n wagtailadmin_tags %}
2
- <table class="listing">
3
- <col width="40%" />
4
- <col width="40%"/>
5
- <col />
6
- <thead>
7
- <tr>
8
- <th class="title">
9
- {% trans "Search term(s)" %}
10
- {% if "query_string" in ordering %}
11
- <a href="{% url 'wagtailsearchpromotions:index' %}?ordering={% if '-' not in ordering %}-{% endif %}query_string" class="icon icon-arrow-{% if '-' in ordering %}up{% else %}down{% endif %}-after teal" aria-label="{% if '-' in ordering %}{% trans 'Order by search term alphabetically' %}{% else %}{% trans 'Order by search term reverse alphabetically' %}{% endif %}"></a>
12
- {% else %}
13
- <a href="{% url 'wagtailsearchpromotions:index' %}?ordering=query_string" class="icon icon-arrow-down-after" aria-label="{% trans 'Order by search term alphabetically' %}"></a>
14
- {% endif %}
15
- </th>
16
- <th>{% trans "Promoted results" %}</th>
17
- <th>
18
- {% trans "Views (past week)" %}
19
- {% if "views" in ordering %}
20
- <a href="{% url 'wagtailsearchpromotions:index' %}?ordering={% if '-' not in ordering %}-{% endif %}views" class="icon icon-arrow-{% if '-' in ordering %}up{% else %}down{% endif %}-after teal" aria-label="{% if '-' in ordering %}{% trans 'Order by views (lowest first)' %}{% else %}{% trans 'Order by views (highest first)' %}{% endif %}"></a>
21
- {% else %}
22
- <a href="{% url 'wagtailsearchpromotions:index' %}?ordering=views" class="icon icon-arrow-down-after" aria-label="{% trans 'Order by views (lowest first)' %}"></a>
23
- {% endif %}
24
- </th>
25
- </tr>
26
- </thead>
27
- <tbody>
28
- {% for query in queries %}
29
- <tr>
30
- <td class="title">
31
- <div class="title-wrapper"><a href="{% url 'wagtailsearchpromotions:edit' query.id %}" title="{% trans 'Edit this promotion' %}">{{ query.query_string }}</a></div>
32
- </td>
33
- <td>
34
- {% for searchpick in query.editors_picks.all %}
35
- {% if searchpick.page %}
36
- <a href="{% url 'wagtailadmin_pages:edit' searchpick.page.id %}" class="nolink">{{ searchpick.title }}</a>
37
- {% else %}
38
- <a href="{{ searchpick.external_link_url }}" class="nolink" target="_blank" rel="noreferrer">
39
- {{ searchpick.title }} {% icon classname="initial" name="link-external" title=_("External link") %}
40
- </a>
41
- {% endif %}
42
- {% if not forloop.last %}, {% endif %}
43
- {% empty %}
44
- {% trans "None" %}
45
- {% endfor %}
46
- </td>
47
- <td>{{ query.hits }}</td>
48
- </tr>
49
- {% endfor %}
50
- </tbody>
51
- </table>
@@ -1,23 +1,10 @@
1
+ {% extends "wagtailadmin/generic/index_results.html" %}
1
2
  {% load i18n %}
2
- {% if queries %}
3
- {% if is_searching %}
4
- <h2 role="alert">
5
- {% blocktrans trimmed count counter=queries|length %}
6
- There is {{ counter }} match
7
- {% plural %}
8
- There are {{ counter }} matches
9
- {% endblocktrans %}
10
- </h2>
11
- {% endif %}
12
-
13
- {% include "wagtailsearchpromotions/list.html" %}
14
-
15
- {% include "wagtailadmin/shared/pagination_nav.html" with items=queries linkurl="wagtailsearchpromotions:index" %}
16
- {% else %}
3
+ {% block no_results_message %}
17
4
  {% if is_searching %}
18
5
  <p role="alert">{% blocktrans trimmed %}Sorry, no promoted results match "<em>{{ query_string }}</em>"{% endblocktrans %}</p>
19
6
  {% else %}
20
7
  {% url 'wagtailsearchpromotions:add' as wagtailsearchpromotions_add_url %}
21
8
  <p>{% blocktrans trimmed %}No promoted results have been created. Why not <a href="{{ wagtailsearchpromotions_add_url }}">add one</a>?{% endblocktrans %}</p>
22
9
  {% endif %}
23
- {% endif %}
10
+ {% endblock %}
@@ -0,0 +1,15 @@
1
+ {% load i18n wagtailadmin_tags %}
2
+ <td>
3
+ {% for searchpick in value %}
4
+ {% if searchpick.page %}
5
+ <a href="{% url 'wagtailadmin_pages:edit' searchpick.page.id %}" class="nolink">{{ searchpick.title }}</a>
6
+ {% else %}
7
+ <a href="{{ searchpick.external_link_url }}" class="nolink" target="_blank" rel="noreferrer">
8
+ {{ searchpick.title }} {% icon classname="initial" name="link-external" title=_("External link") %}
9
+ </a>
10
+ {% endif %}
11
+ {% if not forloop.last %}, {% endif %}
12
+ {% empty %}
13
+ {% trans "None" %}
14
+ {% endfor %}
15
+ </td>