wagtail 7.2__py3-none-any.whl → 7.2.1__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 (383) hide show
  1. wagtail/__init__.py +1 -1
  2. wagtail/admin/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  3. wagtail/admin/locale/is_IS/LC_MESSAGES/django.po +152 -2
  4. wagtail/admin/locale/is_IS/LC_MESSAGES/djangojs.mo +0 -0
  5. wagtail/admin/locale/is_IS/LC_MESSAGES/djangojs.po +8 -2
  6. wagtail/admin/static/wagtailadmin/js/core.js +1 -1
  7. wagtail/admin/templatetags/wagtailadmin_tags.py +13 -1
  8. wagtail/admin/tests/pages/test_preview.py +30 -0
  9. wagtail/contrib/redirects/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  10. wagtail/contrib/redirects/locale/is_IS/LC_MESSAGES/django.po +15 -2
  11. wagtail/contrib/search_promotions/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  12. wagtail/contrib/search_promotions/locale/is_IS/LC_MESSAGES/django.po +9 -2
  13. wagtail/contrib/settings/locale/ar/LC_MESSAGES/django.po +1 -1
  14. wagtail/contrib/settings/locale/az_AZ/LC_MESSAGES/django.po +1 -1
  15. wagtail/contrib/settings/locale/be/LC_MESSAGES/django.po +1 -1
  16. wagtail/contrib/settings/locale/bn/LC_MESSAGES/django.po +1 -1
  17. wagtail/contrib/settings/locale/ca/LC_MESSAGES/django.po +1 -1
  18. wagtail/contrib/settings/locale/cs/LC_MESSAGES/django.po +1 -1
  19. wagtail/contrib/settings/locale/cy/LC_MESSAGES/django.po +1 -1
  20. wagtail/contrib/settings/locale/da/LC_MESSAGES/django.po +1 -1
  21. wagtail/contrib/settings/locale/de/LC_MESSAGES/django.po +1 -1
  22. wagtail/contrib/settings/locale/dv/LC_MESSAGES/django.po +1 -1
  23. wagtail/contrib/settings/locale/el/LC_MESSAGES/django.po +1 -1
  24. wagtail/contrib/settings/locale/en_IN/LC_MESSAGES/django.po +1 -1
  25. wagtail/contrib/settings/locale/es/LC_MESSAGES/django.po +1 -1
  26. wagtail/contrib/settings/locale/es_419/LC_MESSAGES/django.po +1 -1
  27. wagtail/contrib/settings/locale/es_VE/LC_MESSAGES/django.po +1 -1
  28. wagtail/contrib/settings/locale/et/LC_MESSAGES/django.po +1 -1
  29. wagtail/contrib/settings/locale/fa/LC_MESSAGES/django.po +1 -1
  30. wagtail/contrib/settings/locale/fi/LC_MESSAGES/django.po +1 -1
  31. wagtail/contrib/settings/locale/fr/LC_MESSAGES/django.po +1 -1
  32. wagtail/contrib/settings/locale/gl/LC_MESSAGES/django.po +1 -1
  33. wagtail/contrib/settings/locale/he_IL/LC_MESSAGES/django.po +1 -1
  34. wagtail/contrib/settings/locale/hi/LC_MESSAGES/django.po +1 -1
  35. wagtail/contrib/settings/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  36. wagtail/contrib/settings/locale/ht/LC_MESSAGES/django.po +1 -1
  37. wagtail/contrib/settings/locale/hu/LC_MESSAGES/django.po +1 -1
  38. wagtail/contrib/settings/locale/id_ID/LC_MESSAGES/django.po +1 -1
  39. wagtail/contrib/settings/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  40. wagtail/contrib/settings/locale/is_IS/LC_MESSAGES/django.po +8 -3
  41. wagtail/contrib/settings/locale/it/LC_MESSAGES/django.po +1 -1
  42. wagtail/contrib/settings/locale/ja/LC_MESSAGES/django.po +1 -1
  43. wagtail/contrib/settings/locale/ka/LC_MESSAGES/django.po +1 -1
  44. wagtail/contrib/settings/locale/ko/LC_MESSAGES/django.po +1 -1
  45. wagtail/contrib/settings/locale/lt/LC_MESSAGES/django.po +1 -1
  46. wagtail/contrib/settings/locale/lv/LC_MESSAGES/django.po +1 -1
  47. wagtail/contrib/settings/locale/mi/LC_MESSAGES/django.po +1 -1
  48. wagtail/contrib/settings/locale/mn/LC_MESSAGES/django.po +1 -1
  49. wagtail/contrib/settings/locale/my/LC_MESSAGES/django.po +1 -1
  50. wagtail/contrib/settings/locale/nb/LC_MESSAGES/django.po +1 -1
  51. wagtail/contrib/settings/locale/nl/LC_MESSAGES/django.po +1 -1
  52. wagtail/contrib/settings/locale/pl/LC_MESSAGES/django.po +1 -1
  53. wagtail/contrib/settings/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  54. wagtail/contrib/settings/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  55. wagtail/contrib/settings/locale/ro/LC_MESSAGES/django.po +1 -1
  56. wagtail/contrib/settings/locale/ru/LC_MESSAGES/django.po +1 -1
  57. wagtail/contrib/settings/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  58. wagtail/contrib/settings/locale/sl/LC_MESSAGES/django.po +1 -1
  59. wagtail/contrib/settings/locale/sr/LC_MESSAGES/django.po +1 -1
  60. wagtail/contrib/settings/locale/sv/LC_MESSAGES/django.po +1 -1
  61. wagtail/contrib/settings/locale/ta/LC_MESSAGES/django.po +1 -1
  62. wagtail/contrib/settings/locale/tet/LC_MESSAGES/django.po +1 -1
  63. wagtail/contrib/settings/locale/th/LC_MESSAGES/django.po +1 -1
  64. wagtail/contrib/settings/locale/tr/LC_MESSAGES/django.po +1 -1
  65. wagtail/contrib/settings/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  66. wagtail/contrib/settings/locale/ug/LC_MESSAGES/django.po +1 -1
  67. wagtail/contrib/settings/locale/uk/LC_MESSAGES/django.po +1 -1
  68. wagtail/contrib/settings/locale/vi/LC_MESSAGES/django.po +1 -1
  69. wagtail/contrib/settings/locale/zh/LC_MESSAGES/django.po +1 -1
  70. wagtail/contrib/settings/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  71. wagtail/contrib/settings/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  72. wagtail/contrib/simple_translation/locale/ar/LC_MESSAGES/django.po +1 -1
  73. wagtail/contrib/simple_translation/locale/be/LC_MESSAGES/django.po +1 -1
  74. wagtail/contrib/simple_translation/locale/ca/LC_MESSAGES/django.po +1 -1
  75. wagtail/contrib/simple_translation/locale/cs/LC_MESSAGES/django.po +1 -1
  76. wagtail/contrib/simple_translation/locale/cy/LC_MESSAGES/django.po +1 -1
  77. wagtail/contrib/simple_translation/locale/de/LC_MESSAGES/django.po +1 -1
  78. wagtail/contrib/simple_translation/locale/dv/LC_MESSAGES/django.po +1 -1
  79. wagtail/contrib/simple_translation/locale/el/LC_MESSAGES/django.po +1 -1
  80. wagtail/contrib/simple_translation/locale/es/LC_MESSAGES/django.po +1 -1
  81. wagtail/contrib/simple_translation/locale/es_419/LC_MESSAGES/django.po +1 -1
  82. wagtail/contrib/simple_translation/locale/fa/LC_MESSAGES/django.po +1 -1
  83. wagtail/contrib/simple_translation/locale/fi/LC_MESSAGES/django.po +1 -1
  84. wagtail/contrib/simple_translation/locale/fr/LC_MESSAGES/django.po +1 -1
  85. wagtail/contrib/simple_translation/locale/gl/LC_MESSAGES/django.po +1 -1
  86. wagtail/contrib/simple_translation/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  87. wagtail/contrib/simple_translation/locale/hu/LC_MESSAGES/django.po +1 -1
  88. wagtail/contrib/simple_translation/locale/is_IS/LC_MESSAGES/django.po +1 -1
  89. wagtail/contrib/simple_translation/locale/it/LC_MESSAGES/django.po +1 -1
  90. wagtail/contrib/simple_translation/locale/ko/LC_MESSAGES/django.po +1 -1
  91. wagtail/contrib/simple_translation/locale/lt/LC_MESSAGES/django.po +1 -1
  92. wagtail/contrib/simple_translation/locale/mi/LC_MESSAGES/django.po +1 -1
  93. wagtail/contrib/simple_translation/locale/mn/LC_MESSAGES/django.po +1 -1
  94. wagtail/contrib/simple_translation/locale/nb/LC_MESSAGES/django.po +1 -1
  95. wagtail/contrib/simple_translation/locale/nl/LC_MESSAGES/django.po +1 -1
  96. wagtail/contrib/simple_translation/locale/pl/LC_MESSAGES/django.po +1 -1
  97. wagtail/contrib/simple_translation/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  98. wagtail/contrib/simple_translation/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  99. wagtail/contrib/simple_translation/locale/ro/LC_MESSAGES/django.po +1 -1
  100. wagtail/contrib/simple_translation/locale/ru/LC_MESSAGES/django.po +1 -1
  101. wagtail/contrib/simple_translation/locale/sl/LC_MESSAGES/django.po +1 -1
  102. wagtail/contrib/simple_translation/locale/sv/LC_MESSAGES/django.po +1 -1
  103. wagtail/contrib/simple_translation/locale/tr/LC_MESSAGES/django.po +1 -1
  104. wagtail/contrib/simple_translation/locale/ug/LC_MESSAGES/django.po +1 -1
  105. wagtail/contrib/simple_translation/locale/uk/LC_MESSAGES/django.po +1 -1
  106. wagtail/contrib/simple_translation/locale/vi/LC_MESSAGES/django.po +1 -1
  107. wagtail/contrib/simple_translation/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  108. wagtail/contrib/simple_translation/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  109. wagtail/contrib/styleguide/locale/af/LC_MESSAGES/django.po +1 -1
  110. wagtail/contrib/styleguide/locale/ar/LC_MESSAGES/django.po +1 -1
  111. wagtail/contrib/styleguide/locale/az_AZ/LC_MESSAGES/django.po +1 -1
  112. wagtail/contrib/styleguide/locale/be/LC_MESSAGES/django.po +1 -1
  113. wagtail/contrib/styleguide/locale/bg/LC_MESSAGES/django.po +1 -1
  114. wagtail/contrib/styleguide/locale/bn/LC_MESSAGES/django.po +1 -1
  115. wagtail/contrib/styleguide/locale/ca/LC_MESSAGES/django.po +1 -1
  116. wagtail/contrib/styleguide/locale/cs/LC_MESSAGES/django.po +1 -1
  117. wagtail/contrib/styleguide/locale/cy/LC_MESSAGES/django.po +1 -1
  118. wagtail/contrib/styleguide/locale/da/LC_MESSAGES/django.po +1 -1
  119. wagtail/contrib/styleguide/locale/de/LC_MESSAGES/django.po +1 -1
  120. wagtail/contrib/styleguide/locale/dv/LC_MESSAGES/django.po +1 -1
  121. wagtail/contrib/styleguide/locale/el/LC_MESSAGES/django.po +1 -1
  122. wagtail/contrib/styleguide/locale/en_IN/LC_MESSAGES/django.po +1 -1
  123. wagtail/contrib/styleguide/locale/es/LC_MESSAGES/django.po +1 -1
  124. wagtail/contrib/styleguide/locale/es_419/LC_MESSAGES/django.po +1 -1
  125. wagtail/contrib/styleguide/locale/es_VE/LC_MESSAGES/django.po +1 -1
  126. wagtail/contrib/styleguide/locale/et/LC_MESSAGES/django.po +1 -1
  127. wagtail/contrib/styleguide/locale/fa/LC_MESSAGES/django.po +1 -1
  128. wagtail/contrib/styleguide/locale/fi/LC_MESSAGES/django.po +1 -1
  129. wagtail/contrib/styleguide/locale/fr/LC_MESSAGES/django.po +1 -1
  130. wagtail/contrib/styleguide/locale/gl/LC_MESSAGES/django.po +1 -1
  131. wagtail/contrib/styleguide/locale/he_IL/LC_MESSAGES/django.po +1 -1
  132. wagtail/contrib/styleguide/locale/hi/LC_MESSAGES/django.po +1 -1
  133. wagtail/contrib/styleguide/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  134. wagtail/contrib/styleguide/locale/ht/LC_MESSAGES/django.po +1 -1
  135. wagtail/contrib/styleguide/locale/hu/LC_MESSAGES/django.po +1 -1
  136. wagtail/contrib/styleguide/locale/id_ID/LC_MESSAGES/django.po +1 -1
  137. wagtail/contrib/styleguide/locale/is_IS/LC_MESSAGES/django.po +1 -1
  138. wagtail/contrib/styleguide/locale/it/LC_MESSAGES/django.po +1 -1
  139. wagtail/contrib/styleguide/locale/ja/LC_MESSAGES/django.po +1 -1
  140. wagtail/contrib/styleguide/locale/ka/LC_MESSAGES/django.po +1 -1
  141. wagtail/contrib/styleguide/locale/ko/LC_MESSAGES/django.po +1 -1
  142. wagtail/contrib/styleguide/locale/lt/LC_MESSAGES/django.po +1 -1
  143. wagtail/contrib/styleguide/locale/lv/LC_MESSAGES/django.po +1 -1
  144. wagtail/contrib/styleguide/locale/mi/LC_MESSAGES/django.po +1 -1
  145. wagtail/contrib/styleguide/locale/mn/LC_MESSAGES/django.po +1 -1
  146. wagtail/contrib/styleguide/locale/my/LC_MESSAGES/django.po +1 -1
  147. wagtail/contrib/styleguide/locale/nb/LC_MESSAGES/django.po +1 -1
  148. wagtail/contrib/styleguide/locale/nl/LC_MESSAGES/django.po +1 -1
  149. wagtail/contrib/styleguide/locale/pl/LC_MESSAGES/django.po +1 -1
  150. wagtail/contrib/styleguide/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  151. wagtail/contrib/styleguide/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  152. wagtail/contrib/styleguide/locale/ro/LC_MESSAGES/django.po +1 -1
  153. wagtail/contrib/styleguide/locale/ru/LC_MESSAGES/django.po +1 -1
  154. wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  155. wagtail/contrib/styleguide/locale/sl/LC_MESSAGES/django.po +1 -1
  156. wagtail/contrib/styleguide/locale/sv/LC_MESSAGES/django.po +1 -1
  157. wagtail/contrib/styleguide/locale/ta/LC_MESSAGES/django.po +1 -1
  158. wagtail/contrib/styleguide/locale/tet/LC_MESSAGES/django.po +1 -1
  159. wagtail/contrib/styleguide/locale/th/LC_MESSAGES/django.po +1 -1
  160. wagtail/contrib/styleguide/locale/tr/LC_MESSAGES/django.po +1 -1
  161. wagtail/contrib/styleguide/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  162. wagtail/contrib/styleguide/locale/ug/LC_MESSAGES/django.po +1 -1
  163. wagtail/contrib/styleguide/locale/uk/LC_MESSAGES/django.po +1 -1
  164. wagtail/contrib/styleguide/locale/vi/LC_MESSAGES/django.po +1 -1
  165. wagtail/contrib/styleguide/locale/zh/LC_MESSAGES/django.po +1 -1
  166. wagtail/contrib/styleguide/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  167. wagtail/contrib/styleguide/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  168. wagtail/contrib/typed_table_block/locale/ar/LC_MESSAGES/django.po +1 -1
  169. wagtail/contrib/typed_table_block/locale/be/LC_MESSAGES/django.po +1 -1
  170. wagtail/contrib/typed_table_block/locale/ca/LC_MESSAGES/django.po +1 -1
  171. wagtail/contrib/typed_table_block/locale/cy/LC_MESSAGES/django.po +1 -1
  172. wagtail/contrib/typed_table_block/locale/de/LC_MESSAGES/django.po +1 -1
  173. wagtail/contrib/typed_table_block/locale/dv/LC_MESSAGES/django.po +1 -1
  174. wagtail/contrib/typed_table_block/locale/el/LC_MESSAGES/django.po +1 -1
  175. wagtail/contrib/typed_table_block/locale/es/LC_MESSAGES/django.po +1 -1
  176. wagtail/contrib/typed_table_block/locale/fa/LC_MESSAGES/django.po +1 -1
  177. wagtail/contrib/typed_table_block/locale/fi/LC_MESSAGES/django.po +1 -1
  178. wagtail/contrib/typed_table_block/locale/fr/LC_MESSAGES/django.po +1 -1
  179. wagtail/contrib/typed_table_block/locale/gl/LC_MESSAGES/django.po +1 -1
  180. wagtail/contrib/typed_table_block/locale/hu/LC_MESSAGES/django.po +1 -1
  181. wagtail/contrib/typed_table_block/locale/is_IS/LC_MESSAGES/django.po +1 -1
  182. wagtail/contrib/typed_table_block/locale/it/LC_MESSAGES/django.po +1 -1
  183. wagtail/contrib/typed_table_block/locale/ko/LC_MESSAGES/django.po +1 -1
  184. wagtail/contrib/typed_table_block/locale/lt/LC_MESSAGES/django.po +1 -1
  185. wagtail/contrib/typed_table_block/locale/nl/LC_MESSAGES/django.po +1 -1
  186. wagtail/contrib/typed_table_block/locale/pl/LC_MESSAGES/django.po +1 -1
  187. wagtail/contrib/typed_table_block/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  188. wagtail/contrib/typed_table_block/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  189. wagtail/contrib/typed_table_block/locale/ro/LC_MESSAGES/django.po +1 -1
  190. wagtail/contrib/typed_table_block/locale/ru/LC_MESSAGES/django.po +1 -1
  191. wagtail/contrib/typed_table_block/locale/sl/LC_MESSAGES/django.po +1 -1
  192. wagtail/contrib/typed_table_block/locale/sv/LC_MESSAGES/django.po +1 -1
  193. wagtail/contrib/typed_table_block/locale/th/LC_MESSAGES/django.po +1 -1
  194. wagtail/contrib/typed_table_block/locale/tr/LC_MESSAGES/django.po +1 -1
  195. wagtail/contrib/typed_table_block/locale/ug/LC_MESSAGES/django.po +1 -1
  196. wagtail/contrib/typed_table_block/locale/uk/LC_MESSAGES/django.po +1 -1
  197. wagtail/contrib/typed_table_block/locale/zh/LC_MESSAGES/django.po +1 -1
  198. wagtail/contrib/typed_table_block/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  199. wagtail/contrib/typed_table_block/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  200. wagtail/documents/forms.py +1 -1
  201. wagtail/documents/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  202. wagtail/documents/locale/is_IS/LC_MESSAGES/django.po +16 -2
  203. wagtail/documents/tests/test_admin_views.py +35 -3
  204. wagtail/documents/tests/test_search.py +41 -27
  205. wagtail/documents/views/documents.py +31 -5
  206. wagtail/embeds/locale/ar/LC_MESSAGES/django.po +1 -1
  207. wagtail/embeds/locale/az_AZ/LC_MESSAGES/django.po +1 -1
  208. wagtail/embeds/locale/be/LC_MESSAGES/django.po +1 -1
  209. wagtail/embeds/locale/bg/LC_MESSAGES/django.po +1 -1
  210. wagtail/embeds/locale/bn/LC_MESSAGES/django.po +1 -1
  211. wagtail/embeds/locale/ca/LC_MESSAGES/django.po +1 -1
  212. wagtail/embeds/locale/cs/LC_MESSAGES/django.po +1 -1
  213. wagtail/embeds/locale/cy/LC_MESSAGES/django.po +1 -1
  214. wagtail/embeds/locale/da/LC_MESSAGES/django.po +1 -1
  215. wagtail/embeds/locale/de/LC_MESSAGES/django.po +1 -1
  216. wagtail/embeds/locale/dv/LC_MESSAGES/django.po +1 -1
  217. wagtail/embeds/locale/el/LC_MESSAGES/django.po +1 -1
  218. wagtail/embeds/locale/es/LC_MESSAGES/django.po +1 -1
  219. wagtail/embeds/locale/es_419/LC_MESSAGES/django.po +1 -1
  220. wagtail/embeds/locale/et/LC_MESSAGES/django.po +1 -1
  221. wagtail/embeds/locale/fa/LC_MESSAGES/django.po +1 -1
  222. wagtail/embeds/locale/fi/LC_MESSAGES/django.po +1 -1
  223. wagtail/embeds/locale/fr/LC_MESSAGES/django.po +1 -1
  224. wagtail/embeds/locale/gl/LC_MESSAGES/django.po +1 -1
  225. wagtail/embeds/locale/he_IL/LC_MESSAGES/django.po +1 -1
  226. wagtail/embeds/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  227. wagtail/embeds/locale/ht/LC_MESSAGES/django.po +1 -1
  228. wagtail/embeds/locale/hu/LC_MESSAGES/django.po +1 -1
  229. wagtail/embeds/locale/id_ID/LC_MESSAGES/django.po +1 -1
  230. wagtail/embeds/locale/is_IS/LC_MESSAGES/django.po +1 -1
  231. wagtail/embeds/locale/it/LC_MESSAGES/django.po +1 -1
  232. wagtail/embeds/locale/ja/LC_MESSAGES/django.po +1 -1
  233. wagtail/embeds/locale/ko/LC_MESSAGES/django.po +1 -1
  234. wagtail/embeds/locale/lt/LC_MESSAGES/django.po +1 -1
  235. wagtail/embeds/locale/lv/LC_MESSAGES/django.po +1 -1
  236. wagtail/embeds/locale/mi/LC_MESSAGES/django.po +1 -1
  237. wagtail/embeds/locale/mn/LC_MESSAGES/django.po +1 -1
  238. wagtail/embeds/locale/my/LC_MESSAGES/django.po +1 -1
  239. wagtail/embeds/locale/nb/LC_MESSAGES/django.po +1 -1
  240. wagtail/embeds/locale/nl/LC_MESSAGES/django.po +1 -1
  241. wagtail/embeds/locale/pl/LC_MESSAGES/django.po +1 -1
  242. wagtail/embeds/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  243. wagtail/embeds/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  244. wagtail/embeds/locale/ro/LC_MESSAGES/django.po +1 -1
  245. wagtail/embeds/locale/ru/LC_MESSAGES/django.po +1 -1
  246. wagtail/embeds/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  247. wagtail/embeds/locale/sl/LC_MESSAGES/django.po +1 -1
  248. wagtail/embeds/locale/sv/LC_MESSAGES/django.po +1 -1
  249. wagtail/embeds/locale/tet/LC_MESSAGES/django.po +1 -1
  250. wagtail/embeds/locale/th/LC_MESSAGES/django.po +1 -1
  251. wagtail/embeds/locale/tr/LC_MESSAGES/django.po +1 -1
  252. wagtail/embeds/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  253. wagtail/embeds/locale/ug/LC_MESSAGES/django.po +1 -1
  254. wagtail/embeds/locale/uk/LC_MESSAGES/django.po +1 -1
  255. wagtail/embeds/locale/vi/LC_MESSAGES/django.po +1 -1
  256. wagtail/embeds/locale/zh/LC_MESSAGES/django.po +1 -1
  257. wagtail/embeds/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  258. wagtail/embeds/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  259. wagtail/images/forms.py +1 -1
  260. wagtail/images/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  261. wagtail/images/locale/is_IS/LC_MESSAGES/django.po +27 -2
  262. wagtail/images/tests/test_admin_views.py +75 -6
  263. wagtail/images/tests/test_models.py +40 -26
  264. wagtail/images/views/chooser.py +10 -5
  265. wagtail/images/views/images.py +36 -6
  266. wagtail/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  267. wagtail/locale/is_IS/LC_MESSAGES/django.po +20 -2
  268. wagtail/locales/locale/ar/LC_MESSAGES/django.po +1 -1
  269. wagtail/locales/locale/be/LC_MESSAGES/django.po +1 -1
  270. wagtail/locales/locale/bg/LC_MESSAGES/django.po +1 -1
  271. wagtail/locales/locale/ca/LC_MESSAGES/django.po +1 -1
  272. wagtail/locales/locale/cs/LC_MESSAGES/django.po +1 -1
  273. wagtail/locales/locale/cy/LC_MESSAGES/django.po +1 -1
  274. wagtail/locales/locale/da/LC_MESSAGES/django.po +1 -1
  275. wagtail/locales/locale/de/LC_MESSAGES/django.po +1 -1
  276. wagtail/locales/locale/dv/LC_MESSAGES/django.po +1 -1
  277. wagtail/locales/locale/el/LC_MESSAGES/django.po +1 -1
  278. wagtail/locales/locale/es/LC_MESSAGES/django.po +1 -1
  279. wagtail/locales/locale/et/LC_MESSAGES/django.po +1 -1
  280. wagtail/locales/locale/fa/LC_MESSAGES/django.po +1 -1
  281. wagtail/locales/locale/fi/LC_MESSAGES/django.po +1 -1
  282. wagtail/locales/locale/fr/LC_MESSAGES/django.po +1 -1
  283. wagtail/locales/locale/gl/LC_MESSAGES/django.po +1 -1
  284. wagtail/locales/locale/he_IL/LC_MESSAGES/django.po +1 -1
  285. wagtail/locales/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  286. wagtail/locales/locale/hu/LC_MESSAGES/django.po +1 -1
  287. wagtail/locales/locale/id_ID/LC_MESSAGES/django.po +1 -1
  288. wagtail/locales/locale/is_IS/LC_MESSAGES/django.po +1 -1
  289. wagtail/locales/locale/it/LC_MESSAGES/django.po +1 -1
  290. wagtail/locales/locale/ja/LC_MESSAGES/django.po +1 -1
  291. wagtail/locales/locale/ko/LC_MESSAGES/django.po +1 -1
  292. wagtail/locales/locale/lt/LC_MESSAGES/django.po +1 -1
  293. wagtail/locales/locale/lv/LC_MESSAGES/django.po +1 -1
  294. wagtail/locales/locale/mi/LC_MESSAGES/django.po +1 -1
  295. wagtail/locales/locale/mn/LC_MESSAGES/django.po +1 -1
  296. wagtail/locales/locale/my/LC_MESSAGES/django.po +1 -1
  297. wagtail/locales/locale/nb/LC_MESSAGES/django.po +1 -1
  298. wagtail/locales/locale/nl/LC_MESSAGES/django.po +1 -1
  299. wagtail/locales/locale/pl/LC_MESSAGES/django.po +1 -1
  300. wagtail/locales/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  301. wagtail/locales/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  302. wagtail/locales/locale/ro/LC_MESSAGES/django.po +1 -1
  303. wagtail/locales/locale/ru/LC_MESSAGES/django.po +1 -1
  304. wagtail/locales/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  305. wagtail/locales/locale/sl/LC_MESSAGES/django.po +1 -1
  306. wagtail/locales/locale/sv/LC_MESSAGES/django.po +1 -1
  307. wagtail/locales/locale/tet/LC_MESSAGES/django.po +1 -1
  308. wagtail/locales/locale/th/LC_MESSAGES/django.po +1 -1
  309. wagtail/locales/locale/tr/LC_MESSAGES/django.po +1 -1
  310. wagtail/locales/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  311. wagtail/locales/locale/ug/LC_MESSAGES/django.po +1 -1
  312. wagtail/locales/locale/uk/LC_MESSAGES/django.po +1 -1
  313. wagtail/locales/locale/vi/LC_MESSAGES/django.po +1 -1
  314. wagtail/locales/locale/zh/LC_MESSAGES/django.po +1 -1
  315. wagtail/locales/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  316. wagtail/locales/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  317. wagtail/migrations/0096_referenceindex_referenceindex_source_object_and_more.py +28 -0
  318. wagtail/models/reference_index.py +26 -0
  319. wagtail/sites/locale/ar/LC_MESSAGES/django.po +1 -1
  320. wagtail/sites/locale/be/LC_MESSAGES/django.po +1 -1
  321. wagtail/sites/locale/bn/LC_MESSAGES/django.po +1 -1
  322. wagtail/sites/locale/ca/LC_MESSAGES/django.po +1 -1
  323. wagtail/sites/locale/cs/LC_MESSAGES/django.po +1 -1
  324. wagtail/sites/locale/cy/LC_MESSAGES/django.po +1 -1
  325. wagtail/sites/locale/da/LC_MESSAGES/django.po +1 -1
  326. wagtail/sites/locale/de/LC_MESSAGES/django.po +1 -1
  327. wagtail/sites/locale/dv/LC_MESSAGES/django.po +1 -1
  328. wagtail/sites/locale/el/LC_MESSAGES/django.po +1 -1
  329. wagtail/sites/locale/en_IN/LC_MESSAGES/django.po +1 -1
  330. wagtail/sites/locale/es/LC_MESSAGES/django.po +1 -1
  331. wagtail/sites/locale/es_419/LC_MESSAGES/django.po +1 -1
  332. wagtail/sites/locale/es_VE/LC_MESSAGES/django.po +1 -1
  333. wagtail/sites/locale/et/LC_MESSAGES/django.po +1 -1
  334. wagtail/sites/locale/fa/LC_MESSAGES/django.po +1 -1
  335. wagtail/sites/locale/fi/LC_MESSAGES/django.po +1 -1
  336. wagtail/sites/locale/fr/LC_MESSAGES/django.po +1 -1
  337. wagtail/sites/locale/gl/LC_MESSAGES/django.po +1 -1
  338. wagtail/sites/locale/he_IL/LC_MESSAGES/django.po +1 -1
  339. wagtail/sites/locale/hi/LC_MESSAGES/django.po +1 -1
  340. wagtail/sites/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  341. wagtail/sites/locale/ht/LC_MESSAGES/django.po +1 -1
  342. wagtail/sites/locale/hu/LC_MESSAGES/django.po +1 -1
  343. wagtail/sites/locale/id_ID/LC_MESSAGES/django.po +1 -1
  344. wagtail/sites/locale/is_IS/LC_MESSAGES/django.po +1 -1
  345. wagtail/sites/locale/it/LC_MESSAGES/django.po +1 -1
  346. wagtail/sites/locale/ja/LC_MESSAGES/django.po +1 -1
  347. wagtail/sites/locale/ka/LC_MESSAGES/django.po +1 -1
  348. wagtail/sites/locale/ko/LC_MESSAGES/django.po +1 -1
  349. wagtail/sites/locale/lt/LC_MESSAGES/django.po +1 -1
  350. wagtail/sites/locale/lv/LC_MESSAGES/django.po +1 -1
  351. wagtail/sites/locale/mi/LC_MESSAGES/django.po +1 -1
  352. wagtail/sites/locale/mn/LC_MESSAGES/django.po +1 -1
  353. wagtail/sites/locale/my/LC_MESSAGES/django.po +1 -1
  354. wagtail/sites/locale/nb/LC_MESSAGES/django.po +1 -1
  355. wagtail/sites/locale/nl/LC_MESSAGES/django.po +1 -1
  356. wagtail/sites/locale/pl/LC_MESSAGES/django.po +1 -1
  357. wagtail/sites/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  358. wagtail/sites/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  359. wagtail/sites/locale/ro/LC_MESSAGES/django.po +1 -1
  360. wagtail/sites/locale/ru/LC_MESSAGES/django.po +1 -1
  361. wagtail/sites/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  362. wagtail/sites/locale/sl/LC_MESSAGES/django.po +1 -1
  363. wagtail/sites/locale/sr/LC_MESSAGES/django.po +1 -1
  364. wagtail/sites/locale/sv/LC_MESSAGES/django.po +1 -1
  365. wagtail/sites/locale/ta/LC_MESSAGES/django.po +1 -1
  366. wagtail/sites/locale/tet/LC_MESSAGES/django.po +1 -1
  367. wagtail/sites/locale/th/LC_MESSAGES/django.po +1 -1
  368. wagtail/sites/locale/tr/LC_MESSAGES/django.po +1 -1
  369. wagtail/sites/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  370. wagtail/sites/locale/ug/LC_MESSAGES/django.po +1 -1
  371. wagtail/sites/locale/uk/LC_MESSAGES/django.po +1 -1
  372. wagtail/sites/locale/vi/LC_MESSAGES/django.po +1 -1
  373. wagtail/sites/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  374. wagtail/sites/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  375. wagtail/snippets/tests/test_preview.py +22 -8
  376. wagtail/users/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  377. wagtail/users/locale/is_IS/LC_MESSAGES/django.po +6 -2
  378. {wagtail-7.2.dist-info → wagtail-7.2.1.dist-info}/METADATA +1 -1
  379. {wagtail-7.2.dist-info → wagtail-7.2.1.dist-info}/RECORD +383 -382
  380. {wagtail-7.2.dist-info → wagtail-7.2.1.dist-info}/WHEEL +0 -0
  381. {wagtail-7.2.dist-info → wagtail-7.2.1.dist-info}/entry_points.txt +0 -0
  382. {wagtail-7.2.dist-info → wagtail-7.2.1.dist-info}/licenses/LICENSE +0 -0
  383. {wagtail-7.2.dist-info → wagtail-7.2.1.dist-info}/top_level.txt +0 -0
