wagtail 6.1.2__py3-none-any.whl → 6.1.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. wagtail/__init__.py +1 -1
  2. wagtail/admin/locale/ar/LC_MESSAGES/django.po +2 -2
  3. wagtail/admin/locale/be/LC_MESSAGES/django.po +7 -7
  4. wagtail/admin/locale/be/LC_MESSAGES/djangojs.po +3 -3
  5. wagtail/admin/locale/ca/LC_MESSAGES/django.mo +0 -0
  6. wagtail/admin/locale/ca/LC_MESSAGES/django.po +51 -50
  7. wagtail/admin/locale/cs/LC_MESSAGES/django.po +10 -8
  8. wagtail/admin/locale/de/LC_MESSAGES/django.po +49 -47
  9. wagtail/admin/locale/dv/LC_MESSAGES/django.po +8 -8
  10. wagtail/admin/locale/el/LC_MESSAGES/django.po +4 -4
  11. wagtail/admin/locale/es/LC_MESSAGES/django.po +40 -39
  12. wagtail/admin/locale/es_419/LC_MESSAGES/django.po +8 -8
  13. wagtail/admin/locale/et/LC_MESSAGES/django.po +14 -12
  14. wagtail/admin/locale/fa/LC_MESSAGES/django.mo +0 -0
  15. wagtail/admin/locale/fa/LC_MESSAGES/django.po +93 -19
  16. wagtail/admin/locale/fa/LC_MESSAGES/djangojs.mo +0 -0
  17. wagtail/admin/locale/fa/LC_MESSAGES/djangojs.po +5 -1
  18. wagtail/admin/locale/fi/LC_MESSAGES/django.po +18 -18
  19. wagtail/admin/locale/fr/LC_MESSAGES/django.mo +0 -0
  20. wagtail/admin/locale/fr/LC_MESSAGES/django.po +134 -46
  21. wagtail/admin/locale/gl/LC_MESSAGES/django.po +55 -54
  22. wagtail/admin/locale/hr_HR/LC_MESSAGES/django.po +13 -12
  23. wagtail/admin/locale/hr_HR/LC_MESSAGES/djangojs.po +2 -2
  24. wagtail/admin/locale/hu/LC_MESSAGES/django.po +45 -42
  25. wagtail/admin/locale/id_ID/LC_MESSAGES/django.po +6 -6
  26. wagtail/admin/locale/is_IS/LC_MESSAGES/django.po +53 -51
  27. wagtail/admin/locale/it/LC_MESSAGES/django.po +56 -55
  28. wagtail/admin/locale/ja/LC_MESSAGES/django.po +2 -2
  29. wagtail/admin/locale/ko/LC_MESSAGES/django.po +18 -17
  30. wagtail/admin/locale/lt/LC_MESSAGES/django.po +4 -4
  31. wagtail/admin/locale/nb/LC_MESSAGES/django.po +22 -22
  32. wagtail/admin/locale/nl/LC_MESSAGES/django.po +44 -41
  33. wagtail/admin/locale/pl/LC_MESSAGES/django.po +49 -47
  34. wagtail/admin/locale/pl/LC_MESSAGES/djangojs.po +3 -3
  35. wagtail/admin/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  36. wagtail/admin/locale/pt_BR/LC_MESSAGES/django.po +46 -26
  37. wagtail/admin/locale/pt_PT/LC_MESSAGES/django.po +21 -20
  38. wagtail/admin/locale/ro/LC_MESSAGES/django.po +51 -50
  39. wagtail/admin/locale/ru/LC_MESSAGES/django.po +60 -59
  40. wagtail/admin/locale/ru/LC_MESSAGES/djangojs.po +3 -3
  41. wagtail/admin/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  42. wagtail/admin/locale/sk_SK/LC_MESSAGES/django.po +15 -5
  43. wagtail/admin/locale/sl/LC_MESSAGES/django.mo +0 -0
  44. wagtail/admin/locale/sl/LC_MESSAGES/django.po +56 -39
  45. wagtail/admin/locale/sl/LC_MESSAGES/djangojs.po +2 -2
  46. wagtail/admin/locale/sv/LC_MESSAGES/django.mo +0 -0
  47. wagtail/admin/locale/sv/LC_MESSAGES/django.po +117 -41
  48. wagtail/admin/locale/sv/LC_MESSAGES/djangojs.mo +0 -0
  49. wagtail/admin/locale/sv/LC_MESSAGES/djangojs.po +5 -2
  50. wagtail/admin/locale/tet/LC_MESSAGES/django.po +2 -2
  51. wagtail/admin/locale/th/LC_MESSAGES/django.po +4 -4
  52. wagtail/admin/locale/tr/LC_MESSAGES/django.po +4 -4
  53. wagtail/admin/locale/tr_TR/LC_MESSAGES/django.po +4 -4
  54. wagtail/admin/locale/uk/LC_MESSAGES/django.po +11 -10
  55. wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  56. wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.po +84 -13
  57. wagtail/admin/locale/zh_Hant/LC_MESSAGES/django.po +2 -2
  58. wagtail/admin/views/generic/base.py +3 -2
  59. wagtail/contrib/forms/locale/be/LC_MESSAGES/django.po +3 -3
  60. wagtail/contrib/forms/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  61. wagtail/contrib/forms/locale/pl/LC_MESSAGES/django.po +3 -3
  62. wagtail/contrib/forms/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  63. wagtail/contrib/forms/locale/pt_BR/LC_MESSAGES/django.po +2 -2
  64. wagtail/contrib/forms/locale/ru/LC_MESSAGES/django.po +3 -3
  65. wagtail/contrib/forms/locale/sl/LC_MESSAGES/django.po +2 -2
  66. wagtail/contrib/redirects/locale/ar/LC_MESSAGES/django.po +4 -4
  67. wagtail/contrib/redirects/locale/be/LC_MESSAGES/django.po +3 -3
  68. wagtail/contrib/redirects/locale/bg/LC_MESSAGES/django.po +4 -4
  69. wagtail/contrib/redirects/locale/ca/LC_MESSAGES/django.po +4 -4
  70. wagtail/contrib/redirects/locale/cs/LC_MESSAGES/django.po +4 -4
  71. wagtail/contrib/redirects/locale/cy/LC_MESSAGES/django.po +6 -6
  72. wagtail/contrib/redirects/locale/de/LC_MESSAGES/django.po +5 -4
  73. wagtail/contrib/redirects/locale/el/LC_MESSAGES/django.po +7 -7
  74. wagtail/contrib/redirects/locale/es/LC_MESSAGES/django.po +6 -6
  75. wagtail/contrib/redirects/locale/et/LC_MESSAGES/django.po +4 -4
  76. wagtail/contrib/redirects/locale/fa/LC_MESSAGES/django.mo +0 -0
  77. wagtail/contrib/redirects/locale/fa/LC_MESSAGES/django.po +18 -5
  78. wagtail/contrib/redirects/locale/fi/LC_MESSAGES/django.po +6 -6
  79. wagtail/contrib/redirects/locale/fr/LC_MESSAGES/django.po +4 -4
  80. wagtail/contrib/redirects/locale/gl/LC_MESSAGES/django.po +4 -4
  81. wagtail/contrib/redirects/locale/hr_HR/LC_MESSAGES/django.po +8 -8
  82. wagtail/contrib/redirects/locale/hu/LC_MESSAGES/django.po +6 -6
  83. wagtail/contrib/redirects/locale/id_ID/LC_MESSAGES/django.po +4 -4
  84. wagtail/contrib/redirects/locale/is_IS/LC_MESSAGES/django.po +6 -6
  85. wagtail/contrib/redirects/locale/it/LC_MESSAGES/django.po +4 -4
  86. wagtail/contrib/redirects/locale/ja/LC_MESSAGES/django.po +2 -2
  87. wagtail/contrib/redirects/locale/ko/LC_MESSAGES/django.po +4 -4
  88. wagtail/contrib/redirects/locale/lt/LC_MESSAGES/django.po +4 -4
  89. wagtail/contrib/redirects/locale/mn/LC_MESSAGES/django.po +4 -4
  90. wagtail/contrib/redirects/locale/nb/LC_MESSAGES/django.po +4 -4
  91. wagtail/contrib/redirects/locale/nl/LC_MESSAGES/django.po +4 -4
  92. wagtail/contrib/redirects/locale/pl/LC_MESSAGES/django.po +9 -9
  93. wagtail/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po +5 -5
  94. wagtail/contrib/redirects/locale/pt_PT/LC_MESSAGES/django.po +4 -4
  95. wagtail/contrib/redirects/locale/ro/LC_MESSAGES/django.po +4 -4
  96. wagtail/contrib/redirects/locale/ru/LC_MESSAGES/django.po +7 -7
  97. wagtail/contrib/redirects/locale/sk_SK/LC_MESSAGES/django.po +4 -4
  98. wagtail/contrib/redirects/locale/sl/LC_MESSAGES/django.po +6 -6
  99. wagtail/contrib/redirects/locale/sr/LC_MESSAGES/django.po +2 -2
  100. wagtail/contrib/redirects/locale/sv/LC_MESSAGES/django.po +4 -4
  101. wagtail/contrib/redirects/locale/tet/LC_MESSAGES/django.po +4 -4
  102. wagtail/contrib/redirects/locale/th/LC_MESSAGES/django.po +4 -4
  103. wagtail/contrib/redirects/locale/tr/LC_MESSAGES/django.po +4 -4
  104. wagtail/contrib/redirects/locale/tr_TR/LC_MESSAGES/django.po +4 -4
  105. wagtail/contrib/redirects/locale/uk/LC_MESSAGES/django.po +4 -4
  106. wagtail/contrib/redirects/locale/zh/LC_MESSAGES/django.po +4 -4
  107. wagtail/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.po +4 -4
  108. wagtail/contrib/redirects/locale/zh_Hant/LC_MESSAGES/django.po +4 -4
  109. wagtail/contrib/search_promotions/locale/ar/LC_MESSAGES/django.po +4 -4
  110. wagtail/contrib/search_promotions/locale/be/LC_MESSAGES/django.po +7 -7
  111. wagtail/contrib/search_promotions/locale/ca/LC_MESSAGES/django.po +8 -8
  112. wagtail/contrib/search_promotions/locale/cs/LC_MESSAGES/django.po +2 -2
  113. wagtail/contrib/search_promotions/locale/cy/LC_MESSAGES/django.po +4 -4
  114. wagtail/contrib/search_promotions/locale/de/LC_MESSAGES/django.po +6 -6
  115. wagtail/contrib/search_promotions/locale/el/LC_MESSAGES/django.po +4 -4
  116. wagtail/contrib/search_promotions/locale/es/LC_MESSAGES/django.po +6 -6
  117. wagtail/contrib/search_promotions/locale/et/LC_MESSAGES/django.po +4 -4
  118. wagtail/contrib/search_promotions/locale/fa/LC_MESSAGES/django.po +4 -4
  119. wagtail/contrib/search_promotions/locale/fi/LC_MESSAGES/django.po +6 -6
  120. wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.mo +0 -0
  121. wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.po +9 -6
  122. wagtail/contrib/search_promotions/locale/gl/LC_MESSAGES/django.po +6 -6
  123. wagtail/contrib/search_promotions/locale/hr_HR/LC_MESSAGES/django.po +8 -8
  124. wagtail/contrib/search_promotions/locale/hu/LC_MESSAGES/django.po +4 -4
  125. wagtail/contrib/search_promotions/locale/id_ID/LC_MESSAGES/django.po +4 -4
  126. wagtail/contrib/search_promotions/locale/is_IS/LC_MESSAGES/django.po +8 -8
  127. wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.po +6 -6
  128. wagtail/contrib/search_promotions/locale/ja/LC_MESSAGES/django.po +4 -4
  129. wagtail/contrib/search_promotions/locale/ko/LC_MESSAGES/django.po +4 -4
  130. wagtail/contrib/search_promotions/locale/lt/LC_MESSAGES/django.po +6 -6
  131. wagtail/contrib/search_promotions/locale/nb/LC_MESSAGES/django.po +4 -4
  132. wagtail/contrib/search_promotions/locale/nl/LC_MESSAGES/django.po +6 -6
  133. wagtail/contrib/search_promotions/locale/pl/LC_MESSAGES/django.po +9 -9
  134. wagtail/contrib/search_promotions/locale/pt_BR/LC_MESSAGES/django.po +4 -4
  135. wagtail/contrib/search_promotions/locale/pt_PT/LC_MESSAGES/django.po +4 -4
  136. wagtail/contrib/search_promotions/locale/ro/LC_MESSAGES/django.po +4 -4
  137. wagtail/contrib/search_promotions/locale/ru/LC_MESSAGES/django.po +9 -9
  138. wagtail/contrib/search_promotions/locale/sk_SK/LC_MESSAGES/django.po +4 -4
  139. wagtail/contrib/search_promotions/locale/sl/LC_MESSAGES/django.mo +0 -0
  140. wagtail/contrib/search_promotions/locale/sl/LC_MESSAGES/django.po +62 -8
  141. wagtail/contrib/search_promotions/locale/sr/LC_MESSAGES/django.po +2 -2
  142. wagtail/contrib/search_promotions/locale/sv/LC_MESSAGES/django.mo +0 -0
  143. wagtail/contrib/search_promotions/locale/sv/LC_MESSAGES/django.po +9 -6
  144. wagtail/contrib/search_promotions/locale/th/LC_MESSAGES/django.po +4 -4
  145. wagtail/contrib/search_promotions/locale/tr/LC_MESSAGES/django.po +4 -4
  146. wagtail/contrib/search_promotions/locale/tr_TR/LC_MESSAGES/django.po +4 -4
  147. wagtail/contrib/search_promotions/locale/uk/LC_MESSAGES/django.po +4 -4
  148. wagtail/contrib/search_promotions/locale/zh_Hans/LC_MESSAGES/django.po +2 -2
  149. wagtail/contrib/search_promotions/locale/zh_Hant/LC_MESSAGES/django.po +2 -2
  150. wagtail/contrib/settings/locale/be/LC_MESSAGES/django.po +3 -3
  151. wagtail/contrib/settings/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  152. wagtail/contrib/settings/locale/pl/LC_MESSAGES/django.po +3 -3
  153. wagtail/contrib/settings/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  154. wagtail/contrib/settings/locale/ru/LC_MESSAGES/django.po +3 -3
  155. wagtail/contrib/settings/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  156. wagtail/contrib/settings/locale/sk_SK/LC_MESSAGES/django.po +10 -1
  157. wagtail/contrib/settings/locale/sl/LC_MESSAGES/django.po +2 -2
  158. wagtail/contrib/settings/locale/sr/LC_MESSAGES/django.po +2 -2
  159. wagtail/contrib/simple_translation/locale/be/LC_MESSAGES/django.po +3 -3
  160. wagtail/contrib/simple_translation/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  161. wagtail/contrib/simple_translation/locale/pl/LC_MESSAGES/django.po +3 -3
  162. wagtail/contrib/simple_translation/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  163. wagtail/contrib/simple_translation/locale/ru/LC_MESSAGES/django.po +3 -3
  164. wagtail/contrib/simple_translation/locale/sl/LC_MESSAGES/django.po +2 -2
  165. wagtail/contrib/styleguide/locale/be/LC_MESSAGES/django.po +3 -3
  166. wagtail/contrib/styleguide/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  167. wagtail/contrib/styleguide/locale/pl/LC_MESSAGES/django.po +3 -3
  168. wagtail/contrib/styleguide/locale/ru/LC_MESSAGES/django.po +3 -3
  169. wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  170. wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.po +5 -1
  171. wagtail/contrib/styleguide/locale/sl/LC_MESSAGES/django.po +2 -2
  172. wagtail/contrib/styleguide/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  173. wagtail/contrib/styleguide/locale/zh_Hans/LC_MESSAGES/django.po +3 -0
  174. wagtail/contrib/table_block/locale/be/LC_MESSAGES/django.po +3 -3
  175. wagtail/contrib/table_block/locale/fr/LC_MESSAGES/django.mo +0 -0
  176. wagtail/contrib/table_block/locale/fr/LC_MESSAGES/django.po +27 -1
  177. wagtail/contrib/table_block/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  178. wagtail/contrib/table_block/locale/pl/LC_MESSAGES/django.po +3 -3
  179. wagtail/contrib/table_block/locale/ru/LC_MESSAGES/django.po +3 -3
  180. wagtail/contrib/table_block/locale/sl/LC_MESSAGES/django.mo +0 -0
  181. wagtail/contrib/table_block/locale/sl/LC_MESSAGES/django.po +29 -3
  182. wagtail/contrib/typed_table_block/locale/be/LC_MESSAGES/django.po +3 -3
  183. wagtail/contrib/typed_table_block/locale/fr/LC_MESSAGES/django.mo +0 -0
  184. wagtail/contrib/typed_table_block/locale/fr/LC_MESSAGES/django.po +12 -1
  185. wagtail/contrib/typed_table_block/locale/pl/LC_MESSAGES/django.po +3 -3
  186. wagtail/contrib/typed_table_block/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  187. wagtail/contrib/typed_table_block/locale/ru/LC_MESSAGES/django.po +3 -3
  188. wagtail/contrib/typed_table_block/locale/sl/LC_MESSAGES/django.mo +0 -0
  189. wagtail/contrib/typed_table_block/locale/sl/LC_MESSAGES/django.po +14 -4
  190. wagtail/documents/locale/ar/LC_MESSAGES/django.po +8 -8
  191. wagtail/documents/locale/be/LC_MESSAGES/django.po +11 -11
  192. wagtail/documents/locale/bg/LC_MESSAGES/django.po +4 -4
  193. wagtail/documents/locale/ca/LC_MESSAGES/django.mo +0 -0
  194. wagtail/documents/locale/ca/LC_MESSAGES/django.po +12 -11
  195. wagtail/documents/locale/cs/LC_MESSAGES/django.po +6 -6
  196. wagtail/documents/locale/de/LC_MESSAGES/django.po +10 -8
  197. wagtail/documents/locale/el/LC_MESSAGES/django.po +8 -8
  198. wagtail/documents/locale/es/LC_MESSAGES/django.po +8 -8
  199. wagtail/documents/locale/et/LC_MESSAGES/django.po +6 -6
  200. wagtail/documents/locale/fa/LC_MESSAGES/django.mo +0 -0
  201. wagtail/documents/locale/fa/LC_MESSAGES/django.po +17 -8
  202. wagtail/documents/locale/fi/LC_MESSAGES/django.po +10 -10
  203. wagtail/documents/locale/fr/LC_MESSAGES/django.po +6 -6
  204. wagtail/documents/locale/gl/LC_MESSAGES/django.po +8 -8
  205. wagtail/documents/locale/hr_HR/LC_MESSAGES/django.po +14 -14
  206. wagtail/documents/locale/hu/LC_MESSAGES/django.po +12 -12
  207. wagtail/documents/locale/id_ID/LC_MESSAGES/django.po +6 -6
  208. wagtail/documents/locale/is_IS/LC_MESSAGES/django.po +8 -8
  209. wagtail/documents/locale/it/LC_MESSAGES/django.po +8 -8
  210. wagtail/documents/locale/ja/LC_MESSAGES/django.po +8 -8
  211. wagtail/documents/locale/ko/LC_MESSAGES/django.po +8 -8
  212. wagtail/documents/locale/lt/LC_MESSAGES/django.po +8 -8
  213. wagtail/documents/locale/mi/LC_MESSAGES/django.po +10 -10
  214. wagtail/documents/locale/mn/LC_MESSAGES/django.po +5 -4
  215. wagtail/documents/locale/nb/LC_MESSAGES/django.po +6 -6
  216. wagtail/documents/locale/nl/LC_MESSAGES/django.po +8 -8
  217. wagtail/documents/locale/pl/LC_MESSAGES/django.po +11 -11
  218. wagtail/documents/locale/pt_BR/LC_MESSAGES/django.po +8 -8
  219. wagtail/documents/locale/pt_PT/LC_MESSAGES/django.po +8 -8
  220. wagtail/documents/locale/ro/LC_MESSAGES/django.po +8 -8
  221. wagtail/documents/locale/ru/LC_MESSAGES/django.po +9 -9
  222. wagtail/documents/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  223. wagtail/documents/locale/sk_SK/LC_MESSAGES/django.po +55 -12
  224. wagtail/documents/locale/sl/LC_MESSAGES/django.po +10 -10
  225. wagtail/documents/locale/sr/LC_MESSAGES/django.po +2 -2
  226. wagtail/documents/locale/sv/LC_MESSAGES/django.po +6 -6
  227. wagtail/documents/locale/th/LC_MESSAGES/django.po +8 -8
  228. wagtail/documents/locale/tr/LC_MESSAGES/django.po +8 -8
  229. wagtail/documents/locale/tr_TR/LC_MESSAGES/django.po +8 -8
  230. wagtail/documents/locale/uk/LC_MESSAGES/django.po +8 -8
  231. wagtail/documents/locale/zh/LC_MESSAGES/django.po +2 -2
  232. wagtail/documents/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  233. wagtail/documents/locale/zh_Hans/LC_MESSAGES/django.po +11 -5
  234. wagtail/documents/locale/zh_Hant/LC_MESSAGES/django.po +4 -4
  235. wagtail/embeds/locale/be/LC_MESSAGES/django.po +3 -3
  236. wagtail/embeds/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  237. wagtail/embeds/locale/pl/LC_MESSAGES/django.po +3 -3
  238. wagtail/embeds/locale/ru/LC_MESSAGES/django.po +3 -3
  239. wagtail/embeds/locale/sl/LC_MESSAGES/django.po +2 -2
  240. wagtail/images/locale/ar/LC_MESSAGES/django.po +6 -6
  241. wagtail/images/locale/be/LC_MESSAGES/django.po +3 -3
  242. wagtail/images/locale/ca/LC_MESSAGES/django.po +8 -8
  243. wagtail/images/locale/cs/LC_MESSAGES/django.po +8 -8
  244. wagtail/images/locale/cy/LC_MESSAGES/django.po +8 -8
  245. wagtail/images/locale/de/LC_MESSAGES/django.po +6 -6
  246. wagtail/images/locale/el/LC_MESSAGES/django.po +8 -8
  247. wagtail/images/locale/es/LC_MESSAGES/django.po +10 -10
  248. wagtail/images/locale/et/LC_MESSAGES/django.po +8 -8
  249. wagtail/images/locale/fa/LC_MESSAGES/django.mo +0 -0
  250. wagtail/images/locale/fa/LC_MESSAGES/django.po +28 -9
  251. wagtail/images/locale/fi/LC_MESSAGES/django.po +8 -8
  252. wagtail/images/locale/fr/LC_MESSAGES/django.po +6 -6
  253. wagtail/images/locale/gl/LC_MESSAGES/django.po +8 -8
  254. wagtail/images/locale/hr_HR/LC_MESSAGES/django.po +8 -8
  255. wagtail/images/locale/hu/LC_MESSAGES/django.po +8 -8
  256. wagtail/images/locale/id_ID/LC_MESSAGES/django.po +6 -6
  257. wagtail/images/locale/is_IS/LC_MESSAGES/django.po +8 -8
  258. wagtail/images/locale/it/LC_MESSAGES/django.po +8 -8
  259. wagtail/images/locale/ja/LC_MESSAGES/django.po +8 -8
  260. wagtail/images/locale/ko/LC_MESSAGES/django.po +6 -6
  261. wagtail/images/locale/lt/LC_MESSAGES/django.po +8 -8
  262. wagtail/images/locale/nb/LC_MESSAGES/django.po +8 -8
  263. wagtail/images/locale/nl/LC_MESSAGES/django.po +8 -8
  264. wagtail/images/locale/pl/LC_MESSAGES/django.po +11 -11
  265. wagtail/images/locale/pt_BR/LC_MESSAGES/django.po +8 -8
  266. wagtail/images/locale/pt_PT/LC_MESSAGES/django.po +8 -8
  267. wagtail/images/locale/ro/LC_MESSAGES/django.po +8 -8
  268. wagtail/images/locale/ru/LC_MESSAGES/django.po +11 -11
  269. wagtail/images/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  270. wagtail/images/locale/sk_SK/LC_MESSAGES/django.po +23 -8
  271. wagtail/images/locale/sl/LC_MESSAGES/django.mo +0 -0
  272. wagtail/images/locale/sl/LC_MESSAGES/django.po +24 -12
  273. wagtail/images/locale/sv/LC_MESSAGES/django.mo +0 -0
  274. wagtail/images/locale/sv/LC_MESSAGES/django.po +20 -8
  275. wagtail/images/locale/tet/LC_MESSAGES/django.po +4 -4
  276. wagtail/images/locale/th/LC_MESSAGES/django.po +8 -8
  277. wagtail/images/locale/tr/LC_MESSAGES/django.po +6 -6
  278. wagtail/images/locale/tr_TR/LC_MESSAGES/django.po +6 -6
  279. wagtail/images/locale/uk/LC_MESSAGES/django.po +8 -8
  280. wagtail/images/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  281. wagtail/images/locale/zh_Hans/LC_MESSAGES/django.po +49 -5
  282. wagtail/images/locale/zh_Hant/LC_MESSAGES/django.po +4 -4
  283. wagtail/images/models.py +1 -0
  284. wagtail/images/tests/test_admin_views.py +32 -0
  285. wagtail/images/tests/test_image_operations.py +12 -0
  286. wagtail/images/tests/tests.py +27 -2
  287. wagtail/images/views/images.py +7 -3
  288. wagtail/images/views/serve.py +1 -0
  289. wagtail/locale/be/LC_MESSAGES/django.po +3 -3
  290. wagtail/locale/fa/LC_MESSAGES/django.mo +0 -0
  291. wagtail/locale/fa/LC_MESSAGES/django.po +3 -0
  292. wagtail/locale/fr/LC_MESSAGES/django.mo +0 -0
  293. wagtail/locale/fr/LC_MESSAGES/django.po +23 -4
  294. wagtail/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  295. wagtail/locale/pl/LC_MESSAGES/django.po +3 -3
  296. wagtail/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  297. wagtail/locale/ru/LC_MESSAGES/django.po +3 -3
  298. wagtail/locale/sl/LC_MESSAGES/django.po +2 -2
  299. wagtail/locale/sv/LC_MESSAGES/django.mo +0 -0
  300. wagtail/locale/sv/LC_MESSAGES/django.po +11 -2
  301. wagtail/locales/locale/be/LC_MESSAGES/django.po +3 -3
  302. wagtail/locales/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  303. wagtail/locales/locale/pl/LC_MESSAGES/django.po +3 -3
  304. wagtail/locales/locale/ru/LC_MESSAGES/django.po +3 -3
  305. wagtail/locales/locale/sl/LC_MESSAGES/django.po +2 -2
  306. wagtail/search/locale/be/LC_MESSAGES/django.po +3 -3
  307. wagtail/search/locale/fa/LC_MESSAGES/django.mo +0 -0
  308. wagtail/search/locale/fa/LC_MESSAGES/django.po +24 -0
  309. wagtail/search/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  310. wagtail/search/locale/pl/LC_MESSAGES/django.po +3 -3
  311. wagtail/search/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  312. wagtail/search/locale/pt_BR/LC_MESSAGES/django.po +2 -2
  313. wagtail/search/locale/ru/LC_MESSAGES/django.po +3 -3
  314. wagtail/search/locale/sl/LC_MESSAGES/django.po +2 -2
  315. wagtail/search/tests/test_queries.py +24 -0
  316. wagtail/search/utils.py +6 -12
  317. wagtail/sites/locale/be/LC_MESSAGES/django.po +3 -3
  318. wagtail/sites/locale/hr_HR/LC_MESSAGES/django.po +2 -2
  319. wagtail/sites/locale/pl/LC_MESSAGES/django.po +3 -3
  320. wagtail/sites/locale/ru/LC_MESSAGES/django.po +3 -3
  321. wagtail/sites/locale/sl/LC_MESSAGES/django.po +2 -2
  322. wagtail/sites/locale/sr/LC_MESSAGES/django.po +2 -2
  323. wagtail/snippets/locale/be/LC_MESSAGES/django.po +3 -3
  324. wagtail/snippets/locale/ca/LC_MESSAGES/django.po +6 -6
  325. wagtail/snippets/locale/de/LC_MESSAGES/django.po +5 -5
  326. wagtail/snippets/locale/es/LC_MESSAGES/django.po +6 -6
  327. wagtail/snippets/locale/fa/LC_MESSAGES/django.mo +0 -0
  328. wagtail/snippets/locale/fa/LC_MESSAGES/django.po +17 -1
  329. wagtail/snippets/locale/fr/LC_MESSAGES/django.po +5 -5
  330. wagtail/snippets/locale/gl/LC_MESSAGES/django.po +6 -6
  331. wagtail/snippets/locale/hr_HR/LC_MESSAGES/django.po +8 -8
  332. wagtail/snippets/locale/hu/LC_MESSAGES/django.po +7 -7
  333. wagtail/snippets/locale/is_IS/LC_MESSAGES/django.po +5 -5
  334. wagtail/snippets/locale/it/LC_MESSAGES/django.po +5 -5
  335. wagtail/snippets/locale/ko/LC_MESSAGES/django.po +6 -6
  336. wagtail/snippets/locale/nb/LC_MESSAGES/django.po +6 -6
  337. wagtail/snippets/locale/nl/LC_MESSAGES/django.po +8 -8
  338. wagtail/snippets/locale/pl/LC_MESSAGES/django.po +9 -9
  339. wagtail/snippets/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  340. wagtail/snippets/locale/ro/LC_MESSAGES/django.po +6 -6
  341. wagtail/snippets/locale/ru/LC_MESSAGES/django.po +8 -8
  342. wagtail/snippets/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  343. wagtail/snippets/locale/sk_SK/LC_MESSAGES/django.po +3 -0
  344. wagtail/snippets/locale/sl/LC_MESSAGES/django.po +8 -8
  345. wagtail/snippets/locale/sr/LC_MESSAGES/django.po +2 -2
  346. wagtail/snippets/locale/sv/LC_MESSAGES/django.po +6 -6
  347. wagtail/snippets/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  348. wagtail/snippets/locale/zh_Hans/LC_MESSAGES/django.po +40 -1
  349. wagtail/tests/test_utils.py +28 -1
  350. wagtail/users/locale/ar/LC_MESSAGES/django.po +4 -4
  351. wagtail/users/locale/be/LC_MESSAGES/django.po +9 -9
  352. wagtail/users/locale/ca/LC_MESSAGES/django.po +8 -8
  353. wagtail/users/locale/cs/LC_MESSAGES/django.po +6 -6
  354. wagtail/users/locale/cy/LC_MESSAGES/django.po +8 -8
  355. wagtail/users/locale/de/LC_MESSAGES/django.po +8 -8
  356. wagtail/users/locale/el/LC_MESSAGES/django.po +4 -4
  357. wagtail/users/locale/es/LC_MESSAGES/django.po +8 -8
  358. wagtail/users/locale/et/LC_MESSAGES/django.po +8 -8
  359. wagtail/users/locale/fa/LC_MESSAGES/django.mo +0 -0
  360. wagtail/users/locale/fa/LC_MESSAGES/django.po +69 -7
  361. wagtail/users/locale/fi/LC_MESSAGES/django.po +8 -8
  362. wagtail/users/locale/fr/LC_MESSAGES/django.mo +0 -0
  363. wagtail/users/locale/fr/LC_MESSAGES/django.po +52 -11
  364. wagtail/users/locale/gl/LC_MESSAGES/django.po +8 -8
  365. wagtail/users/locale/hr_HR/LC_MESSAGES/django.po +10 -10
  366. wagtail/users/locale/hu/LC_MESSAGES/django.po +8 -8
  367. wagtail/users/locale/id_ID/LC_MESSAGES/django.po +4 -4
  368. wagtail/users/locale/is_IS/LC_MESSAGES/django.po +8 -8
  369. wagtail/users/locale/it/LC_MESSAGES/django.po +8 -8
  370. wagtail/users/locale/ja/LC_MESSAGES/django.po +4 -4
  371. wagtail/users/locale/ko/LC_MESSAGES/django.po +4 -4
  372. wagtail/users/locale/lt/LC_MESSAGES/django.po +4 -4
  373. wagtail/users/locale/lv/LC_MESSAGES/django.po +4 -4
  374. wagtail/users/locale/mn/LC_MESSAGES/django.po +5 -4
  375. wagtail/users/locale/nb/LC_MESSAGES/django.po +8 -8
  376. wagtail/users/locale/nl/LC_MESSAGES/django.po +6 -6
  377. wagtail/users/locale/pl/LC_MESSAGES/django.po +9 -9
  378. wagtail/users/locale/pt_BR/LC_MESSAGES/django.po +9 -9
  379. wagtail/users/locale/pt_PT/LC_MESSAGES/django.po +8 -8
  380. wagtail/users/locale/ro/LC_MESSAGES/django.po +8 -8
  381. wagtail/users/locale/ru/LC_MESSAGES/django.po +11 -11
  382. wagtail/users/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  383. wagtail/users/locale/sk_SK/LC_MESSAGES/django.po +12 -5
  384. wagtail/users/locale/sl/LC_MESSAGES/django.mo +0 -0
  385. wagtail/users/locale/sl/LC_MESSAGES/django.po +56 -12
  386. wagtail/users/locale/sv/LC_MESSAGES/django.mo +0 -0
  387. wagtail/users/locale/sv/LC_MESSAGES/django.po +49 -10
  388. wagtail/users/locale/tet/LC_MESSAGES/django.po +4 -4
  389. wagtail/users/locale/th/LC_MESSAGES/django.po +4 -4
  390. wagtail/users/locale/tr/LC_MESSAGES/django.po +4 -4
  391. wagtail/users/locale/tr_TR/LC_MESSAGES/django.po +4 -4
  392. wagtail/users/locale/uk/LC_MESSAGES/django.po +8 -8
  393. wagtail/users/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  394. wagtail/users/locale/zh_Hans/LC_MESSAGES/django.po +49 -5
  395. wagtail/users/locale/zh_Hant/LC_MESSAGES/django.po +2 -2
  396. wagtail/utils/utils.py +26 -0
  397. wagtail-6.1.3.dist-info/METADATA +78 -0
  398. {wagtail-6.1.2.dist-info → wagtail-6.1.3.dist-info}/RECORD +402 -401
  399. {wagtail-6.1.2.dist-info → wagtail-6.1.3.dist-info}/WHEEL +1 -1
  400. wagtail-6.1.2.dist-info/METADATA +0 -78
  401. {wagtail-6.1.2.dist-info → wagtail-6.1.3.dist-info}/LICENSE +0 -0
  402. {wagtail-6.1.2.dist-info → wagtail-6.1.3.dist-info}/entry_points.txt +0 -0
  403. {wagtail-6.1.2.dist-info → wagtail-6.1.3.dist-info}/top_level.txt +0 -0
