wagtail 6.1.3__py3-none-any.whl → 6.2rc1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. wagtail/__init__.py +1 -1
  2. wagtail/actions/copy_for_translation.py +15 -1
  3. wagtail/admin/checks.py +20 -30
  4. wagtail/admin/forms/pages.py +10 -0
  5. wagtail/admin/icons.py +43 -0
  6. wagtail/admin/locale/en/LC_MESSAGES/django.po +405 -295
  7. wagtail/admin/locale/en/LC_MESSAGES/djangojs.po +21 -3
  8. wagtail/admin/locale/sl/LC_MESSAGES/django.mo +0 -0
  9. wagtail/admin/locale/sl/LC_MESSAGES/django.po +30 -0
  10. wagtail/admin/menu.py +2 -2
  11. wagtail/admin/migrations/0004_editingsession.py +57 -0
  12. wagtail/admin/migrations/0005_editingsession_is_editing.py +18 -0
  13. wagtail/admin/models.py +36 -3
  14. wagtail/admin/rich_text/editors/draftail/__init__.py +2 -20
  15. wagtail/admin/static/wagtailadmin/css/core.css +1 -1
  16. wagtail/admin/static/wagtailadmin/js/bulk-actions.js +1 -1
  17. wagtail/admin/static/wagtailadmin/js/chooser-modal.js +1 -1
  18. wagtail/admin/static/wagtailadmin/js/chooser-widget-telepath.js +1 -1
  19. wagtail/admin/static/wagtailadmin/js/chooser-widget.js +1 -1
  20. wagtail/admin/static/wagtailadmin/js/comments.js +1 -1
  21. wagtail/admin/static/wagtailadmin/js/core.js +1 -1
  22. wagtail/admin/static/wagtailadmin/js/date-time-chooser.js +1 -1
  23. wagtail/admin/static/wagtailadmin/js/draftail.js +1 -1
  24. wagtail/admin/static/wagtailadmin/js/expanding-formset.js +1 -1
  25. wagtail/admin/static/wagtailadmin/js/filtered-select.js +1 -1
  26. wagtail/admin/static/wagtailadmin/js/modal-workflow.js +1 -1
  27. wagtail/admin/static/wagtailadmin/js/page-chooser-modal.js +1 -1
  28. wagtail/admin/static/wagtailadmin/js/page-chooser-telepath.js +1 -1
  29. wagtail/admin/static/wagtailadmin/js/page-chooser.js +1 -1
  30. wagtail/admin/static/wagtailadmin/js/preview-panel.js +2 -1
  31. wagtail/admin/static/wagtailadmin/js/preview-panel.js.LICENSE.txt +11 -0
  32. wagtail/admin/static/wagtailadmin/js/privacy-switch.js +1 -1
  33. wagtail/admin/static/wagtailadmin/js/sidebar.js +1 -1
  34. wagtail/admin/static/wagtailadmin/js/task-chooser-modal.js +1 -1
  35. wagtail/admin/static/wagtailadmin/js/task-chooser.js +1 -1
  36. wagtail/admin/static/wagtailadmin/js/telepath/blocks.js +1 -1
  37. wagtail/admin/static/wagtailadmin/js/telepath/widgets.js +1 -1
  38. wagtail/admin/static/wagtailadmin/js/userbar.js +2 -1
  39. wagtail/admin/static/wagtailadmin/js/userbar.js.LICENSE.txt +11 -0
  40. wagtail/admin/static/wagtailadmin/js/vendor.js +1 -1
  41. wagtail/admin/static/wagtailadmin/js/vendor.js.LICENSE.txt +0 -12
  42. wagtail/admin/static/wagtailadmin/js/wagtailadmin.js +1 -1
  43. wagtail/admin/static/wagtailadmin/js/workflow-action.js +1 -1
  44. wagtail/admin/templates/wagtailadmin/collection_privacy/ancestor_privacy.html +2 -6
  45. wagtail/admin/templates/wagtailadmin/generic/index_results.html +1 -17
  46. wagtail/admin/templates/wagtailadmin/generic/listing_results.html +20 -1
  47. wagtail/admin/templates/wagtailadmin/home/workflow_objects_to_moderate.html +2 -11
  48. wagtail/admin/templates/wagtailadmin/page_privacy/ancestor_privacy.html +2 -6
  49. wagtail/admin/templates/wagtailadmin/page_privacy/no_privacy.html +2 -0
  50. wagtail/admin/templates/wagtailadmin/pages/_editor_js.html +0 -1
  51. wagtail/admin/templates/wagtailadmin/pages/action_menu/menu.html +1 -1
  52. wagtail/admin/templates/wagtailadmin/reports/aging_pages_results.html +54 -0
  53. wagtail/admin/templates/wagtailadmin/reports/base_page_report.html +1 -17
  54. wagtail/admin/templates/wagtailadmin/reports/base_page_report_results.html +10 -0
  55. wagtail/admin/templates/wagtailadmin/reports/base_report.html +1 -40
  56. wagtail/admin/templates/wagtailadmin/reports/base_report_results.html +1 -0
  57. wagtail/admin/templates/wagtailadmin/reports/listing/_list_page_report.html +21 -27
  58. wagtail/admin/templates/wagtailadmin/reports/listing/_list_page_types_usage.html +48 -54
  59. wagtail/admin/templates/wagtailadmin/reports/{locked_pages.html → locked_pages_results.html} +3 -3
  60. wagtail/admin/templates/wagtailadmin/reports/page_types_usage_results.html +10 -0
  61. wagtail/admin/templates/wagtailadmin/reports/site_history_results.html +53 -0
  62. wagtail/admin/templates/wagtailadmin/reports/workflow_results.html +74 -0
  63. wagtail/admin/templates/wagtailadmin/reports/workflow_tasks_results.html +56 -0
  64. wagtail/admin/templates/wagtailadmin/shared/_workflow_init.html +8 -44
  65. wagtail/admin/templates/wagtailadmin/shared/avatar.html +11 -1
  66. wagtail/admin/templates/wagtailadmin/shared/dialog/dialog.html +5 -4
  67. wagtail/admin/templates/wagtailadmin/shared/dropdown/dropdown_button.html +2 -1
  68. wagtail/admin/templates/wagtailadmin/shared/editing_sessions/list.html +132 -0
  69. wagtail/admin/templates/wagtailadmin/shared/editing_sessions/module.html +44 -0
  70. wagtail/admin/templates/wagtailadmin/shared/headers/slim_header.html +7 -1
  71. wagtail/admin/templates/wagtailadmin/shared/page_status_tag_new.html +1 -1
  72. wagtail/admin/templates/wagtailadmin/shared/side_panels/checks.html +32 -16
  73. wagtail/admin/templates/wagtailadmin/skeleton.html +1 -1
  74. wagtail/admin/templates/wagtailadmin/userbar/item_accessibility.html +9 -11
  75. wagtail/admin/templatetags/wagtailadmin_tags.py +13 -2
  76. wagtail/admin/tests/formats/en/__init__.py +0 -0
  77. wagtail/admin/tests/formats/en/formats.py +1 -0
  78. wagtail/admin/tests/pages/test_create_page.py +47 -0
  79. wagtail/admin/tests/pages/test_edit_page.py +10 -8
  80. wagtail/admin/tests/pages/test_parent_page_chooser_view.py +45 -1
  81. wagtail/admin/tests/test_checks.py +53 -3
  82. wagtail/admin/tests/test_collections_views.py +62 -1
  83. wagtail/admin/tests/test_edit_handlers.py +37 -0
  84. wagtail/admin/tests/test_editing_sessions.py +1336 -0
  85. wagtail/admin/tests/test_icon_sprite.py +12 -21
  86. wagtail/admin/tests/test_page_chooser.py +309 -7
  87. wagtail/admin/tests/test_privacy.py +82 -0
  88. wagtail/admin/tests/test_reports_views.py +464 -70
  89. wagtail/admin/tests/test_userbar.py +93 -6
  90. wagtail/admin/tests/test_workflows.py +223 -33
  91. wagtail/admin/tests/viewsets/test_model_viewset.py +151 -2
  92. wagtail/admin/ui/editing_sessions.py +57 -0
  93. wagtail/admin/urls/__init__.py +9 -15
  94. wagtail/admin/urls/editing_sessions.py +17 -0
  95. wagtail/admin/urls/reports.py +33 -1
  96. wagtail/admin/userbar.py +77 -20
  97. wagtail/admin/views/chooser.py +49 -22
  98. wagtail/admin/views/collections.py +0 -11
  99. wagtail/admin/views/editing_sessions.py +193 -0
  100. wagtail/admin/views/generic/__init__.py +1 -0
  101. wagtail/admin/views/generic/history.py +9 -3
  102. wagtail/admin/views/generic/mixins.py +44 -3
  103. wagtail/admin/views/generic/models.py +46 -72
  104. wagtail/admin/views/generic/permissions.py +20 -10
  105. wagtail/admin/views/home.py +2 -31
  106. wagtail/admin/views/page_privacy.py +20 -5
  107. wagtail/admin/views/pages/choose_parent.py +62 -0
  108. wagtail/admin/views/pages/edit.py +28 -0
  109. wagtail/admin/views/reports/aging_pages.py +6 -10
  110. wagtail/admin/views/reports/audit_logging.py +13 -42
  111. wagtail/admin/views/reports/base.py +31 -4
  112. wagtail/admin/views/reports/locked_pages.py +5 -8
  113. wagtail/admin/views/reports/page_types_usage.py +6 -10
  114. wagtail/admin/views/reports/workflows.py +36 -12
  115. wagtail/admin/viewsets/base.py +8 -3
  116. wagtail/admin/viewsets/chooser.py +1 -1
  117. wagtail/admin/viewsets/model.py +26 -1
  118. wagtail/admin/wagtail_hooks.py +2 -1
  119. wagtail/api/v2/filters.py +6 -0
  120. wagtail/api/v2/tests/test_documents.py +1 -1
  121. wagtail/api/v2/tests/test_images.py +1 -1
  122. wagtail/api/v2/tests/test_pages.py +11 -1
  123. wagtail/api/v2/utils.py +2 -2
  124. wagtail/blocks/base.py +35 -12
  125. wagtail/blocks/definition_lookup.py +85 -0
  126. wagtail/blocks/list_block.py +12 -0
  127. wagtail/blocks/migrations/migrate_operation.py +2 -0
  128. wagtail/blocks/stream_block.py +19 -0
  129. wagtail/blocks/struct_block.py +19 -0
  130. wagtail/contrib/forms/locale/en/LC_MESSAGES/django.po +1 -1
  131. wagtail/contrib/frontend_cache/backends/__init__.py +5 -0
  132. wagtail/contrib/frontend_cache/backends/azure.py +179 -0
  133. wagtail/contrib/frontend_cache/backends/base.py +28 -0
  134. wagtail/contrib/frontend_cache/backends/cloudflare.py +114 -0
  135. wagtail/contrib/frontend_cache/backends/cloudfront.py +99 -0
  136. wagtail/contrib/frontend_cache/backends/http.py +64 -0
  137. wagtail/contrib/frontend_cache/tests.py +59 -17
  138. wagtail/contrib/frontend_cache/utils.py +26 -8
  139. wagtail/contrib/redirects/filters.py +15 -1
  140. wagtail/contrib/redirects/locale/en/LC_MESSAGES/django.po +37 -72
  141. wagtail/contrib/redirects/models.py +6 -5
  142. wagtail/contrib/redirects/templates/wagtailredirects/edit.html +1 -38
  143. wagtail/contrib/redirects/tests/test_redirects.py +141 -1
  144. wagtail/contrib/redirects/urls.py +1 -2
  145. wagtail/contrib/redirects/views.py +39 -80
  146. wagtail/contrib/routable_page/models.py +6 -4
  147. wagtail/contrib/routable_page/tests.py +11 -0
  148. wagtail/contrib/search_promotions/locale/en/LC_MESSAGES/django.po +1 -1
  149. wagtail/contrib/settings/locale/en/LC_MESSAGES/django.po +4 -4
  150. wagtail/contrib/simple_translation/locale/en/LC_MESSAGES/django.po +5 -1
  151. wagtail/contrib/simple_translation/models.py +2 -1
  152. wagtail/contrib/styleguide/locale/en/LC_MESSAGES/django.po +7 -7
  153. wagtail/contrib/table_block/locale/en/LC_MESSAGES/django.po +1 -1
  154. wagtail/contrib/table_block/static/table_block/js/table.js +1 -1
  155. wagtail/contrib/typed_table_block/blocks.py +19 -0
  156. wagtail/contrib/typed_table_block/locale/en/LC_MESSAGES/django.po +10 -10
  157. wagtail/contrib/typed_table_block/static/typed_table_block/js/typed_table_block.js +1 -1
  158. wagtail/contrib/typed_table_block/tests.py +38 -0
  159. wagtail/coreutils.py +1 -1
  160. wagtail/documents/__init__.py +1 -1
  161. wagtail/documents/locale/en/LC_MESSAGES/django.po +8 -8
  162. wagtail/documents/locale/sl/LC_MESSAGES/django.mo +0 -0
  163. wagtail/documents/locale/sl/LC_MESSAGES/django.po +20 -0
  164. wagtail/documents/models.py +5 -1
  165. wagtail/documents/static/wagtaildocs/js/document-chooser-modal.js +1 -1
  166. wagtail/documents/static/wagtaildocs/js/document-chooser-telepath.js +1 -1
  167. wagtail/documents/static/wagtaildocs/js/document-chooser.js +1 -1
  168. wagtail/documents/tests/test_models.py +5 -1
  169. wagtail/embeds/apps.py +2 -0
  170. wagtail/embeds/embeds.py +12 -14
  171. wagtail/embeds/finders/__init__.py +2 -0
  172. wagtail/embeds/finders/facebook.py +17 -33
  173. wagtail/embeds/finders/instagram.py +19 -16
  174. wagtail/embeds/locale/en/LC_MESSAGES/django.po +1 -1
  175. wagtail/embeds/signal_handlers.py +13 -0
  176. wagtail/embeds/tests/test_embeds.py +7 -7
  177. wagtail/fields.py +58 -14
  178. wagtail/images/__init__.py +1 -1
  179. wagtail/images/locale/en/LC_MESSAGES/django.po +34 -34
  180. wagtail/images/locale/sl/LC_MESSAGES/django.mo +0 -0
  181. wagtail/images/locale/sl/LC_MESSAGES/django.po +20 -0
  182. wagtail/images/models.py +2 -0
  183. wagtail/images/static/wagtailimages/js/image-chooser-modal.js +1 -1
  184. wagtail/images/static/wagtailimages/js/image-chooser-telepath.js +1 -1
  185. wagtail/images/static/wagtailimages/js/image-chooser.js +1 -1
  186. wagtail/images/templates/wagtailimages/images/edit.html +4 -4
  187. wagtail/images/tests/test_admin_views.py +26 -2
  188. wagtail/images/views/chooser.py +6 -1
  189. wagtail/locale/en/LC_MESSAGES/django.po +84 -80
  190. wagtail/locales/locale/en/LC_MESSAGES/django.po +2 -2
  191. wagtail/locales/tests.py +16 -0
  192. wagtail/locales/wagtail_hooks.py +0 -9
  193. wagtail/migrations/0094_alter_page_locale.py +19 -0
  194. wagtail/models/__init__.py +11 -5
  195. wagtail/models/i18n.py +6 -1
  196. wagtail/project_template/requirements.txt +1 -1
  197. wagtail/search/locale/en/LC_MESSAGES/django.po +1 -1
  198. wagtail/signals.py +4 -0
  199. wagtail/sites/locale/en/LC_MESSAGES/django.po +2 -2
  200. wagtail/sites/tests.py +15 -0
  201. wagtail/sites/wagtail_hooks.py +0 -9
  202. wagtail/snippets/locale/en/LC_MESSAGES/django.po +9 -9
  203. wagtail/snippets/permissions.py +5 -3
  204. wagtail/snippets/static/wagtailsnippets/js/snippet-chooser-telepath.js +1 -1
  205. wagtail/snippets/static/wagtailsnippets/js/snippet-chooser.js +1 -1
  206. wagtail/snippets/templates/wagtailsnippets/snippets/action_menu/menu.html +1 -1
  207. wagtail/snippets/tests/test_snippets.py +78 -12
  208. wagtail/snippets/tests/test_viewset.py +22 -0
  209. wagtail/snippets/views/snippets.py +19 -14
  210. wagtail/snippets/wagtail_hooks.py +2 -10
  211. wagtail/templatetags/wagtailcore_tags.py +3 -0
  212. wagtail/test/dummy_external_storage.py +1 -1
  213. wagtail/test/i18n/migrations/0003_alter_clusterabletestmodel_locale_and_more.py +40 -0
  214. wagtail/test/routablepage/models.py +4 -0
  215. wagtail/test/snippets/migrations/0012_alter_translatablesnippet_locale.py +20 -0
  216. wagtail/test/testapp/migrations/0038_sociallink.py +52 -0
  217. wagtail/test/testapp/migrations/0039_alter_eventcategory_locale_and_more.py +45 -0
  218. wagtail/test/testapp/models.py +24 -0
  219. wagtail/test/testapp/views.py +1 -0
  220. wagtail/test/testapp/wagtail_hooks.py +9 -0
  221. wagtail/test/urls_multilang.py +6 -1
  222. wagtail/test/urls_multilang_non_root.py +11 -0
  223. wagtail/tests/streamfield_migrations/test_migrations.py +53 -12
  224. wagtail/tests/test_audit_log.py +72 -2
  225. wagtail/tests/test_blocks.py +103 -0
  226. wagtail/tests/test_signals.py +49 -2
  227. wagtail/tests/test_streamfield.py +153 -0
  228. wagtail/tests/test_utils.py +14 -0
  229. wagtail/tests/tests.py +5 -0
  230. wagtail/users/apps.py +1 -0
  231. wagtail/users/forms.py +7 -0
  232. wagtail/users/locale/en/LC_MESSAGES/django.po +55 -50
  233. wagtail/users/models.py +1 -0
  234. wagtail/users/templates/wagtailusers/groups/includes/formatted_permissions.html +3 -2
  235. wagtail/users/templatetags/wagtailusers_tags.py +9 -0
  236. wagtail/users/tests/__init__.py +7 -1
  237. wagtail/users/tests/test_admin_views.py +117 -32
  238. wagtail/users/views/groups.py +4 -0
  239. wagtail/users/views/users.py +58 -14
  240. wagtail/users/wagtail_hooks.py +7 -123
  241. wagtail/utils/utils.py +1 -0
  242. wagtail/utils/version.py +5 -2
  243. {wagtail-6.1.3.dist-info → wagtail-6.2rc1.dist-info}/METADATA +3 -3
  244. {wagtail-6.1.3.dist-info → wagtail-6.2rc1.dist-info}/RECORD +248 -222
  245. wagtail/admin/templates/wagtailadmin/reports/aging_pages.html +0 -58
  246. wagtail/admin/templates/wagtailadmin/reports/page_types_usage.html +0 -18
  247. wagtail/admin/templates/wagtailadmin/reports/site_history.html +0 -57
  248. wagtail/admin/templates/wagtailadmin/reports/workflow.html +0 -81
  249. wagtail/admin/templates/wagtailadmin/reports/workflow_tasks.html +0 -63
  250. wagtail/contrib/frontend_cache/backends.py +0 -400
  251. wagtail/contrib/redirects/templates/wagtailredirects/list.html +0 -43
  252. wagtail/contrib/redirects/templates/wagtailredirects/reports/redirects_report.html +0 -14
  253. wagtail/contrib/redirects/tests/test_reports_view.py +0 -82
  254. {wagtail-6.1.3.dist-info → wagtail-6.2rc1.dist-info}/LICENSE +0 -0
  255. {wagtail-6.1.3.dist-info → wagtail-6.2rc1.dist-info}/WHEEL +0 -0
  256. {wagtail-6.1.3.dist-info → wagtail-6.2rc1.dist-info}/entry_points.txt +0 -0
  257. {wagtail-6.1.3.dist-info → wagtail-6.2rc1.dist-info}/top_level.txt +0 -0