@@ -360,7 +360,7 @@ class TestImageIndexView(WagtailTestUtils, TestCase):
360
360
  self.get()
361
361
 
362
362
  # Initial number of queries.
363
- with self.assertNumQueries(12):
363
+ with self.assertNumQueries(13):
364
364
  self.get()
365
365
 
366
366
  # Add 5 images.
@@ -370,11 +370,11 @@ class TestImageIndexView(WagtailTestUtils, TestCase):
370
370
  file=get_test_image_file(size=(1, 1)),
371
371
  )
372
372
 
373
- with self.assertNumQueries(32):
373
+ with self.assertNumQueries(33):
374
374
  # The renditions needed don't exist yet. We have 20 = 5 * 4 additional queries.
375
375
  self.get()
376
376
 
377
- with self.assertNumQueries(12):
377
+ with self.assertNumQueries(13):
378
378
  # No extra additional queries since renditions exist and are saved in
379
379
  # the prefetched objects cache.
380
380
  self.get()
@@ -597,7 +597,14 @@ class TestImageIndexView(WagtailTestUtils, TestCase):
597
597
  }
598
598
  for layout in ["list", "grid"]:
599
599
  for ordering, expected_order in cases.items():
600
- with self.subTest(layout=layout, ordering=ordering):
600
+ response = self.client.get(
601
+ reverse("wagtailimages:index"),
602
+ {"ordering": ordering, "layout": layout},
603
+ )
604
+ with (
605
+ self.subTest(layout=layout, ordering=ordering),
606
+ self.assertNumQueries(22),
607
+ ):
601
608
  response = self.client.get(
602
609
  reverse("wagtailimages:index"),
603
610
  {"ordering": ordering, "layout": layout},
@@ -836,6 +843,32 @@ class TestImageIndexViewSearch(WagtailTestUtils, TransactionTestCase):
836
843
  "Expected a ul element with class 'listing horiz images' in grid layout when searching for images.",
837
844
  )