@@ -390,19 +390,19 @@ msgstr "Вибачте, жодне зображення не відповіда
390
390
 
391
391
  #, python-format
392
392
  msgid ""
393
- "You haven't uploaded any images in this collection. Why not <a href="
394
- "\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
393
+ "You haven't uploaded any images in this collection. Why not <a "
394
+ "href=\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
395
395
  msgstr ""
396
- "Ви не завантажили жодного зображення до колекції. Чому б <a href="
397
- "\"%(wagtailimages_add_image_url)s\">не завантажити якесь зараз</a>?"
396
+ "Ви не завантажили жодного зображення до колекції. Чому б <a "
397
+ "href=\"%(wagtailimages_add_image_url)s\">не завантажити якесь зараз</a>?"
398
398
 
399
399
  #, python-format
400
400
  msgid ""
401
- "You haven't uploaded any images. Why not <a href="
402
- "\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
401
+ "You haven't uploaded any images. Why not <a "
402
+ "href=\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
403
403
  msgstr ""
404
- "Ви не завантажили жодного зображення. Чому б <a href="
405
- "\"%(wagtailimages_add_image_url)s\">не завантажити якесь зараз</a>?"
404
+ "Ви не завантажили жодного зображення. Чому б <a "
405
+ "href=\"%(wagtailimages_add_image_url)s\">не завантажити якесь зараз</a>?"
406
406
 