@@ -8,7 +8,7 @@ msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2024-04-18 17:28+0100\n"
11
+ "POT-Creation-Date: 2024-07-19 16:26+0100\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -144,7 +144,7 @@ msgstr ""
144
144
  msgid "Add/edit images you own"
145
145
  msgstr ""
146
146
 
147
- #: forms.py:202 views/images.py:353
147
+ #: forms.py:202 views/images.py:357
148
148
  msgid "Edit"
149
149
  msgstr ""
150
150
 
@@ -160,39 +160,39 @@ msgstr ""
160
160
  msgid "Select images in choosers"
161
161
  msgstr ""
162
162
 
163
- #: models.py:254
163
+ #: models.py:257
164
164
  msgid "title"
165
165
  msgstr ""
166
166
 
167
- #: models.py:257
167
+ #: models.py:260
168
168
  msgid "file"
169
169
  msgstr ""
170
170
 
171
- #: models.py:262
171
+ #: models.py:265
172
172
  msgid "width"
173
173
  msgstr ""
174
174
 
175
- #: models.py:263
175
+ #: models.py:266
176
176
  msgid "height"
177
177
  msgstr ""
178
178
 
179
- #: models.py:265
179
+ #: models.py:268
180
180
  msgid "created at"
181
181
  msgstr ""