838
845
 
846
+ def test_order_by_usage_count_disabled_when_searching(self):
847
+ # Ordering by usage count not currently available when searching,
848
+ # due to https://github.com/wagtail/django-modelsearch/issues/51
849
+ VariousOnDeleteModel.objects.create(protected_image=self.kitten_image)
850
+ VariousOnDeleteModel.objects.create(protected_image=self.kitten_image)
851
+ VariousOnDeleteModel.objects.create(protected_image=self.puppy_image)
852
+
853
+ response = self.client.get(
854
+ reverse("wagtailimages:index"),
855
+ {"q": "cute", "ordering": "-usage_count", "layout": "list"},
856
+ )
857
+ self.assertEqual(response.status_code, 200)
858
+ context = response.context
859
+ # Will fall back to default ordering (by -created_at)
860
+ self.assertSequenceEqual(
861
+ context["page_obj"].object_list,
862
+ [self.puppy_image, self.kitten_image],
863
+ )
864
+
865
+ soup = self.get_soup(response.content)
866
+ ths = soup.select("main table th")
867
+ self.assertTrue(ths)
868
+ usage_count_th = ths[-1]
869
+ self.assertEqual(usage_count_th.text.strip(), "Usage")
870
+ self.assertIsNone(usage_count_th.select_one("a"))
871
+
839
872
 