407
407
  msgid "Preview"
408
408
  msgstr "Попередній перегляд"
@@ -14,6 +14,7 @@
14
14
  # Matt Westcott <matthew@torchbox.com>, 2022
15
15
  # Vincent Zhao <zhaopu2008@gmail.com>, 2017
16
16
  # Yin Guanhao <sopium@mysterious.site>, 2020-2021
17
+ # Yu Cheng, 2024
17
18
  # 汇民 王 <whuim@qq.com>, 2017-2021
18
19
  msgid ""
19
20
  msgstr ""
@@ -21,7 +22,7 @@ msgstr ""
21
22
  "Report-Msgid-Bugs-To: \n"
22
23
  "POT-Creation-Date: 2024-05-02 10:04+0100\n"
23
24
  "PO-Revision-Date: 2014-02-20 21:05+0000\n"
24
- "Last-Translator: Ford Guo <agile.guo@gmail.com>, 2023\n"
25
+ "Last-Translator: Yu Cheng, 2024\n"
25
26
  "Language-Team: Chinese (China) (http://app.transifex.com/torchbox/wagtail/"
26
27
  "language/zh_CN/)\n"
27
28
  "MIME-Version: 1.0\n"
@@ -47,6 +48,13 @@ msgstr "支持的格式:%(supported_formats)s。"
47
48
  msgid "Not a supported image format. Supported formats: %(supported_formats)s."