182
182
 
183
- #: models.py:269
183
+ #: models.py:272
184
184
  msgid "uploaded by user"
185
185
  msgstr ""
186
186
 
187
- #: models.py:277
187
+ #: models.py:280
188
188
  msgid "tags"
189
189
  msgstr ""
190
190
 
191
- #: models.py:853
191
+ #: models.py:856
192
192
  msgid "image"
193
193
  msgstr ""
194
194
 
195
- #: models.py:854
195
+ #: models.py:857
196
196
  msgid "images"
197
197
  msgstr ""
198
198
 
@@ -266,7 +266,7 @@ msgid "Delete images"
266
266
  msgstr ""
267
267
 
268
268
  #: templates/wagtailimages/bulk_actions/confirm_bulk_delete.html:13
269
- #: views/images.py:326
269
+ #: views/images.py:330
270
270
  msgid "Are you sure you want to delete this image?"
271
271
  msgid_plural "Are you sure you want to delete these images?"
272
272
  msgstr[0] ""
@@ -368,7 +368,7 @@ msgstr[1] ""
368
368
  msgid "Change image file:"
369
369
  msgstr ""
370
370
 
371
- #: templates/wagtailimages/images/add.html:4 views/images.py:62
371
+ #: templates/wagtailimages/images/add.html:4 views/images.py:63
372
372
  msgid "Add an image"