840
873
  class TestImageListingResultsView(WagtailTestUtils, TransactionTestCase):
841
874
  fixtures = ["test_empty.json"]
@@ -907,7 +940,7 @@ class TestImageAddView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
907
940
  self.assertIsNotNone(file_input)
908
941
  expected_attributes = {
909
942
  "data-controller": "w-sync",
910
- "data-action": "change->w-sync#apply",
943
+ "data-action": "input->w-sync#apply",
911
944
  "data-w-sync-bubbles-param": "true",
912
945
  "data-w-sync-name-value": "wagtail:images-upload",
913
946
  "data-w-sync-normalize-value": "true",
@@ -1985,7 +2018,7 @@ class TestImageChooserView(WagtailTestUtils, TestCase):
1985
2018
  self.assertIsNotNone(file_input)
1986
2019
  expected_attributes = {
1987
2020
  "data-controller": "w-sync",
1988
- "data-action": "change->w-sync#apply",
2021
+ "data-action": "input->w-sync#apply",
1989
2022
  "data-w-sync-bubbles-param": "true",
1990
2023
  "data-w-sync-name-value": "wagtail:images-upload",
1991
2024
  "data-w-sync-normalize-value": "true",
@@ -2188,6 +2221,38 @@ class TestImageChooserView(WagtailTestUtils, TestCase):
2188
2221
  self.assertEqual(len(response.context["results"]), 1)
2189
2222
  self.assertEqual(response.context["results"][0], image)
2190
2223
 
2224
+ def test_list_mode(self):
2225
+ image = Image.objects.create(
2226
+ title="Test image",
2227
+ file=get_test_image_file(),
2228
+ uploaded_by_user=self.user,
2229
+ )
2230
+ with self.captureOnCommitCallbacks(execute=True):
2231
+ VariousOnDeleteModel.objects.create(protected_image=image)
2232
+
2233
+ response = self.get({"layout": "list"})
2234
+ with self.assertNumQueries(16):
2235
+ response = self.get({"layout": "list"})
2236
+
2237
+ self.assertEqual(response.status_code, 200)
2238
+ response_json = json.loads(response.content.decode())
2239
+ self.assertEqual(response_json["step"], "choose")
2240
+ self.assertTemplateUsed(response, "wagtailimages/chooser/chooser.html")
2241
+
2242
+ soup = self.get_soup(response_json["html"])
2243
+ table = soup.select_one("table")
2244
+ self.assertIsNotNone(table)
2245
+ ths = table.select("th")
2246
+ self.assertEqual(
2247
+ [th.text.strip() for th in ths],
2248
+ ["Preview", "Title", "Collection", "Created", "Usage"],
2249
+ )
2250
+ tds = table.select("td")
2251
+ self.assertEqual(
2252
+ [td.get_text(separator="\n", strip=True) for td in tds],
2253
+ ["", f"Test image\n{image.filename}", "Root", "Just now", "Used 1 time"],
2254
+ )
2255
+
2191
2256
  @override_settings(
2192
2257
  CACHES={"default": {"BACKEND": "django.core.cache.backends.dummy.DummyCache"}}
2193
2258
  )
@@ -2212,6 +2277,10 @@ class TestImageChooserView(WagtailTestUtils, TestCase):
2212
2277
  # the prefetched objects cache.
2213
2278
  self.get()
2214
2279
 
2280
+ with self.assertNumQueries(11):
2281
+ # One additional query to get the usage count when displaying in list mode.
2282
+ self.get({"layout": "list"})
2283
+
2215
2284
 
2216
2285
  class TestImageChooserViewSearch(WagtailTestUtils, TransactionTestCase):
2217
2286
  fixtures = ["test_empty.json"]
@@ -27,6 +27,7 @@ from wagtail.images.models import (
27
27
  )
28
28
  from wagtail.images.rect import Rect
29
29
  from wagtail.models import Collection, GroupCollectionPermission, Page, ReferenceIndex
30
+ from wagtail.search.backends import get_search_backend
30
31
  from wagtail.test.dummy_external_storage import (
31
32
  DummyExternalStorage,
32
33
  DummyExternalStorageFile,
@@ -1274,20 +1275,11 @@ class TestIssue573(TestCase):
1274
1275
  image.get_rendition("fill-800x600")
1275
1276
 
1276
1277
 
1277
- @override_settings(_WAGTAILSEARCH_FORCE_AUTO_UPDATE=["elasticsearch"])
1278
1278
  class TestIssue613(WagtailTestUtils, TestCase):
1279
- def get_elasticsearch_backend(self):
1280
- from django.conf import settings
1281
-
1282
- from wagtail.search.backends import get_search_backend
1283
-
1279
+ def setUp(self):
1284
1280
  if "elasticsearch" not in settings.WAGTAILSEARCH_BACKENDS:
1285
1281
  raise unittest.SkipTest("No elasticsearch backend active")
1286
1282
 
1287
- return get_search_backend("elasticsearch")
1288
-
1289
- def setUp(self):
1290
- self.search_backend = self.get_elasticsearch_backend()
1291
1283
  self.login()
1292
1284
 
1293
1285
  management.call_command(
@@ -1352,16 +1344,27 @@ class TestIssue613(WagtailTestUtils, TestCase):
1352
1344
  # https://github.com/wagtail/wagtailsearch/commit/53a98169bccc3cef5b234944037f2b3f78efafd4 .
1353
1345
  # If this turns out to be necessary after all, you might want to compare how wagtail.tests.test_page_search.PageSearchTests does it.
1354
1346
 
1355
- # Add an image with some tags
1356
- image = self.add_image(tags="hello")
1357
- self.search_backend.refresh_indexes()
1347
+ backend_conf = settings.WAGTAILSEARCH_BACKENDS["elasticsearch"].copy()
1348
+ backend_conf["AUTO_UPDATE"] = True
1349
+ with self.settings(
1350
+ WAGTAILSEARCH_BACKENDS={
1351
+ "elasticsearch": backend_conf,
1352
+ }
1353
+ ):
1354
+ search_backend = get_search_backend("elasticsearch")
1358
1355
 
1359
- # Search for it by tag
1360
- results = self.search_backend.search("hello", Image)
1356
+ # Add an image with some tags
1357
+ image = self.add_image(tags="hello")
1361
1358
 
1362
- # Check
1363
- self.assertEqual(len(results), 1)
1364
- self.assertEqual(results[0].id, image.id)
1359
+ # TODO: remove this when https://github.com/kaedroho/django-modelsearch/pull/40 is merged and released
1360
+ search_backend.refresh_indexes()
1361
+
1362
+ # Search for it by tag
1363
+ results = search_backend.search("hello", Image)
1364
+
1365
+ # Check
1366
+ self.assertEqual(len(results), 1)
1367
+ self.assertEqual(results[0].id, image.id)
1365
1368
 
1366
1369
  def test_issue_613_on_edit(self):
1367
1370
  # Note to future developer troubleshooting this test...
@@ -1370,16 +1373,27 @@ class TestIssue613(WagtailTestUtils, TestCase):
1370
1373
  # https://github.com/wagtail/wagtailsearch/commit/53a98169bccc3cef5b234944037f2b3f78efafd4 .
1371
1374
  # If this turns out to be necessary after all, you might want to compare how wagtail.tests.test_page_search.PageSearchTests does it.
1372
1375
 
1373
- # Add an image with some tags
1374
- image = self.edit_image(tags="hello")
1375
- self.search_backend.refresh_indexes()
1376
+ backend_conf = settings.WAGTAILSEARCH_BACKENDS["elasticsearch"].copy()
1377
+ backend_conf["AUTO_UPDATE"] = True
1378
+ with self.settings(
1379
+ WAGTAILSEARCH_BACKENDS={
1380
+ "elasticsearch": backend_conf,
1381
+ }
1382
+ ):
1383
+ search_backend = get_search_backend("elasticsearch")
1384
+
1385
+ # Add an image with some tags
1386
+ image = self.edit_image(tags="hello")
1387
+
1388
+ # TODO: remove this when https://github.com/kaedroho/django-modelsearch/pull/40 is merged and released
1389
+ search_backend.refresh_indexes()
1376
1390
 
1377
- # Search for it by tag
1378
- results = self.search_backend.search("hello", Image)
1391
+ # Search for it by tag
1392
+ results = search_backend.search("hello", Image)
1379
1393
 
1380
- # Check
1381
- self.assertEqual(len(results), 1)
1382
- self.assertEqual(results[0].id, image.id)
1394
+ # Check
1395
+ self.assertEqual(len(results), 1)
1396
+ self.assertEqual(results[0].id, image.id)
1383
1397
 
1384
1398
 
1385
1399
  class TestIssue312(TestCase):
@@ -100,11 +100,6 @@ class BaseImageChooseView(BaseChooseView):
100
100
  .prefetch_renditions("max-165x165")
101
101
  )
102
102
 
103
- # Annotate with usage count from the ReferenceIndex
104
- images = images.annotate(
105
- usage_count=ReferenceIndex.usage_count_subquery(self.model)
106
- )
107
-
108
103
  return images
109
104
 
110
105
  def filter_object_list(self, objects):
@@ -132,6 +127,14 @@ class BaseImageChooseView(BaseChooseView):
132
127
  self.model = get_image_model()
133
128
  return super().get(request)
134
129
 
130
+ def get_usage_counts(self, results):
131
+ # Use a separate, more efficient query that only gets usage counts for
132
+ # objects on the current page
133
+ # See https://github.com/wagtail/wagtail/issues/13561
134
+ if self.layout == "grid":
135
+ return {}
136
+ return ReferenceIndex.get_count_references_to_in_bulk(list(results))
137
+
135
138
  def get_context_data(self, **kwargs):
136
139
  context = super().get_context_data(**kwargs)
137
140
  chosen_url_name = (
@@ -140,10 +143,12 @@ class BaseImageChooseView(BaseChooseView):
140
143
  else "wagtailimages_chooser:chosen"
141
144
  )
142
145
 
146
+ counts = self.get_usage_counts(context["results"])
143
147
  for image in context["results"]:
144
148
  image.chosen_url = self.append_preserved_url_parameters(
145
149
  reverse(chosen_url_name, args=(image.id,))
146
150
  )
151
+ image.usage_count = counts.get(image, 0)
147
152
 
148
153
  context["collections"] = self.collections
149
154
  context["layout"] = self.layout
@@ -80,7 +80,13 @@ class IndexView(generic.IndexView):
80
80
  return getattr(settings, "WAGTAILIMAGES_INDEX_PAGE_SIZE", 30)
81
81
 
82
82
  def get_valid_orderings(self):
83
- return self.ORDERING_OPTIONS
83
+ orderings = self.ORDERING_OPTIONS.copy()
84
+ if self.is_searching:
85
+ # Ordering by usage count not currently available when searching,
86
+ # due to https://github.com/wagtail/django-modelsearch/issues/51
87
+ orderings.pop("usage_count", None)
88
+ orderings.pop("-usage_count", None)
89
+ return orderings.keys()
84
90
 
85
91
  def get_base_queryset(self):
86
92
  # Get images (filtered by user permission)
@@ -92,13 +98,21 @@ class IndexView(generic.IndexView):
92
98
  .prefetch_renditions("max-165x165")
93
99
  )
94
100
 
95
- # Annotate with usage count from the ReferenceIndex
96
- images = images.annotate(
97
- usage_count=ReferenceIndex.usage_count_subquery(self.model)
98
- )
101
+ if self.needs_usage_count_subquery:
102
+ # Annotate usage_count on the whole queryset to allow ordering/filtering
103
+ # (On some databases, this can be slow when there are many objects)
104
+ images = images.annotate(
105
+ usage_count=ReferenceIndex.usage_count_subquery(self.model)
106
+ )
99
107
 
100
108
  return images
101
109
 
110
+ @cached_property
111
+ def needs_usage_count_subquery(self):
112
+ return self.ordering in ["usage_count", "-usage_count"] or (
113
+ self.is_filtering and "usage_count" in self.filters.form.cleaned_data
114
+ )
115
+
102
116
  @cached_property
103
117
  def current_collection(self):
104
118
  # Upon validation, the cleaned data is a Collection instance
@@ -123,6 +137,19 @@ class IndexView(generic.IndexView):
123
137
  next_url += "?" + request_query_string
124
138
  return next_url
125
139
 
140
+ def decorate_paginated_queryset(self, object_list):
141
+ if self.needs_usage_count_subquery:
142
+ # Already annotated in get_base_queryset
143
+ return object_list
144
+
145
+ # Use a separate, more efficient query that only gets usage counts for
146
+ # objects on the current page
147
+ # See https://github.com/wagtail/wagtail/issues/13561
148
+ counts = ReferenceIndex.get_count_references_to_in_bulk(list(object_list))
149
+ for obj in object_list:
150
+ obj.usage_count = counts.get(obj, 0)
151
+ return object_list
152
+
126
153
  def get_context_data(self, **kwargs):
127
154
  context = super().get_context_data(**kwargs)
128
155
 
@@ -133,6 +160,7 @@ class IndexView(generic.IndexView):
133
160
  "current_ordering": self.ordering,
134
161
  "ORDERING_OPTIONS": self.ORDERING_OPTIONS,
135
162
  "layout": self.layout,
163
+ "object_list": self.decorate_paginated_queryset(context["object_list"]),
136
164
  }
137
165
  )