48
49
  msgstr "不支持的图片格式。支持类型如下: %(supported_formats)s"
49
50
 
51
+ #, python-format
52
+ msgid ""
53
+ "Not a valid .%(extension)s image. The extension does not match the file "
54
+ "format (%(image_format)s)"
55
+ msgstr ""
56
+ "不是有效的 .%(extension)s 图像。扩展名与文件格式不匹配 (%(image_format)s)"
57
+
50
58
  #, python-format
51
59
  msgid ""
52
60
  "This file is too big (%(file_size)s). Maximum filesize %(max_filesize)s."
@@ -184,6 +192,11 @@ msgstr "是的,添加"
184
192
  msgid "No, don't add"
185
193
  msgstr "否,不添加"
186
194
 
195
+ #, python-format
196
+ msgid "Add 1 image to new collection"
197
+ msgid_plural "Add %(counter)s images to new collection"
198
+ msgstr[0] "将 %(counter)s 张图像添加到新集合"
199
+
187
200
  msgid "Add images to collection"
188
201
  msgstr "将图片添加到集合"
189
202
 
@@ -227,6 +240,13 @@ msgstr "否,不删除"
227
240
  msgid "Popular tags"
228
241
  msgstr "热门标签"
229
242
 
243
+ msgid ""
244
+ "Upload successful. However, your new image seems to be a duplicate of an "
245
+ "existing image. You may delete it if it wasn't required."
246
+ msgstr ""
247
+ "上传成功。但是,您上传的新图像似乎与现有图像重复。如果不需要,您可以将其删"
248
+ "除。"
249
+
230
250
  msgid "Existing"