373
373
  msgstr ""
374
374
 
@@ -400,7 +400,7 @@ msgid "Editing"
400
400
  msgstr ""
401
401
 
402
402
  #: templates/wagtailimages/images/edit.html:43
403
- #: templates/wagtailimages/images/edit.html:99 views/images.py:314
403
+ #: templates/wagtailimages/images/edit.html:99 views/images.py:318
404
404
  msgid "Delete image"
405
405
  msgstr ""
406
406
 
@@ -595,7 +595,7 @@ msgid_plural "%(num_parent_objects)d images have been added to %(collection)s"
595
595
  msgstr[0] ""
596
596
  msgstr[1] ""
597
597
 
598
- #: views/bulk_actions/delete.py:8 views/images.py:182
598
+ #: views/bulk_actions/delete.py:8 views/images.py:183
599
599
  msgid "Delete"
600
600
  msgstr ""
601
601
 
@@ -610,84 +610,84 @@ msgid_plural "%(num_parent_objects)d images have been deleted"
610
610
  msgstr[0] ""
611
611
  msgstr[1] ""
612
612
 
613
- #: views/chooser.py:51 views/chooser.py:313
613
+ #: views/chooser.py:51 views/chooser.py:318
614
614
  msgid "Upload"
615
615
  msgstr ""
616
616
 
617
- #: views/chooser.py:52 views/chooser.py:314
617
+ #: views/chooser.py:52 views/chooser.py:319
618
618
  msgid "Uploading…"
619
619
  msgstr ""
620
620
 
621
- #: views/chooser.py:312 widgets.py:13
621
+ #: views/chooser.py:317 widgets.py:13
622
622
  msgid "Choose an image"
623
623
  msgstr ""
624
624
 
625
- #: views/chooser.py:315
625
+ #: views/chooser.py:320
626
626
  msgid "Choose another image"
627
627
  msgstr ""
628
628
 