138
166
 
@@ -172,7 +200,9 @@ class IndexView(generic.IndexView):
172
200
  UsageCountColumn(
173
201
  "usage_count",
174
202
  label=_("Usage"),
175
- sort_key="usage_count",
203
+ # Ordering by usage count not currently available when searching,
204
+ # due to https://github.com/wagtail/django-modelsearch/issues/51
205
+ sort_key="usage_count" if not self.is_searching else None,
176
206
  width="16%",
177
207
  ),
178
208
  ]
Binary file
@@ -3,7 +3,7 @@
3
3
  # This file is distributed under the same license as the PACKAGE package.
4
4
  #
5
5
  # Translators:
6
- # Arnar Tumi Þorsteinsson <arnartumi@gmail.com>, 2015-2018,2020-2021,2023-2024
6
+ # Arnar Tumi Þorsteinsson <arnartumi@gmail.com>, 2015-2018,2020-2021,2023-2025
7
7
  # saevarom <saevar@saevar.is>, 2019-2025
8
8
  msgid ""
9
9
  msgstr ""
@@ -11,7 +11,8 @@ msgstr ""
11
11
  "Report-Msgid-Bugs-To: \n"
12
12
  "POT-Creation-Date: 2025-10-23 16:45+0100\n"
13
13
  "PO-Revision-Date: 2014-02-21 15:51+0000\n"