231
251
  msgstr "已存在"
232
252
 
@@ -246,6 +266,9 @@ msgstr "最新图片"
246
266
  msgid "Select %(title)s"
247
267
  msgstr "选择 %(title)s"
248
268
 
269
+ msgid "You haven't uploaded any images in this collection."
270
+ msgstr "您尚未上传此集合中的任何图片。"
271
+
249
272
  msgid ""
250
273
  "Why not <a class=\"upload-one-now\" href=\"#tab-upload\" data-tab-"
251
274
  "trigger>upload one now</a>?"
@@ -319,6 +342,9 @@ msgstr "未找到文件"
319
342
  msgid "Usage"
320
343
  msgstr "使用情况"
321
344
 
345
+ msgid "Sort by"
346
+ msgstr "排序方式"
347
+
322
348
  msgid "Select all images in listing"
323
349
  msgstr "选择列表中的所有图片"
324
350
 
@@ -328,16 +354,16 @@ msgstr "对不起,没有符合\"<em>%(query_string)s</em>\"的图片。"
328
354
 
329
355
  #, python-format
330
356
  msgid ""
331
- "You haven't uploaded any images in this collection. Why not <a href="
332
- "\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
357
+ "You haven't uploaded any images in this collection. Why not <a "
358
+ "href=\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
333
359
  msgstr ""