629
- #: views/chooser.py:316 widgets.py:15
629
+ #: views/chooser.py:321 widgets.py:15
630
630
  msgid "Edit this image"
631
631
  msgstr ""
632
632
 
633
- #: views/images.py:46
633
+ #: views/images.py:47
634
634
  msgid "Newest"
635
635
  msgstr ""
636
636
 
637
- #: views/images.py:47
637
+ #: views/images.py:48
638
638
  msgid "Oldest"
639
639
  msgstr ""
640
640
 
641
- #: views/images.py:48
641
+ #: views/images.py:49
642
642
  msgid "Title: (A -> Z)"
643
643
  msgstr ""
644
644
 
645
- #: views/images.py:49
645
+ #: views/images.py:50
646
646
  msgid "Title: (Z -> A)"
647
647
  msgstr ""
648
648
 
649
- #: views/images.py:50
649
+ #: views/images.py:51
650
650
  msgid "File size: (low to high)"
651
651
  msgstr ""
652
652
 
653
- #: views/images.py:51
653
+ #: views/images.py:52
654
654
  msgid "File size: (high to low)"
655
655
  msgstr ""
656
656
 
657
- #: views/images.py:61 wagtail_hooks.py:52 wagtail_hooks.py:160
657
+ #: views/images.py:62 wagtail_hooks.py:52 wagtail_hooks.py:160
658
658
  msgid "Images"
659
659
  msgstr ""
660
660
 
661
- #: views/images.py:155
661
+ #: views/images.py:156
662
662
  #, python-format
663
663
  msgid "Image '%(image_title)s' updated."
664
664
  msgstr ""
665
665
 
666
- #: views/images.py:156
666
+ #: views/images.py:157
667
667
  msgid "Edit again"
668
668
  msgstr ""
669
669
 
670
- #: views/images.py:160
670
+ #: views/images.py:161
671
671
  msgid "The image could not be saved due to errors."
672
672
  msgstr ""
673
673
 
674
- #: views/images.py:177
674
+ #: views/images.py:178
675
675
  msgid ""
676
676
  "The source image file could not be found. Please change the source or delete "
677
677
  "the image."
678
678
  msgstr ""
679
679
 
680
- #: views/images.py:332
680
+ #: views/images.py:336
681
681
  #, python-format
682
682
  msgid "Image '%(image_title)s' deleted."
683
683
  msgstr ""
684
684
 
685
- #: views/images.py:350
685
+ #: views/images.py:354
686
686
  #, python-format
687
687
  msgid "Image '%(image_title)s' added."
688
688
  msgstr ""
689
689
 
690
- #: views/images.py:359
690
+ #: views/images.py:363
691
691
  msgid "The image could not be created due to errors."
692
692
  msgstr ""
693
693
 
@@ -323,6 +323,26 @@ msgstr "Izberite obliko zapisa"
323
323
  msgid "Insert image"
324
324
  msgstr "Vstavi sliko"
325
325
 
326
+ #, python-format
327
+ msgid ""
328
+ "<span>%(total)s</span> Image <span class=\"w-sr-only\">created in "
329
+ "%(site_name)s</span>"
330
+ msgid_plural ""
331
+ "<span>%(total)s</span> Images <span class=\"w-sr-only\">created in "
332
+ "%(site_name)s</span>"
333
+ msgstr[0] ""
334
+ "<span>%(total)s</span> Slika <span class=\"w-sr-only\">ustvarjena na "
335
+ "%(site_name)s</span>"
336
+ msgstr[1] ""
337
+ "<span>%(total)s</span> sliki<span class=\"w-sr-only\">ustvarjeni na "
338
+ "%(site_name)s</span>"
339
+ msgstr[2] ""
340
+ "<span>%(total)s</span> Slike <span class=\"w-sr-only\">ustvarjene na "
341
+ "%(site_name)s</span>"
342
+ msgstr[3] ""
343
+ "<span>%(total)s</span> Slik <span class=\"w-sr-only\">ustvarjenih na "
344
+ "%(site_name)s</span>"
345
+
326
346
  msgid "Change image file:"
327
347
  msgstr "Spremeni datoteko slike:"
328
348
 
wagtail/images/models.py CHANGED
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import concurrent.futures
2
4
  import hashlib
3
5
  import itertools