14
- "Last-Translator: saevarom <saevar@saevar.is>, 2019-2025\n"
14
+ "Last-Translator: Arnar Tumi Þorsteinsson <arnartumi@gmail.com>, "
15
+ "2015-2018,2020-2021,2023-2025\n"
15
16
  "Language-Team: Icelandic (Iceland) (http://app.transifex.com/torchbox/"
16
17
  "wagtail/language/is_IS/)\n"
17
18
  "MIME-Version: 1.0\n"
@@ -77,6 +78,9 @@ msgstr "Wagtail sitemaps"
77
78
  msgid "Unknown content type"
78
79
  msgstr "Óþekkt efnistegund"
79
80
 
81
+ msgid "Date cannot be in the future."
82
+ msgstr "Dagsetning má ekki vera í framtíðinni."
83
+
80
84
  msgid "Password"
81
85
  msgstr "Lylkilorð"
82
86
 
@@ -370,6 +374,14 @@ msgstr "Fyrir leitarvélar"
370
374
  msgid "For site menus"
371
375
  msgstr "Fyrir valmyndir"
372
376
 
377
+ #, python-format
378
+ msgid ""
379
+ "The slug '%(page_slug)s' is already in use within the parent page at "
380
+ "'%(parent_url_path)s'."
381
+ msgstr ""
382
+ "Vefslóðarhlutinn '%(page_slug)s' er þegar í notkun undir yfirsíðunni "
383
+ "'%(parent_url_path)s'"
384
+
373
385
  msgid "page"