334
360
  "此集合中还没有图片。为何不 <a href=\"%(wagtailimages_add_image_url)s\">上传一"
335
361
  "个</a> ?"
336
362
 
337
363
  #, python-format
338
364
  msgid ""
339
- "You haven't uploaded any images. Why not <a href="
340
- "\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
365
+ "You haven't uploaded any images. Why not <a "
366
+ "href=\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
341
367
  msgstr ""
342
368
  "还没上传图片呢。来<a href=\"%(wagtailimages_add_image_url)s\">上传一个</a>吧?"
343
369
 
@@ -347,6 +373,18 @@ msgstr "预览"
347
373
  msgid "URL"
348
374
  msgstr "URL"
349
375
 
376
+ msgid "Image URL"
377
+ msgstr "图片URL"
378
+
379
+ msgid "Copy URL"
380
+ msgstr "复制URL"
381
+
382
+ msgid "Copied to clipboard"
383
+ msgstr "已复制到剪贴板"
384
+
385
+ msgid "Copying to clipboard failed"
386
+ msgstr "复制到剪贴板失败"
387
+
350
388
  msgid "Add multiple images"
351
389
  msgstr "添加多个图片"
352
390
 
@@ -450,6 +488,12 @@ msgstr "标题: (A -> Z)"
450
488
  msgid "Title: (Z -> A)"
451
489
  msgstr "标题: (Z -> A)"
452
490
 
491
+ msgid "File size: (low to high)"
492
+ msgstr "文件大小:(从小到大)"
493
+
494
+ msgid "File size: (high to low)"
495
+ msgstr "文件大小:(从大到小)"
496
+
453
497
  msgid "Images"
454
498
  msgstr "图片"
455
499
 
@@ -223,16 +223,16 @@ msgstr "對不起,沒有符合\"<em>%(query_string)s</em>\"的圖片。"
223
223
 
224
224
  #, python-format
225
225
  msgid ""
226
- "You haven't uploaded any images in this collection. Why not <a href="
227
- "\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
226
+ "You haven't uploaded any images in this collection. Why not <a "
227
+ "href=\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
228
228
  msgstr ""
229
229
  "此集合中還沒有圖片。為何不 <a href=\"%(wagtailimages_add_image_url)s\">上傳一"
230
230
  "個</a> ?"
231
231
 
232
232
  #, python-format
233
233
  msgid ""
234
- "You haven't uploaded any images. Why not <a href="
235
- "\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
234
+ "You haven't uploaded any images. Why not <a "
235
+ "href=\"%(wagtailimages_add_image_url)s\">upload one now</a>?"
236
236
  msgstr ""
237
237
  "還沒上傳圖片呢。來<a href=\"%(wagtailimages_add_image_url)s\">上傳一個</a>吧?"
238
238
 
wagtail/images/models.py CHANGED
@@ -59,6 +59,7 @@ IMAGE_FORMAT_EXTENSIONS = {
59
59
  "gif": ".gif",
60
60
  "webp": ".webp",
61
61
  "svg": ".svg",
62
+ "ico": ".ico",
62
63
  }
63
64
 
64
65
 
@@ -1,6 +1,7 @@
1
1
  import datetime
2
2
  import json
3
3
  import urllib
4
+ from unittest.mock import patch
4
5
 
5
6
  from django.conf import settings
6
7
  from django.contrib.auth.models import Group, Permission
@@ -14,6 +15,8 @@ from django.utils.encoding import force_str
14
15
  from django.utils.html import escape, escapejs
15
16
  from django.utils.http import RFC3986_SUBDELIMS, urlencode
16
17
  from django.utils.safestring import mark_safe
18
+ from willow.optimizers.base import OptimizerBase
19
+ from willow.registry import registry
17
20
 
18
21
  from wagtail.admin.admin_url_finder import AdminURLFinder
19
22
  from wagtail.images import get_image_model
@@ -3519,6 +3522,35 @@ class TestPreviewView(WagtailTestUtils, TestCase):
3519
3522
  self.assertEqual(response.status_code, 200)
3520
3523
  self.assertEqual(response["Content-Type"], "image/png")
3521
3524
 
3525
+ def test_preview_with_optimizer(self):
3526
+ """
3527
+ Test that preview works with optimizers
3528
+
3529
+ Willow optimizers require
3530
+ """
3531
+
3532
+ class DummyOptimizer(OptimizerBase):
3533
+ library_name = "dummy"
3534
+ image_format = "png"
3535
+
3536
+ @classmethod
3537
+ def check_library(cls):
3538
+ return True
3539
+
3540
+ @classmethod
3541
+ def process(cls, file_path: str):
3542
+ pass
3543
+
3544
+ # Get the image
3545
+ with patch.object(registry, "_registered_optimizers", [DummyOptimizer]):
3546
+ response = self.client.get(
3547
+ reverse("wagtailimages:preview", args=(self.image.id, "fill-800x600"))
3548
+ )
3549
+
3550
+ # Check response
3551
+ self.assertEqual(response.status_code, 200)
3552
+ self.assertEqual(response["Content-Type"], "image/png")
3553
+
3522
3554
  def test_get_invalid_filter_spec(self):
3523
3555
  """
3524
3556
  Test that an invalid filter spec returns a 400 response
@@ -1,4 +1,5 @@
1
1
  from io import BytesIO
2
+ from pathlib import Path
2
3
  from unittest.mock import patch
3
4
 
4
5
  from django.test import TestCase, override_settings
@@ -11,6 +12,7 @@ from wagtail.images.exceptions import (
11
12
  )
12
13
  from wagtail.images.image_operations import TransformOperation
13
14
  from wagtail.images.models import Filter, Image
15
+ from wagtail.images.shortcuts import get_rendition_or_not_found
14
16
  from wagtail.images.tests.utils import (
15
17
  get_test_image_file,
16
18
  get_test_image_file_avif,
@@ -693,6 +695,16 @@ class TestFormatFilter(TestCase):
693
695
 
694
696
  self.assertEqual(out.format_name, "ico")
695
697
 
698
+ def test_ico_rendition(self):
699
+ fil = Filter(spec="width-400|format-ico")
700
+ good_image = Image.objects.create(
701
+ title="Test image",
702
+ file=get_test_image_file(),
703
+ )
704
+
705
+ rendition = get_rendition_or_not_found(good_image, fil)
706
+ self.assertEqual(Path(rendition.file.name).suffix, ".ico")
707
+
696
708
  def test_webp_lossless(self):
697
709
  fil = Filter(spec="width-400|format-webp-lossless")
698
710
  image = Image.objects.create(
@@ -1,6 +1,8 @@
1
1
  import os
2
2
  import unittest
3
+ from io import BytesIO
3
4
 
5
+ import willow
4
6
  from django import forms, template
5
7
  from django.conf import settings
6
8
  from django.core.exceptions import ImproperlyConfigured, ValidationError
@@ -9,6 +11,11 @@ from django.test import TestCase, override_settings
9
11
  from django.test.signals import setting_changed
10
12
  from django.urls import reverse
11
13
  from taggit.forms import TagField, TagWidget
14
+ from willow.image import (
15
+ AvifImageFile,
16
+ PNGImageFile,
17
+ SvgImageFile,
18
+ )
12
19
  from willow.image import ImageFile as WillowImageFile
13
20
 
14
21
  from wagtail.images import get_image_model, get_image_model_string
@@ -359,6 +366,9 @@ class TestFrontendServeView(TestCase):
359
366
  self.assertEqual(response.status_code, 200)
360
367
  self.assertTrue(response.streaming)
361
368
  self.assertEqual(response["Content-Type"], "image/png")
369
+ # Ensure the file can actually be read
370
+ image = willow.Image.open(b"".join(response.streaming_content))
371
+ self.assertIsInstance(image, PNGImageFile)
362
372
 
363
373
  def test_get_svg(self):
364
374
  image = Image.objects.create(title="Test SVG", file=get_test_image_file_svg())
@@ -375,6 +385,9 @@ class TestFrontendServeView(TestCase):
375
385
  self.assertEqual(response.status_code, 200)
376
386
  self.assertTrue(response.streaming)
377
387
  self.assertEqual(response["Content-Type"], "image/svg+xml")
388
+ # Ensure the file can actually be read
389
+ image = willow.Image.open(BytesIO(b"".join(response.streaming_content)))
390
+ self.assertIsInstance(image, SvgImageFile)
378
391
 
379
392
  @override_settings(WAGTAILIMAGES_FORMAT_CONVERSIONS={"avif": "avif"})
380
393
  def test_get_avif(self):
@@ -392,6 +405,9 @@ class TestFrontendServeView(TestCase):
392
405
  self.assertEqual(response.status_code, 200)
393
406
  self.assertTrue(response.streaming)
394
407
  self.assertEqual(response["Content-Type"], "image/avif")
408
+ # Ensure the file can actually be read
409
+ image = willow.Image.open(b"".join(response.streaming_content))
410
+ self.assertIsInstance(image, AvifImageFile)
395
411
 
396
412
  def test_get_with_extra_component(self):
397
413
  """