@@ -1 +1 @@
1
- (()=>{"use strict";var e,o={3188:(e,o,t)=>{var r=t(1669),a=t.n(r),i=t(2614);class n extends i.C4{ajaxifyLinks(e,o){super.ajaxifyLinks(e,o),a()("a.upload-one-now").on("click",(e=>{const o=a()("#id_collection_id").val();o&&a()("#id_image-chooser-upload-collection").val(o),e.preventDefault()}))}onLoadChooseStep(e){super.onLoadChooseStep(e),a()("a.suggested-tag").on("click",(e=>(a()("#id_q").val(""),this.searchController.search({tag:a()(e.currentTarget).text(),collection_id:a()("#id_collection_id").val()}),!1)))}onLoadDuplicateFoundStep(e,o){a()("#tab-upload",e.body).replaceWith(o.htmlFragment),a()(".use-new-image",e.body).on("click",(o=>(e.loadUrl(o.currentTarget.href),!1))),a()(".use-existing-image",e.body).on("click",(o=>{var t=a()(o.currentTarget).closest("form"),r=a()('input[name="csrfmiddlewaretoken"]',t).val();return e.postForm(o.currentTarget.href,{csrfmiddlewaretoken:r}),!1}))}onLoadSelectFormatStep(e){var o=document.querySelector("#id_image-chooser-insertion-image_is_decorative"),t=document.querySelector("#id_image-chooser-insertion-alt_text"),r=document.querySelector('[for="id_image-chooser-insertion-alt_text"]');function i(){t.setAttribute("disabled","disabled"),r.classList.remove("required")}function n(){t.removeAttribute("disabled"),r.classList.add("required")}o.checked?i():n(),o.addEventListener("change",(e=>{e.target.checked?i():n()})),a()("form",e.body).on("submit",(o=>(a().post(o.currentTarget.action,a()(o.currentTarget).serialize(),e.loadResponseText,"text"),!1)))}getOnLoadHandlers(){const e=super.getOnLoadHandlers();return e.duplicate_found=(e,o)=>{this.onLoadDuplicateFoundStep(e,o)},e.select_format=(e,o)=>{this.onLoadSelectFormatStep(e,o)},e}}window.IMAGE_CHOOSER_MODAL_ONLOAD_HANDLERS=new n({creationFormFileFieldSelector:"#id_image-chooser-upload-file",creationFormTitleFieldSelector:"#id_image-chooser-upload-title",creationFormEventName:"wagtail:images-upload",creationFormTabSelector:"#tab-upload"}).getOnLoadHandlers();class l extends i.ZZ{onloadHandlers=window.IMAGE_CHOOSER_MODAL_ONLOAD_HANDLERS}window.ImageChooserModal=l},1669:e=>{e.exports=jQuery}},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var i=t[e]={id:e,loaded:!1,exports:{}};return o[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=o,e=[],r.O=(o,t,a,i)=>{if(!t){var n=1/0;for(s=0;s<e.length;s++){for(var[t,a,i]=e[s],l=!0,d=0;d<t.length;d++)(!1&i||n>=i)&&Object.keys(r.O).every((e=>r.O[e](t[d])))?t.splice(d--,1):(l=!1,i<n&&(n=i));if(l){e.splice(s--,1);var c=a();void 0!==c&&(o=c)}}return o}i=i||0;for(var s=e.length;s>0&&e[s-1][2]>i;s--)e[s]=e[s-1];e[s]=[t,a,i]},r.n=e=>{var o=e&&e.__esModule?()=>e.default:()=>e;return r.d(o,{a:o}),o},r.d=(e,o)=>{for(var t in o)r.o(o,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=678,(()=>{var e={678:0};r.O.j=o=>0===e[o];var o=(o,t)=>{var a,i,[n,l,d]=t,c=0;if(n.some((o=>0!==e[o]))){for(a in l)r.o(l,a)&&(r.m[a]=l[a]);if(d)var s=d(r)}for(o&&o(t);c<n.length;c++)i=n[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(s)},t=globalThis.webpackChunkwagtail=globalThis.webpackChunkwagtail||[];t.forEach(o.bind(null,0)),t.push=o.bind(null,t.push.bind(t))})();var a=r.O(void 0,[321],(()=>r(3188)));a=r.O(a)})();
1
+ (()=>{"use strict";var e,o={3188:(e,o,t)=>{var r=t(1669),a=t.n(r),i=t(2614);class n extends i.C4{ajaxifyLinks(e,o){super.ajaxifyLinks(e,o),a()("a.upload-one-now").on("click",(e=>{const o=a()("#id_collection_id").val();o&&a()("#id_image-chooser-upload-collection").val(o),e.preventDefault()}))}onLoadChooseStep(e){super.onLoadChooseStep(e),a()("a.suggested-tag").on("click",(e=>(a()("#id_q").val(""),this.searchController.search({tag:a()(e.currentTarget).text(),collection_id:a()("#id_collection_id").val()}),!1)))}onLoadDuplicateFoundStep(e,o){a()("#tab-upload",e.body).replaceWith(o.htmlFragment),a()(".use-new-image",e.body).on("click",(o=>(e.loadUrl(o.currentTarget.href),!1))),a()(".use-existing-image",e.body).on("click",(o=>{var t=a()(o.currentTarget).closest("form"),r=a()('input[name="csrfmiddlewaretoken"]',t).val();return e.postForm(o.currentTarget.href,{csrfmiddlewaretoken:r}),!1}))}onLoadSelectFormatStep(e){var o=document.querySelector("#id_image-chooser-insertion-image_is_decorative"),t=document.querySelector("#id_image-chooser-insertion-alt_text"),r=document.querySelector('[for="id_image-chooser-insertion-alt_text"]');function i(){t.setAttribute("disabled","disabled"),r.classList.remove("required")}function n(){t.removeAttribute("disabled"),r.classList.add("required")}o.checked?i():n(),o.addEventListener("change",(e=>{e.target.checked?i():n()})),a()("form",e.body).on("submit",(o=>(a().post(o.currentTarget.action,a()(o.currentTarget).serialize(),e.loadResponseText,"text"),!1)))}getOnLoadHandlers(){const e=super.getOnLoadHandlers();return e.duplicate_found=(e,o)=>{this.onLoadDuplicateFoundStep(e,o)},e.select_format=(e,o)=>{this.onLoadSelectFormatStep(e,o)},e}}window.IMAGE_CHOOSER_MODAL_ONLOAD_HANDLERS=new n({creationFormFileFieldSelector:"#id_image-chooser-upload-file",creationFormTitleFieldSelector:"#id_image-chooser-upload-title",creationFormEventName:"wagtail:images-upload",creationFormTabSelector:"#tab-upload"}).getOnLoadHandlers();class l extends i.ZZ{onloadHandlers=window.IMAGE_CHOOSER_MODAL_ONLOAD_HANDLERS}window.ImageChooserModal=l},1669:e=>{e.exports=jQuery}},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var i=t[e]={exports:{}};return o[e](i,i.exports,r),i.exports}r.m=o,e=[],r.O=(o,t,a,i)=>{if(!t){var n=1/0;for(s=0;s<e.length;s++){for(var[t,a,i]=e[s],l=!0,d=0;d<t.length;d++)(!1&i||n>=i)&&Object.keys(r.O).every((e=>r.O[e](t[d])))?t.splice(d--,1):(l=!1,i<n&&(n=i));if(l){e.splice(s--,1);var c=a();void 0!==c&&(o=c)}}return o}i=i||0;for(var s=e.length;s>0&&e[s-1][2]>i;s--)e[s]=e[s-1];e[s]=[t,a,i]},r.n=e=>{var o=e&&e.__esModule?()=>e.default:()=>e;return r.d(o,{a:o}),o},r.d=(e,o)=>{for(var t in o)r.o(o,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.j=678,(()=>{var e={678:0};r.O.j=o=>0===e[o];var o=(o,t)=>{var a,i,[n,l,d]=t,c=0;if(n.some((o=>0!==e[o]))){for(a in l)r.o(l,a)&&(r.m[a]=l[a]);if(d)var s=d(r)}for(o&&o(t);c<n.length;c++)i=n[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(s)},t=globalThis.webpackChunkwagtail=globalThis.webpackChunkwagtail||[];t.forEach(o.bind(null,0)),t.push=o.bind(null,t.push.bind(t))})();var a=r.O(void 0,[321],(()=>r(3188)));a=r.O(a)})();
@@ -1 +1 @@
1
- (()=>{"use strict";var e,t={7199:(e,t,r)=>{var i=r(9465);class o extends i.y{chooserModalClass=ImageChooserModal;initHTMLElements(e){super.initHTMLElements(e),this.previewImage=this.chooserElement.querySelector("[data-chooser-image]")}getStateFromHTML(){const e=super.getStateFromHTML();return e&&(e.preview={url:this.previewImage.getAttribute("src"),width:this.previewImage.getAttribute("width"),height:this.previewImage.getAttribute("height")}),e}renderState(e){super.renderState(e),this.previewImage.setAttribute("src",e.preview.url),this.previewImage.setAttribute("width",e.preview.width)}}class a extends i._{widgetClass=o;chooserModalClass=ImageChooserModal}window.telepath.register("wagtail.images.widgets.ImageChooser",a)},1669:e=>{e.exports=jQuery}},r={};function i(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=t,e=[],i.O=(t,r,o,a)=>{if(!r){var s=1/0;for(h=0;h<e.length;h++){for(var[r,o,a]=e[h],n=!0,l=0;l<r.length;l++)(!1&a||s>=a)&&Object.keys(i.O).every((e=>i.O[e](r[l])))?r.splice(l--,1):(n=!1,a<s&&(s=a));if(n){e.splice(h--,1);var d=o();void 0!==d&&(t=d)}}return t}a=a||0;for(var h=e.length;h>0&&e[h-1][2]>a;h--)e[h]=e[h-1];e[h]=[r,o,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=246,(()=>{var e={246:0};i.O.j=t=>0===e[t];var t=(t,r)=>{var o,a,[s,n,l]=r,d=0;if(s.some((t=>0!==e[t]))){for(o in n)i.o(n,o)&&(i.m[o]=n[o]);if(l)var h=l(i)}for(t&&t(r);d<s.length;d++)a=s[d],i.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return i.O(h)},r=globalThis.webpackChunkwagtail=globalThis.webpackChunkwagtail||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var o=i.O(void 0,[321],(()=>i(7199)));o=i.O(o)})();
1
+ (()=>{"use strict";var e,t={7199:(e,t,r)=>{var i=r(9465);class o extends i.y{chooserModalClass=ImageChooserModal;initHTMLElements(e){super.initHTMLElements(e),this.previewImage=this.chooserElement.querySelector("[data-chooser-image]")}getStateFromHTML(){const e=super.getStateFromHTML();return e&&(e.preview={url:this.previewImage.getAttribute("src"),width:this.previewImage.getAttribute("width"),height:this.previewImage.getAttribute("height")}),e}renderState(e){super.renderState(e),this.previewImage.setAttribute("src",e.preview.url),this.previewImage.setAttribute("width",e.preview.width)}}class a extends i._{widgetClass=o;chooserModalClass=ImageChooserModal}window.telepath.register("wagtail.images.widgets.ImageChooser",a)},1669:e=>{e.exports=jQuery}},r={};function i(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,i),a.exports}i.m=t,e=[],i.O=(t,r,o,a)=>{if(!r){var s=1/0;for(u=0;u<e.length;u++){for(var[r,o,a]=e[u],n=!0,l=0;l<r.length;l++)(!1&a||s>=a)&&Object.keys(i.O).every((e=>i.O[e](r[l])))?r.splice(l--,1):(n=!1,a<s&&(s=a));if(n){e.splice(u--,1);var h=o();void 0!==h&&(t=h)}}return t}a=a||0;for(var u=e.length;u>0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[r,o,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.j=246,(()=>{var e={246:0};i.O.j=t=>0===e[t];var t=(t,r)=>{var o,a,[s,n,l]=r,h=0;if(s.some((t=>0!==e[t]))){for(o in n)i.o(n,o)&&(i.m[o]=n[o]);if(l)var u=l(i)}for(t&&t(r);h<s.length;h++)a=s[h],i.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return i.O(u)},r=globalThis.webpackChunkwagtail=globalThis.webpackChunkwagtail||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var o=i.O(void 0,[321],(()=>i(7199)));o=i.O(o)})();
@@ -1 +1 @@
1
- (()=>{"use strict";var e,t={4023:(e,t,r)=>{var i=r(9465);class o extends i.y{chooserModalClass=ImageChooserModal;initHTMLElements(e){super.initHTMLElements(e),this.previewImage=this.chooserElement.querySelector("[data-chooser-image]")}getStateFromHTML(){const e=super.getStateFromHTML();return e&&(e.preview={url:this.previewImage.getAttribute("src"),width:this.previewImage.getAttribute("width"),height:this.previewImage.getAttribute("height")}),e}renderState(e){super.renderState(e),this.previewImage.setAttribute("src",e.preview.url),this.previewImage.setAttribute("width",e.preview.width)}}window.ImageChooser=o},1669:e=>{e.exports=jQuery}},r={};function i(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=t,e=[],i.O=(t,r,o,a)=>{if(!r){var n=1/0;for(u=0;u<e.length;u++){for(var[r,o,a]=e[u],s=!0,l=0;l<r.length;l++)(!1&a||n>=a)&&Object.keys(i.O).every((e=>i.O[e](r[l])))?r.splice(l--,1):(s=!1,a<n&&(n=a));if(s){e.splice(u--,1);var h=o();void 0!==h&&(t=h)}}return t}a=a||0;for(var u=e.length;u>0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[r,o,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=306,(()=>{var e={306:0};i.O.j=t=>0===e[t];var t=(t,r)=>{var o,a,[n,s,l]=r,h=0;if(n.some((t=>0!==e[t]))){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(l)var u=l(i)}for(t&&t(r);h<n.length;h++)a=n[h],i.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return i.O(u)},r=globalThis.webpackChunkwagtail=globalThis.webpackChunkwagtail||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var o=i.O(void 0,[321],(()=>i(4023)));o=i.O(o)})();
1
+ (()=>{"use strict";var e,t={4023:(e,t,r)=>{var i=r(9465);class o extends i.y{chooserModalClass=ImageChooserModal;initHTMLElements(e){super.initHTMLElements(e),this.previewImage=this.chooserElement.querySelector("[data-chooser-image]")}getStateFromHTML(){const e=super.getStateFromHTML();return e&&(e.preview={url:this.previewImage.getAttribute("src"),width:this.previewImage.getAttribute("width"),height:this.previewImage.getAttribute("height")}),e}renderState(e){super.renderState(e),this.previewImage.setAttribute("src",e.preview.url),this.previewImage.setAttribute("width",e.preview.width)}}window.ImageChooser=o},1669:e=>{e.exports=jQuery}},r={};function i(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,i),a.exports}i.m=t,e=[],i.O=(t,r,o,a)=>{if(!r){var n=1/0;for(h=0;h<e.length;h++){for(var[r,o,a]=e[h],s=!0,l=0;l<r.length;l++)(!1&a||n>=a)&&Object.keys(i.O).every((e=>i.O[e](r[l])))?r.splice(l--,1):(s=!1,a<n&&(n=a));if(s){e.splice(h--,1);var u=o();void 0!==u&&(t=u)}}return t}a=a||0;for(var h=e.length;h>0&&e[h-1][2]>a;h--)e[h]=e[h-1];e[h]=[r,o,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.j=306,(()=>{var e={306:0};i.O.j=t=>0===e[t];var t=(t,r)=>{var o,a,[n,s,l]=r,u=0;if(n.some((t=>0!==e[t]))){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(l)var h=l(i)}for(t&&t(r);u<n.length;u++)a=n[u],i.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return i.O(h)},r=globalThis.webpackChunkwagtail=globalThis.webpackChunkwagtail||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var o=i.O(void 0,[321],(()=>i(4023)));o=i.O(o)})();
@@ -51,10 +51,10 @@
51
51
  <div
52
52
  class="focal-point-chooser"
53
53
  style="max-width: {{ rendition.width }}px; max-height: {{ rendition.height }}px;"
54
- data-focal-point-x="{{ image.focal_point_x|default_if_none:'' }}"
55
- data-focal-point-y="{{ image.focal_point_y|default_if_none:'' }}"
56
- data-focal-point-width="{{ image.focal_point_width|default_if_none:'' }}"
57
- data-focal-point-height="{{ image.focal_point_height|default_if_none:'' }}"
54
+ data-focal-point-x="{{ image.focal_point_x|default_if_none:''|unlocalize }}"
55
+ data-focal-point-y="{{ image.focal_point_y|default_if_none:''|unlocalize }}"
56
+ data-focal-point-width="{{ image.focal_point_width|default_if_none:''|unlocalize }}"
57
+ data-focal-point-height="{{ image.focal_point_height|default_if_none:''|unlocalize }}"
58
58
  data-focal-input-label="{% trans 'Image focal point' %}"
59
59
  >
60
60
  <img {{ rendition.attrs }} decoding="async" data-original-width="{{ image.width|unlocalize }}" data-original-height="{{ image.height|unlocalize }}" class="show-transparency">
@@ -1264,12 +1264,20 @@ class TestImageEditView(WagtailTestUtils, TestCase):
1264
1264
  def test_no_thousand_separators_in_focal_point_editor(self):
1265
1265
  large_image = Image.objects.create(
1266
1266
  title="Test image",
1267
- file=get_test_image_file(size=(1024, 768)),
1267
+ file=get_test_image_file(size=(3840, 2160)),
1268
+ focal_point_x=2048,
1269
+ focal_point_y=1001,
1270
+ focal_point_width=1009,
1271
+ focal_point_height=1002,
1268
1272
  )
1269
1273
  response = self.client.get(
1270
1274
  reverse("wagtailimages:edit", args=(large_image.id,))
1271
1275
  )
1272
- self.assertContains(response, 'data-original-width="1024"')
1276
+ self.assertContains(response, 'data-original-width="3840"')
1277
+ self.assertContains(response, 'data-focal-point-x="2048"')
1278
+ self.assertContains(response, 'data-focal-point-y="1001"')
1279
+ self.assertContains(response, 'data-focal-point-width="1009"')
1280
+ self.assertContains(response, 'data-focal-point-height="1002"')
1273
1281
 
1274
1282
  @override_settings(WAGTAILIMAGES_IMAGE_MODEL="tests.CustomImage")
1275
1283
  def test_unique_together_validation_error(self):
@@ -1684,6 +1692,22 @@ class TestImageChooserView(WagtailTestUtils, TestCase):
1684
1692
  response = self.get({"p": 9999})
1685
1693
  self.assertEqual(response.status_code, 404)
1686
1694
 
1695
+ @override_settings(WAGTAILIMAGES_CHOOSER_PAGE_SIZE=4)
1696
+ def test_chooser_page_size(self):
1697
+ images = [
1698
+ Image(
1699
+ title="Test image %i" % i,
1700
+ file=get_test_image_file(size=(1, 1)),
1701
+ )
1702
+ for i in range(1, 12)
1703
+ ]
1704
+ Image.objects.bulk_create(images)
1705
+
1706
+ response = self.get()
1707
+
1708
+ self.assertContains(response, "Page 1 of 3")
1709
+ self.assertEqual(response.status_code, 200)
1710
+
1687
1711
  def test_filter_by_tag(self):
1688
1712
  for i in range(0, 10):
1689
1713
  image = Image.objects.create(
@@ -72,10 +72,15 @@ class ImageCreationFormMixin(CreationFormMixin):
72
72
  class BaseImageChooseView(BaseChooseView):
73
73
  template_name = "wagtailimages/chooser/chooser.html"
74
74
  results_template_name = "wagtailimages/chooser/results.html"
75
- per_page = getattr(settings, "WAGTAILIMAGES_CHOOSER_PAGE_SIZE", 12)
76
75
  ordering = "-created_at"
77
76
  construct_queryset_hook_name = "construct_image_chooser_queryset"
78
77
 
78
+ @property
79
+ def per_page(self):
80
+ # Make per_page into a property so that we can read back WAGTAILIMAGES_CHOOSER_PAGE_SIZE
81
+ # at runtime.
82
+ return getattr(settings, "WAGTAILIMAGES_CHOOSER_PAGE_SIZE", 20)
83
+
79
84
  def get_object_list(self):
80
85
  return (
81
86
  permission_policy.instances_user_has_any_permission_for(