374
386
  msgstr "síða"
375
387
 
@@ -529,6 +541,12 @@ msgstr ""
529
541
  "%(hostname)s er þegar stillt sem sjálfgefna síðan. Þú verður að afhaka við "
530
542
  "þá síðu áður en þú getur gert þessa að sjálfgefinni."
531
543
 
544
+ msgid "group site permission"
545
+ msgstr "vefsíðuheimild hóps"
546
+
547
+ msgid "group site permissions"
548
+ msgstr "vefsíðuheimildir hóps"
549
+
532
550
  msgid "Public"
533
551
  msgstr "Í birtingu"
534
552
 
@@ -11,7 +11,7 @@ msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
14
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
15
15
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
16
16
  "Last-Translator: Abdullah Bamuhrez <bamuhrez@gmail.com>, 2025\n"
17
17
  "Language-Team: Arabic (https://app.transifex.com/torchbox/teams/8009/ar/)\n"
@@ -13,7 +13,7 @@ msgid ""
13
13
  msgstr ""
14
14
  "Project-Id-Version: PACKAGE VERSION\n"
15
15
  "Report-Msgid-Bugs-To: \n"
16
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
16
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
17
17
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
18
18
  "Last-Translator: Andrei Satsevich, 2023\n"
19
19
  "Language-Team: Belarusian (https://app.transifex.com/torchbox/teams/8009/"
@@ -11,7 +11,7 @@ msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
14
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
15
15
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
16
16
  "Last-Translator: Karl Hobley <karl@torchbox.com>, 2021\n"