@@ -412,6 +428,9 @@ class TestFrontendServeView(TestCase):
412
428
  self.assertEqual(response.status_code, 200)
413
429
  self.assertTrue(response.streaming)
414
430
  self.assertEqual(response["Content-Type"], "image/png")
431
+ # Ensure the file can actually be read
432
+ image = willow.Image.open(b"".join(response.streaming_content))
433
+ self.assertIsInstance(image, PNGImageFile)
415
434
 
416
435
  def test_get_with_too_many_extra_components(self):
417
436
  """
@@ -443,6 +462,9 @@ class TestFrontendServeView(TestCase):
443
462
  self.assertEqual(response.status_code, 200)
444
463
  self.assertTrue(response.streaming)
445
464
  self.assertEqual(response["Content-Type"], "image/png")
465
+ # Ensure the file can actually be read
466
+ image = willow.Image.open(b"".join(response.streaming_content))
467
+ self.assertIsInstance(image, PNGImageFile)
446
468
 
447
469
  def test_get_with_redirect_action(self):
448
470
  signature = generate_signature(self.image.id, "fill-800x600")
@@ -472,7 +494,7 @@ class TestFrontendServeView(TestCase):
472
494
 
473
495
  def test_get_with_custom_key(self):
474
496
  """
475
- Test that that the key can be changed on the view
497
+ Test that the key can be changed on the view
476
498
  """
477
499
  # Generate signature
478
500
  signature = generate_signature(self.image.id, "fill-800x600", key="custom")
@@ -488,10 +510,13 @@ class TestFrontendServeView(TestCase):
488
510
 
489
511
  # Check response
490
512
  self.assertEqual(response.status_code, 200)
513
+ # Ensure the file can actually be read
514
+ image = willow.Image.open(b"".join(response.streaming_content))
515
+ self.assertIsInstance(image, PNGImageFile)
491
516
 
492
517
  def test_get_with_custom_key_using_default_key(self):
493
518
  """
494
- Test that that the key can be changed on the view
519
+ Test that the key can be changed on the view
495
520
 
496
521
  This tests that the default key no longer works when the key is changed on the view
497
522
  """
@@ -1,8 +1,9 @@
1
1
  import os
2
+ from tempfile import SpooledTemporaryFile
2
3
 
3
4
  from django.conf import settings
4
5
  from django.core.exceptions import PermissionDenied
5
- from django.http import HttpResponse, JsonResponse
6
+ from django.http import FileResponse, HttpResponse, JsonResponse
6
7
  from django.shortcuts import get_object_or_404, redirect
7
8
  from django.template.response import TemplateResponse
8
9
  from django.urls import reverse
@@ -291,8 +292,11 @@ def preview(request, image_id, filter_spec):
291
292
  image = get_object_or_404(get_image_model(), id=image_id)
292
293
 
293
294
  try:
294
- response = HttpResponse()
295
- image = Filter(spec=filter_spec).run(image, response)
295
+ # Temporary image needs to be an instance that Willow can run optimizers on
296
+ temp_image = SpooledTemporaryFile(max_size=settings.FILE_UPLOAD_MAX_MEMORY_SIZE)
297
+ image = Filter(spec=filter_spec).run(image, temp_image)
298
+ temp_image.seek(0)
299
+ response = FileResponse(temp_image)
296
300
  response["Content-Type"] = "image/" + image.format_name
297
301
  return response
298
302
  except InvalidFilterSpecError:
@@ -65,6 +65,7 @@ class ServeView(View):
65
65
  mime_type = willow_image.mime_type
66
66
 
67
67
  # Serve the file
68
+ rendition.file.open("rb")
68
69
  return FileResponse(rendition.file, content_type=mime_type)
69
70
 
70
71
  def redirect(self, rendition):
@@ -18,9 +18,9 @@ msgstr ""
18
18
  "Content-Type: text/plain; charset=UTF-8\n"
19
19
  "Content-Transfer-Encoding: 8bit\n"
20
20
  "Language: be\n"
21
- "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
22
- "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
23
- "%100>=11 && n%100<=14)? 2 : 3);\n"
21
+ "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
22
+ "n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
23
+ "(n%100>=11 && n%100<=14)? 2 : 3);\n"
24
24
 
25
25
  msgid "Wagtail API v2"
26
26
  msgstr "Wagtail API v2"
Binary file
@@ -55,6 +55,9 @@ msgstr "رمزعبور"
55
55
  msgid "The password you have entered is not correct. Please try again."
56
56
  msgstr "رمزعبور وارد شده درست نیست. لطفا مجددا سعی کنید."
57
57
 
58
+ msgid "Comment"
59
+ msgstr "نظر"
60
+
58
61
  msgid "Locked"
59
62
  msgstr "قفل شده"
60
63
 
Binary file
@@ -16,7 +16,7 @@
16
16
  # nahuel, 2014
17
17
  # nahuel, 2014
18
18
  # Sebastien Andrivet <sebastien@andrivet.com>, 2016
19
- # Sébastien Corbin <seb.corbin@gmail.com>, 2023
19
+ # Sébastien Corbin <seb.corbin@gmail.com>, 2023-2024
20
20
  # Tom Dyson <tom@torchbox.com>, 2015
21
21
  msgid ""
22
22
  msgstr ""
@@ -24,7 +24,7 @@ msgstr ""
24
24
  "Report-Msgid-Bugs-To: \n"
25
25
  "POT-Creation-Date: 2024-05-02 10:04+0100\n"
26
26
  "PO-Revision-Date: 2014-02-21 15:51+0000\n"
27
- "Last-Translator: Sébastien Corbin <seb.corbin@gmail.com>, 2023\n"
27
+ "Last-Translator: Sébastien Corbin <seb.corbin@gmail.com>, 2023-2024\n"
28
28
  "Language-Team: French (http://app.transifex.com/torchbox/wagtail/language/"
29
29
  "fr/)\n"
30
30
  "MIME-Version: 1.0\n"
@@ -496,8 +496,8 @@ msgid ""
496
496
  "There may only be one in progress or needs changes workflow state per page/"
497
497
  "snippet."
498
498
  msgstr ""
499
- "Il ne peut y avoir qu'un seul état de workflow « en cours » ou « "
500
- "modifications nécessaires » par page/fragment."
499
+ "Il ne peut y avoir qu'un seul état de workflow « en cours » ou "
500
+ "« modifications nécessaires » par page/fragment."
501
501
 
502
502
  #, python-format
503
503
  msgid "Workflow '%(workflow_name)s' on %(model_name)s '%(title)s': %(status)s"
@@ -607,6 +607,9 @@ msgstr "permission de collection de groupe"
607
607
  msgid "group collection permissions"
608
608
  msgstr "permission de collection de groupe"
609
609
 
610
+ msgid "for content type"
611
+ msgstr "pour le type de contenu"
612
+
610
613
  msgid "uploaded by user"
611
614
  msgstr "transféré par l'utilisateur"
612
615
 
@@ -689,9 +692,25 @@ msgstr ""
689
692
  msgid "Public"
690
693
  msgstr "Publique"
691
694
 
695
+ msgid "Private, accessible with a shared password"
696
+ msgstr "Privé, accessible avec un mot de passe"
697
+
698
+ msgid "Private, accessible to any logged-in users"
699
+ msgstr "Privé, accessible à tout utilisateur connecté"
700
+
692
701
  msgid "Private, accessible to users in specific groups"
693
702
  msgstr "Privée, accessible aux utilisateurs dans des groupes spécifiques"
694
703
 
704
+ msgid "shared password"
705
+ msgstr "mot de passe partagé"
706
+
707
+ msgid ""
708
+ "Shared passwords should not be used to protect sensitive content. Anyone who "
709
+ "has this password will be able to view the content."
710
+ msgstr ""
711
+ "Les mots de passe partagé ne devraient pas être utilisés pour protéger du "
712
+ "contenu sensible. N'importe qui ayant ce mot de passe pourra voir le contenu."
713
+
695
714
  msgid "view restriction"
696
715
  msgstr "confidentialité"
697
716
 
@@ -17,8 +17,8 @@ msgstr ""
17
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
18
  "Content-Transfer-Encoding: 8bit\n"
19
19
  "Language: hr_HR\n"
20
- "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
21
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
20
+ "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
21
+ "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
22
22
 
23
23
  msgid "Wagtail API v2"
24
24
  msgstr "Wagtail API v2"
@@ -25,9 +25,9 @@ msgstr ""
25
25
  "Content-Type: text/plain; charset=UTF-8\n"
26
26
  "Content-Transfer-Encoding: 8bit\n"
27
27
  "Language: pl\n"
28
- "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
29
- "%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
30
- "%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
28
+ "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && "
29
+ "(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && "
30
+ "n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
31
31
 
32
32
  msgid "Wagtail API v2"
33
33
  msgstr "API Wagtail v2"
@@ -14,7 +14,7 @@
14
14
  # Luiz Boaretto <lboaretto@gmail.com>, 2016
15
15
  # Luiz Boaretto <lboaretto@gmail.com>, 2016-2018,2020-2021,2024
16
16
  # Marcio Mazza <marciomazza@gmail.com>, 2016
17
- # Rodrigo de Almeida Sottomaior Macedo <sottomaiormacedotec@gmail.com>, 2022
17
+ # Rodrigo de Almeida Sottomaior Macedo <sottomaiormacedotec@sottomaiormacedo.tech>, 2022
18
18
  # Thiago Cangussu <cng.thg@gmail.com>, 2014
19
19
  msgid ""
20
20
  msgstr ""
@@ -37,9 +37,9 @@ msgstr ""
37
37
  "Content-Type: text/plain; charset=UTF-8\n"
38
38
  "Content-Transfer-Encoding: 8bit\n"
39
39
  "Language: ru\n"
40
- "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
41
- "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
42
- "%100>=11 && n%100<=14)? 2 : 3);\n"
40
+ "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
41
+ "n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
42
+ "(n%100>=11 && n%100<=14)? 2 : 3);\n"
43
43
 
44
44
  msgid "Wagtail API v2"
45
45
  msgstr "Wagtail API v2"
@@ -24,8 +24,8 @@ msgstr ""
24
24
  "Content-Type: text/plain; charset=UTF-8\n"
25
25
  "Content-Transfer-Encoding: 8bit\n"
26
26
  "Language: sl\n"
27
- "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
28
- "%100==4 ? 2 : 3);\n"
27
+ "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
28
+ "n%100==4 ? 2 : 3);\n"
29
29
 
30
30
  msgid "Wagtail API v2"
31
31
  msgstr "Wagtail API v2"
Binary file
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # Translators:
6
6
  # Jim Brouzoulis <jim.brouzoulis@chalmers.se>, 2017
7
- # Martin Sandström <martin@marteinn.se>, 2020-2021,2023
7
+ # Martin Sandström <martin@marteinn.se>, 2020-2021,2023-2024
8
8
  # Philip Andersen <renegadevi@codeofmagi.net>, 2018-2019
9
9
  # Thomas Kunambi <kunambi@gmail.com>, 2016-2017,2021-2022
10
10
  msgid ""
@@ -13,7 +13,7 @@ msgstr ""
13
13
  "Report-Msgid-Bugs-To: \n"
14
14
  "POT-Creation-Date: 2024-05-02 10:04+0100\n"
15
15
  "PO-Revision-Date: 2014-02-21 15:51+0000\n"
16
- "Last-Translator: Martin Sandström <martin@marteinn.se>, 2020-2021,2023\n"
16
+ "Last-Translator: Martin Sandström <martin@marteinn.se>, 2020-2021,2023-2024\n"
17
17
  "Language-Team: Swedish (http://app.transifex.com/torchbox/wagtail/language/"
18
18
  "sv/)\n"
19
19
  "MIME-Version: 1.0\n"
@@ -101,6 +101,12 @@ msgstr "<b>'{title}' låstes</b> av <b>{user}</b> vid <b>{datetime}</b>."
101
101
  msgid "<b>'{title}' is locked</b>."
102
102
  msgstr "<b>'{title}' är låst</b>."
103
103
 
104
+ msgid "Locked by you"
105
+ msgstr "Låst av dig"
106
+
107
+ msgid "Locked by another user"
108
+ msgstr "Låst av en annan användare"
109
+
104
110
  #, python-format
105
111
  msgid "This %(model_name)s is currently awaiting moderation."
106
112
  msgstr "Denna %(model_name)s väntar på moderering."
@@ -583,6 +589,9 @@ msgstr "Publik"
583
589
  msgid "Private, accessible to users in specific groups"
584
590
  msgstr "Privat, åtkomligen för användare i specifika grupper"
585
591
 
592
+ msgid "shared password"
593
+ msgstr "delat lösenord"
594
+
586
595
  msgid "view restriction"
587
596
  msgstr "visningsrestriktion"
588
597
 
@@ -22,9 +22,9 @@ msgstr ""
22
22
  "Content-Type: text/plain; charset=UTF-8\n"
23
23
  "Content-Transfer-Encoding: 8bit\n"
24
24
  "Language: be\n"
25
- "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
26
- "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
27
- "%100>=11 && n%100<=14)? 2 : 3);\n"
25
+ "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
26
+ "n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
27
+ "(n%100>=11 && n%100<=14)? 2 : 3);\n"
28
28
 
29
29
  msgid "Wagtail locales"
30
30
  msgstr "Лакалізацыі Wagtail "
@@ -21,8 +21,8 @@ msgstr ""
21
21
  "Content-Type: text/plain; charset=UTF-8\n"
22
22
  "Content-Transfer-Encoding: 8bit\n"
23
23
  "Language: hr_HR\n"
24
- "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
25
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
24
+ "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
25
+ "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
26
26
 
27
27
  msgid "Wagtail locales"
28
28
  msgstr "Wagtail lokaliteti"
@@ -20,9 +20,9 @@ msgstr ""
20
20
  "Content-Type: text/plain; charset=UTF-8\n"
21
21
  "Content-Transfer-Encoding: 8bit\n"
22
22
  "Language: pl\n"
23
- "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
24
- "%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
25
- "%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
23
+ "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && "
24
+ "(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && "
25
+ "n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
26
26
 
27
27
  msgid "Wagtail locales"
28
28
  msgstr "Lokalizacje Wagtail"
@@ -21,9 +21,9 @@ msgstr ""
21
21
  "Content-Type: text/plain; charset=UTF-8\n"
22
22
  "Content-Transfer-Encoding: 8bit\n"
23
23
  "Language: ru\n"
24
- "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
25
- "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
26
- "%100>=11 && n%100<=14)? 2 : 3);\n"
24
+ "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
25
+ "n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
26
+ "(n%100>=11 && n%100<=14)? 2 : 3);\n"
27
27
 
28
28
  msgid "Wagtail locales"
29
29
  msgstr "Локали Wagtail"