17
17
  "Language-Team: Bulgarian (https://app.transifex.com/torchbox/teams/8009/"
@@ -11,7 +11,7 @@ msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
14
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
15
15
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
16
16
  "Last-Translator: Roger Pons <rogerpons@gmail.com>, 2025\n"
17
17
  "Language-Team: Catalan (https://app.transifex.com/torchbox/teams/8009/ca/)\n"
@@ -12,7 +12,7 @@ msgid ""
12
12
  msgstr ""
13
13
  "Project-Id-Version: PACKAGE VERSION\n"
14
14
  "Report-Msgid-Bugs-To: \n"
15
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
15
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
16
16
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
17
17
  "Last-Translator: Loic Teixeira, 2022\n"
18
18
  "Language-Team: Czech (https://app.transifex.com/torchbox/teams/8009/cs/)\n"
@@ -12,7 +12,7 @@ msgid ""
12
12
  msgstr ""
13
13
  "Project-Id-Version: PACKAGE VERSION\n"
14
14
  "Report-Msgid-Bugs-To: \n"
15
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
15
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
16
16
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
17
17
  "Last-Translator: Loic Teixeira, 2022\n"
18
18
  "Language-Team: Welsh (https://app.transifex.com/torchbox/teams/8009/cy/)\n"
@@ -11,7 +11,7 @@ msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
14
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
15
15
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
16
16
  "Last-Translator: Mads Kronborg <madskronborg99@gmail.com>, 2021\n"
17
17
  "Language-Team: Danish (https://app.transifex.com/torchbox/teams/8009/da/)\n"
@@ -15,7 +15,7 @@ msgid ""
15
15
  msgstr ""
16
16
  "Project-Id-Version: PACKAGE VERSION\n"
17
17
  "Report-Msgid-Bugs-To: \n"
18
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
18
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
19
19
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
20
20
  "Last-Translator: Stefan Hammer <stefan@hammerworxx.com>, 2025\n"
21
21
  "Language-Team: German (https://app.transifex.com/torchbox/teams/8009/de/)\n"
@@ -11,7 +11,7 @@ msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
14
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
15
15
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
16
16
  "Last-Translator: Fauzaan Gasim, 2024\n"
17
17
  "Language-Team: Divehi (https://app.transifex.com/torchbox/teams/8009/dv/)\n"
@@ -12,7 +12,7 @@ msgid ""
12
12
  msgstr ""
13
13
  "Project-Id-Version: PACKAGE VERSION\n"
14
14
  "Report-Msgid-Bugs-To: \n"
15
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
15
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
16
16
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
17
17
  "Last-Translator: fekioh, 2022\n"
18
18
  "Language-Team: Greek (https://app.transifex.com/torchbox/teams/8009/el/)\n"
@@ -13,7 +13,7 @@ msgid ""
13
13
  msgstr ""
14
14
  "Project-Id-Version: PACKAGE VERSION\n"
15
15
  "Report-Msgid-Bugs-To: \n"
16
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
16
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
17
17
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
18
18
  "Last-Translator: Loic Teixeira, 2022\n"
19
19
  "Language-Team: Spanish (https://app.transifex.com/torchbox/teams/8009/es/)\n"
@@ -12,7 +12,7 @@ msgid ""
12
12
  msgstr ""
13
13
  "Project-Id-Version: PACKAGE VERSION\n"
14
14
  "Report-Msgid-Bugs-To: \n"
15
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
15
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
16
16
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
17
17
  "Last-Translator: Martin <martinpajuste@gmail.com>, 2023\n"
18
18
  "Language-Team: Estonian (https://app.transifex.com/torchbox/teams/8009/et/)\n"
@@ -11,7 +11,7 @@ msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
14
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
15
15
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
16
16
  "Last-Translator: pyzenberg <pyzenberg@gmail.com>, 2021\n"
17
17
  "Language-Team: Persian (https://app.transifex.com/torchbox/teams/8009/fa/)\n"
@@ -12,7 +12,7 @@ msgid ""
12
12
  msgstr ""
13
13
  "Project-Id-Version: PACKAGE VERSION\n"
14
14
  "Report-Msgid-Bugs-To: \n"
15
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
15
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
16
16
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
17
17
  "Last-Translator: Loic Teixeira, 2022\n"
18
18
  "Language-Team: Finnish (https://app.transifex.com/torchbox/teams/8009/fi/)\n"
@@ -13,7 +13,7 @@ msgid ""
13
13
  msgstr ""
14
14
  "Project-Id-Version: PACKAGE VERSION\n"
15
15
  "Report-Msgid-Bugs-To: \n"
16
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
16
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
17
17
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
18
18
  "Last-Translator: Lucie Laporte, 2025\n"
19
19
  "Language-Team: French (https://app.transifex.com/torchbox/teams/8009/fr/)\n"
@@ -13,7 +13,7 @@ msgid ""
13
13
  msgstr ""
14
14
  "Project-Id-Version: PACKAGE VERSION\n"
15
15
  "Report-Msgid-Bugs-To: \n"
16
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
16
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
17
17
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
18
18
  "Last-Translator: X Bello <xbello@gmail.com>, 2025\n"
19
19
  "Language-Team: Galician (https://app.transifex.com/torchbox/teams/8009/gl/)\n"
@@ -11,7 +11,7 @@ msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
14
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
15
15
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
16
16
  "Last-Translator: Adi Ron <adi@bnop.co>, 2021\n"
17
17
  "Language-Team: Hebrew (Israel) (https://app.transifex.com/torchbox/teams/"
@@ -12,7 +12,7 @@ msgid ""
12
12
  msgstr ""
13
13
  "Project-Id-Version: PACKAGE VERSION\n"
14
14
  "Report-Msgid-Bugs-To: \n"
15
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
15
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
16
16
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
17
17
  "Last-Translator: Loic Teixeira, 2022\n"
18
18
  "Language-Team: Croatian (Croatia) (https://app.transifex.com/torchbox/teams/"
@@ -12,7 +12,7 @@ msgid ""
12
12
  msgstr ""
13
13
  "Project-Id-Version: PACKAGE VERSION\n"
14
14
  "Report-Msgid-Bugs-To: \n"
15
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
15
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
16
16
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
17
17
  "Last-Translator: Istvan Farkas <istvan.farkas@gmail.com>, 2025\n"
18
18
  "Language-Team: Hungarian (https://app.transifex.com/torchbox/teams/8009/"
@@ -11,7 +11,7 @@ msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
14
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
15
15
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
16
16
  "Last-Translator: M. Febrian Ramadhana <febrian@ramadhana.me>, 2021\n"
17
17
  "Language-Team: Indonesian (Indonesia) (https://app.transifex.com/torchbox/"
@@ -12,7 +12,7 @@ msgid ""
12
12
  msgstr ""
13
13
  "Project-Id-Version: PACKAGE VERSION\n"
14
14
  "Report-Msgid-Bugs-To: \n"
15
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
15
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
16
16
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
17
17
  "Last-Translator: saevarom <saevar@saevar.is>, 2025\n"
18
18
  "Language-Team: Icelandic (Iceland) (https://app.transifex.com/torchbox/teams/"
@@ -13,7 +13,7 @@ msgid ""
13
13
  msgstr ""
14
14
  "Project-Id-Version: PACKAGE VERSION\n"
15
15
  "Report-Msgid-Bugs-To: \n"
16
- "POT-Creation-Date: 2025-07-24 16:20+0200\n"
16
+ "POT-Creation-Date: 2025-10-23 16:45+0100\n"
17
17
  "PO-Revision-Date: 2020-10-23 10:41+0000\n"
18
18
  "Last-Translator: tognee, 2024\n"
19
19
  "Language-Team: Italian (https://app.transifex.com/torchbox/teams/8009/it/)\n"