wagtail 6.0.1__py3-none-any.whl → 6.0.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 (199) hide show
  1. wagtail/__init__.py +1 -1
  2. wagtail/admin/locale/ca/LC_MESSAGES/django.mo +0 -0
  3. wagtail/admin/locale/ca/LC_MESSAGES/django.po +122 -0
  4. wagtail/admin/locale/es/LC_MESSAGES/django.mo +0 -0
  5. wagtail/admin/locale/es/LC_MESSAGES/django.po +6 -6
  6. wagtail/admin/locale/fr/LC_MESSAGES/django.mo +0 -0
  7. wagtail/admin/locale/fr/LC_MESSAGES/django.po +70 -3
  8. wagtail/admin/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  9. wagtail/admin/locale/he_IL/LC_MESSAGES/django.po +2 -6
  10. wagtail/admin/locale/he_IL/LC_MESSAGES/djangojs.mo +0 -0
  11. wagtail/admin/locale/he_IL/LC_MESSAGES/djangojs.po +2 -2
  12. wagtail/admin/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  13. wagtail/admin/locale/hr_HR/LC_MESSAGES/django.po +4 -0
  14. wagtail/admin/locale/hu/LC_MESSAGES/django.mo +0 -0
  15. wagtail/admin/locale/hu/LC_MESSAGES/django.po +142 -2
  16. wagtail/admin/locale/it/LC_MESSAGES/django.mo +0 -0
  17. wagtail/admin/locale/it/LC_MESSAGES/django.po +80 -8
  18. wagtail/admin/locale/it/LC_MESSAGES/djangojs.mo +0 -0
  19. wagtail/admin/locale/it/LC_MESSAGES/djangojs.po +14 -2
  20. wagtail/admin/locale/lv/LC_MESSAGES/django.mo +0 -0
  21. wagtail/admin/locale/lv/LC_MESSAGES/django.po +154 -1
  22. wagtail/admin/locale/sl/LC_MESSAGES/django.mo +0 -0
  23. wagtail/admin/locale/sl/LC_MESSAGES/django.po +145 -2
  24. wagtail/admin/locale/sv/LC_MESSAGES/django.mo +0 -0
  25. wagtail/admin/locale/sv/LC_MESSAGES/django.po +77 -3
  26. wagtail/admin/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
  27. wagtail/admin/locale/zh_Hant/LC_MESSAGES/django.po +17 -1
  28. wagtail/admin/static/wagtailadmin/css/core.css +1 -1
  29. wagtail/admin/static/wagtailadmin/js/core.js +1 -1
  30. wagtail/admin/static/wagtailadmin/js/vendor.js +1 -1
  31. wagtail/admin/templates/wagtailadmin/admin_base.html +1 -0
  32. wagtail/admin/templates/wagtailadmin/collections/edit.html +0 -1
  33. wagtail/admin/templates/wagtailadmin/generic/form.html +1 -0
  34. wagtail/admin/templates/wagtailadmin/generic/index_results.html +8 -0
  35. wagtail/admin/templates/wagtailadmin/home/workflow_objects_to_moderate.html +0 -1
  36. wagtail/admin/templates/wagtailadmin/pages/_editor_js.html +0 -1
  37. wagtail/admin/templates/wagtailadmin/pages/index.html +0 -2
  38. wagtail/admin/templates/wagtailadmin/shared/headers/slim_header.html +1 -1
  39. wagtail/admin/tests/api/test_pages.py +26 -10
  40. wagtail/admin/tests/pages/test_page_search.py +39 -0
  41. wagtail/admin/tests/viewsets/test_model_viewset.py +45 -10
  42. wagtail/admin/views/generic/base.py +3 -0
  43. wagtail/admin/views/generic/models.py +27 -10
  44. wagtail/admin/views/pages/search.py +1 -0
  45. wagtail/admin/widgets/button.py +1 -2
  46. wagtail/contrib/forms/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  47. wagtail/contrib/forms/locale/he_IL/LC_MESSAGES/django.po +2 -2
  48. wagtail/contrib/redirects/locale/fr/LC_MESSAGES/django.po +2 -2
  49. wagtail/contrib/redirects/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  50. wagtail/contrib/redirects/locale/he_IL/LC_MESSAGES/django.po +2 -2
  51. wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.po +2 -2
  52. wagtail/contrib/search_promotions/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  53. wagtail/contrib/search_promotions/locale/he_IL/LC_MESSAGES/django.po +2 -2
  54. wagtail/contrib/search_promotions/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  55. wagtail/contrib/search_promotions/locale/hr_HR/LC_MESSAGES/django.po +41 -2
  56. wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.mo +0 -0
  57. wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.po +9 -3
  58. wagtail/contrib/settings/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  59. wagtail/contrib/settings/locale/he_IL/LC_MESSAGES/django.po +2 -2
  60. wagtail/contrib/settings/locale/tr/LC_MESSAGES/django.mo +0 -0
  61. wagtail/contrib/settings/locale/tr/LC_MESSAGES/django.po +6 -2
  62. wagtail/contrib/settings/tests/generic/test_admin.py +88 -1
  63. wagtail/contrib/settings/tests/site_specific/test_admin.py +92 -3
  64. wagtail/contrib/styleguide/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  65. wagtail/contrib/styleguide/locale/he_IL/LC_MESSAGES/django.po +2 -2
  66. wagtail/contrib/styleguide/tests.py +8 -0
  67. wagtail/contrib/styleguide/views.py +1 -1
  68. wagtail/contrib/table_block/blocks.py +1 -1
  69. wagtail/contrib/table_block/locale/ca/LC_MESSAGES/django.mo +0 -0
  70. wagtail/contrib/table_block/locale/ca/LC_MESSAGES/django.po +27 -2
  71. wagtail/contrib/table_block/locale/hu/LC_MESSAGES/django.mo +0 -0
  72. wagtail/contrib/table_block/locale/hu/LC_MESSAGES/django.po +27 -2
  73. wagtail/contrib/table_block/locale/it/LC_MESSAGES/django.mo +0 -0
  74. wagtail/contrib/table_block/locale/it/LC_MESSAGES/django.po +27 -2
  75. wagtail/contrib/table_block/tests.py +6 -0
  76. wagtail/contrib/typed_table_block/locale/ca/LC_MESSAGES/django.mo +0 -0
  77. wagtail/contrib/typed_table_block/locale/ca/LC_MESSAGES/django.po +12 -2
  78. wagtail/contrib/typed_table_block/locale/hu/LC_MESSAGES/django.mo +0 -0
  79. wagtail/contrib/typed_table_block/locale/hu/LC_MESSAGES/django.po +12 -2
  80. wagtail/contrib/typed_table_block/locale/it/LC_MESSAGES/django.mo +0 -0
  81. wagtail/contrib/typed_table_block/locale/it/LC_MESSAGES/django.po +12 -2
  82. wagtail/documents/locale/fr/LC_MESSAGES/django.po +2 -2
  83. wagtail/documents/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  84. wagtail/documents/locale/he_IL/LC_MESSAGES/django.po +2 -2
  85. wagtail/documents/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  86. wagtail/documents/locale/hr_HR/LC_MESSAGES/django.po +19 -2
  87. wagtail/documents/locale/hu/LC_MESSAGES/django.mo +0 -0
  88. wagtail/documents/locale/hu/LC_MESSAGES/django.po +16 -2
  89. wagtail/documents/locale/it/LC_MESSAGES/django.mo +0 -0
  90. wagtail/documents/locale/it/LC_MESSAGES/django.po +19 -2
  91. wagtail/embeds/locale/fr/LC_MESSAGES/django.po +2 -2
  92. wagtail/embeds/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  93. wagtail/embeds/locale/he_IL/LC_MESSAGES/django.po +2 -2
  94. wagtail/images/locale/ca/LC_MESSAGES/django.mo +0 -0
  95. wagtail/images/locale/ca/LC_MESSAGES/django.po +12 -0
  96. wagtail/images/locale/fr/LC_MESSAGES/django.po +2 -2
  97. wagtail/images/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  98. wagtail/images/locale/he_IL/LC_MESSAGES/django.po +2 -2
  99. wagtail/images/locale/hu/LC_MESSAGES/django.mo +0 -0
  100. wagtail/images/locale/hu/LC_MESSAGES/django.po +28 -2
  101. wagtail/images/locale/it/LC_MESSAGES/django.mo +0 -0
  102. wagtail/images/locale/it/LC_MESSAGES/django.po +14 -2
  103. wagtail/locale/es/LC_MESSAGES/django.mo +0 -0
  104. wagtail/locale/es/LC_MESSAGES/django.po +3 -2
  105. wagtail/locale/fr/LC_MESSAGES/django.po +2 -2
  106. wagtail/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  107. wagtail/locale/he_IL/LC_MESSAGES/django.po +2 -2
  108. wagtail/locale/it/LC_MESSAGES/django.mo +0 -0
  109. wagtail/locale/it/LC_MESSAGES/django.po +5 -5
  110. wagtail/locale/sl/LC_MESSAGES/django.mo +0 -0
  111. wagtail/locale/sl/LC_MESSAGES/django.po +27 -2
  112. wagtail/locales/locale/ar/LC_MESSAGES/django.po +1 -1
  113. wagtail/locales/locale/be/LC_MESSAGES/django.po +1 -1
  114. wagtail/locales/locale/bg/LC_MESSAGES/django.po +1 -1
  115. wagtail/locales/locale/ca/LC_MESSAGES/django.po +1 -1
  116. wagtail/locales/locale/cs/LC_MESSAGES/django.po +1 -1
  117. wagtail/locales/locale/cy/LC_MESSAGES/django.po +1 -1
  118. wagtail/locales/locale/da/LC_MESSAGES/django.po +1 -1
  119. wagtail/locales/locale/de/LC_MESSAGES/django.po +1 -1
  120. wagtail/locales/locale/el/LC_MESSAGES/django.po +1 -1
  121. wagtail/locales/locale/es/LC_MESSAGES/django.po +1 -1
  122. wagtail/locales/locale/et/LC_MESSAGES/django.po +2 -2
  123. wagtail/locales/locale/fa/LC_MESSAGES/django.po +1 -1
  124. wagtail/locales/locale/fi/LC_MESSAGES/django.po +1 -1
  125. wagtail/locales/locale/fr/LC_MESSAGES/django.po +1 -1
  126. wagtail/locales/locale/gl/LC_MESSAGES/django.po +1 -1
  127. wagtail/locales/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  128. wagtail/locales/locale/he_IL/LC_MESSAGES/django.po +3 -3
  129. wagtail/locales/locale/hr_HR/LC_MESSAGES/django.po +1 -1
  130. wagtail/locales/locale/hu/LC_MESSAGES/django.po +1 -1
  131. wagtail/locales/locale/id_ID/LC_MESSAGES/django.po +1 -1
  132. wagtail/locales/locale/is_IS/LC_MESSAGES/django.po +1 -1
  133. wagtail/locales/locale/it/LC_MESSAGES/django.po +1 -1
  134. wagtail/locales/locale/ja/LC_MESSAGES/django.po +1 -1
  135. wagtail/locales/locale/ko/LC_MESSAGES/django.po +1 -1
  136. wagtail/locales/locale/lt/LC_MESSAGES/django.po +1 -1
  137. wagtail/locales/locale/lv/LC_MESSAGES/django.po +1 -1
  138. wagtail/locales/locale/mi/LC_MESSAGES/django.po +1 -1
  139. wagtail/locales/locale/mn/LC_MESSAGES/django.po +1 -1
  140. wagtail/locales/locale/my/LC_MESSAGES/django.po +1 -1
  141. wagtail/locales/locale/nb/LC_MESSAGES/django.po +1 -1
  142. wagtail/locales/locale/nl/LC_MESSAGES/django.po +1 -1
  143. wagtail/locales/locale/pl/LC_MESSAGES/django.po +1 -1
  144. wagtail/locales/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  145. wagtail/locales/locale/pt_PT/LC_MESSAGES/django.po +1 -1
  146. wagtail/locales/locale/ro/LC_MESSAGES/django.po +1 -1
  147. wagtail/locales/locale/ru/LC_MESSAGES/django.po +1 -1
  148. wagtail/locales/locale/sk_SK/LC_MESSAGES/django.po +1 -1
  149. wagtail/locales/locale/sl/LC_MESSAGES/django.po +1 -1
  150. wagtail/locales/locale/sv/LC_MESSAGES/django.po +1 -1
  151. wagtail/locales/locale/tet/LC_MESSAGES/django.po +1 -1
  152. wagtail/locales/locale/th/LC_MESSAGES/django.po +1 -1
  153. wagtail/locales/locale/tr/LC_MESSAGES/django.po +1 -1
  154. wagtail/locales/locale/tr_TR/LC_MESSAGES/django.po +1 -1
  155. wagtail/locales/locale/uk/LC_MESSAGES/django.po +1 -1
  156. wagtail/locales/locale/vi/LC_MESSAGES/django.po +1 -1
  157. wagtail/locales/locale/zh/LC_MESSAGES/django.po +1 -1
  158. wagtail/locales/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
  159. wagtail/locales/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
  160. wagtail/management/commands/convert_mariadb_uuids.py +43 -0
  161. wagtail/sites/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  162. wagtail/sites/locale/he_IL/LC_MESSAGES/django.po +2 -2
  163. wagtail/sites/locale/ro/LC_MESSAGES/django.mo +0 -0
  164. wagtail/sites/locale/ro/LC_MESSAGES/django.po +3 -2
  165. wagtail/sites/templates/wagtailsites/create.html +0 -1
  166. wagtail/sites/templates/wagtailsites/edit.html +0 -1
  167. wagtail/snippets/locale/de/LC_MESSAGES/django.mo +0 -0
  168. wagtail/snippets/locale/de/LC_MESSAGES/django.po +2 -2
  169. wagtail/snippets/locale/fr/LC_MESSAGES/django.po +2 -2
  170. wagtail/snippets/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  171. wagtail/snippets/locale/he_IL/LC_MESSAGES/django.po +2 -2
  172. wagtail/snippets/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  173. wagtail/snippets/locale/hr_HR/LC_MESSAGES/django.po +6 -2
  174. wagtail/snippets/locale/lv/LC_MESSAGES/django.mo +0 -0
  175. wagtail/snippets/locale/lv/LC_MESSAGES/django.po +12 -0
  176. wagtail/snippets/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
  177. wagtail/snippets/locale/zh_Hant/LC_MESSAGES/django.po +4 -0
  178. wagtail/snippets/templates/wagtailsnippets/snippets/create.html +1 -2
  179. wagtail/snippets/templates/wagtailsnippets/snippets/edit.html +1 -2
  180. wagtail/snippets/tests/test_viewset.py +32 -0
  181. wagtail/snippets/views/snippets.py +0 -19
  182. wagtail/test/testapp/migrations/0034_testpermissionedgenericsetting_and_more.py +42 -0
  183. wagtail/test/testapp/models.py +46 -0
  184. wagtail/test/testapp/views.py +1 -1
  185. wagtail/users/locale/fr/LC_MESSAGES/django.po +2 -2
  186. wagtail/users/locale/he_IL/LC_MESSAGES/django.mo +0 -0
  187. wagtail/users/locale/he_IL/LC_MESSAGES/django.po +2 -2
  188. wagtail/users/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
  189. wagtail/users/locale/hr_HR/LC_MESSAGES/django.po +13 -2
  190. wagtail/users/templates/wagtailusers/groups/includes/group_form_js.html +0 -1
  191. wagtail/users/templates/wagtailusers/users/create.html +0 -5
  192. wagtail/users/templates/wagtailusers/users/edit.html +0 -5
  193. wagtail/users/tests/test_admin_views.py +7 -1
  194. {wagtail-6.0.1.dist-info → wagtail-6.0.3.dist-info}/METADATA +2 -2
  195. {wagtail-6.0.1.dist-info → wagtail-6.0.3.dist-info}/RECORD +199 -197
  196. {wagtail-6.0.1.dist-info → wagtail-6.0.3.dist-info}/LICENSE +0 -0
  197. {wagtail-6.0.1.dist-info → wagtail-6.0.3.dist-info}/WHEEL +0 -0
  198. {wagtail-6.0.1.dist-info → wagtail-6.0.3.dist-info}/entry_points.txt +0 -0
  199. {wagtail-6.0.1.dist-info → wagtail-6.0.3.dist-info}/top_level.txt +0 -0
@@ -7,7 +7,7 @@
7
7
  # Giacomo Ghizzani <giacomo.ghz@gmail.com>, 2015,2017
8
8
  # giammi <gian-maria.daffre@giammi.org>, 2018
9
9
  # giammi <gian-maria.daffre@giammi.org>, 2018
10
- # Marco Badan <marco.badan@gmail.com>, 2021-2022
10
+ # Marco Badan <marco.badan@gmail.com>, 2021-2022,2024
11
11
  # Sandro Badalamenti <sandro@mailinator.com>, 2019
12
12
  msgid ""
13
13
  msgstr ""
@@ -15,7 +15,7 @@ msgstr ""
15
15
  "Report-Msgid-Bugs-To: \n"
16
16
  "POT-Creation-Date: 2024-01-24 13:51+0000\n"
17
17
  "PO-Revision-Date: 2015-08-26 14:04+0000\n"
18
- "Last-Translator: Sandro Badalamenti <sandro@mailinator.com>, 2019\n"
18
+ "Last-Translator: Marco Badan <marco.badan@gmail.com>, 2021-2022,2024\n"
19
19
  "Language-Team: Italian (http://app.transifex.com/torchbox/wagtail/language/"
20
20
  "it/)\n"
21
21
  "MIME-Version: 1.0\n"
@@ -29,7 +29,7 @@ msgid "Wagtail search promotions"
29
29
  msgstr "Ricerca in evidenza Wagtail"
30
30
 
31
31
  msgid "Search term(s)/phrase"
32
- msgstr "Cerca termine(i)/frase"
32
+ msgstr "Termine/i di ricerca/frase"
33
33
 
34
34
  msgid ""
35
35
  "Enter the full search string to match. An exact match is required for your "
@@ -104,9 +104,15 @@ msgstr "Sposta su"
104
104
  msgid "Move down"
105
105
  msgstr "Sposta giù"
106
106
 
107
+ msgid "Recommended search result"
108
+ msgstr "Risultato di ricerca consigliato"
109
+
107
110
  msgid "Promoted search results"
108
111
  msgstr "Risultati di ricerca in evidenza"
109
112
 
113
+ msgid "Add a recommended result"
114
+ msgstr "Aggiungi un risultato consigliato"
115
+
110
116
  msgid "Search Terms"
111
117
  msgstr "Termini di ricerca"
112
118
 
@@ -20,8 +20,8 @@ msgstr ""
20
20
  "Content-Type: text/plain; charset=UTF-8\n"
21
21
  "Content-Transfer-Encoding: 8bit\n"
22
22
  "Language: he_IL\n"
23
- "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % "
24
- "1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
23
+ "Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % "
24
+ "1 == 0) ? 1: 2;\n"
25
25
 
26
26
  msgid "default"
27
27
  msgstr "ברירת מחדל"
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # Translators:
6
6
  # Ahmet Sarıcan <asarican@gmail.com>, 2019
7
- # Cihad GÜNDOĞDU <cihadgundogdu@gmail.com>, 2016,2019
7
+ # Cihad GÜNDOĞDU <cihadgundogdu@gmail.com>, 2016,2019,2024
8
8
  # Fatih Koç koç <fatihinemaili@gmail.com>, 2021
9
9
  # Halim Turan <halim_turan_61@hotmail.com>, 2022
10
10
  # José Luis <alagunajs@gmail.com>, 2017
@@ -17,7 +17,7 @@ msgstr ""
17
17
  "Report-Msgid-Bugs-To: \n"
18
18
  "POT-Creation-Date: 2024-01-24 13:51+0000\n"
19
19
  "PO-Revision-Date: 2016-03-01 19:20+0000\n"
20
- "Last-Translator: Saadettin Yasir AKEL <yasirakel@gmail.com>, 2016\n"
20
+ "Last-Translator: Cihad GÜNDOĞDU <cihadgundogdu@gmail.com>, 2016,2019,2024\n"
21
21
  "Language-Team: Turkish (http://app.transifex.com/torchbox/wagtail/language/"
22
22
  "tr/)\n"
23
23
  "MIME-Version: 1.0\n"
@@ -29,6 +29,10 @@ msgstr ""
29
29
  msgid "default"
30
30
  msgstr "varsayılan"
31
31
 
32
+ #, python-format
33
+ msgid "%(site_setting)s for %(site)s"
34
+ msgstr "%(site)s için %(site_setting)s"
35
+
32
36
  msgid "Site"
33
37
  msgstr "Site"
34
38
 
@@ -14,6 +14,7 @@ from wagtail.test.testapp.models import (
14
14
  PanelGenericSettings,
15
15
  TabbedGenericSettings,
16
16
  TestGenericSetting,
17
+ TestPermissionedGenericSetting,
17
18
  )
18
19
  from wagtail.test.utils import WagtailTestUtils
19
20
 
@@ -76,6 +77,11 @@ class BaseTestGenericSettingView(WagtailTestUtils, TestCase):
76
77
  class TestGenericSettingCreateView(BaseTestGenericSettingView):
77
78
  def setUp(self):
78
79
  self.user = self.login()
80
+ self.user.user_permissions.add(
81
+ Permission.objects.get(
82
+ content_type__app_label="wagtailadmin", codename="access_admin"
83
+ )
84
+ )
79
85
 
80
86
  def test_get_edit(self):
81
87
  response = self.get()
@@ -107,6 +113,38 @@ class TestGenericSettingCreateView(BaseTestGenericSettingView):
107
113
  # Ensure the form supports file uploads
108
114
  self.assertContains(response, 'enctype="multipart/form-data"')
109
115
 
116
+ def test_create_restricted_field_without_permission(self):
117
+ self.user.is_superuser = False
118
+ self.user.save()
119
+
120
+ self.assertFalse(TestPermissionedGenericSetting.objects.exists())
121
+ response = self.post(
122
+ post_data={"sensitive_email": "test@example.com", "title": "test"},
123
+ setting=TestPermissionedGenericSetting,
124
+ )
125
+ self.assertEqual(response.status_code, 302)
126
+
127
+ settings = TestPermissionedGenericSetting.objects.get()
128
+ self.assertEqual(settings.title, "test")
129
+ self.assertEqual(settings.sensitive_email, "")
130
+
131
+ def test_create_restricted_field(self):
132
+ self.user.is_superuser = False
133
+ self.user.save()
134
+ self.user.user_permissions.add(
135
+ Permission.objects.get(codename="can_edit_sensitive_email_generic_setting")
136
+ )
137
+ self.assertFalse(TestPermissionedGenericSetting.objects.exists())
138
+ response = self.post(
139
+ post_data={"sensitive_email": "test@example.com", "title": "test"},
140
+ setting=TestPermissionedGenericSetting,
141
+ )
142
+ self.assertEqual(response.status_code, 302)
143
+
144
+ settings = TestPermissionedGenericSetting.objects.get()
145
+ self.assertEqual(settings.title, "test")
146
+ self.assertEqual(settings.sensitive_email, "test@example.com")
147
+
110
148
 
111
149
  class TestGenericSettingEditView(BaseTestGenericSettingView):
112
150
  def setUp(self):
@@ -114,7 +152,12 @@ class TestGenericSettingEditView(BaseTestGenericSettingView):
114
152
  self.test_setting.title = "Setting title"
115
153
  self.test_setting.save()
116
154
 
117
- self.login()
155
+ self.user = self.login()
156
+ self.user.user_permissions.add(
157
+ Permission.objects.get(
158
+ content_type__app_label="wagtailadmin", codename="access_admin"
159
+ )
160
+ )
118
161
 
119
162
  def test_get_edit(self):
120
163
  response = self.get()
@@ -153,6 +196,50 @@ class TestGenericSettingEditView(BaseTestGenericSettingView):
153
196
  expected_url=f"{url}{TestGenericSetting.objects.first().pk}/",
154
197
  )
155
198
 
199
+ def test_edit_restricted_field(self):
200
+ test_setting = TestPermissionedGenericSetting()
201
+ test_setting.sensitive_email = "test@example.com"
202
+ test_setting.save()
203
+ self.user.is_superuser = False
204
+ self.user.save()
205
+
206
+ self.user.user_permissions.add(
207
+ Permission.objects.get(codename="can_edit_sensitive_email_generic_setting")
208
+ )
209
+
210
+ response = self.get(setting=TestPermissionedGenericSetting)
211
+ self.assertEqual(response.status_code, 200)
212
+ self.assertIn("sensitive_email", list(response.context["form"].fields))
213
+
214
+ response = self.post(
215
+ setting=TestPermissionedGenericSetting,
216
+ post_data={"sensitive_email": "test-updated@example.com", "title": "title"},
217
+ )
218
+ self.assertEqual(response.status_code, 302)
219
+
220
+ test_setting.refresh_from_db()
221
+ self.assertEqual(test_setting.sensitive_email, "test-updated@example.com")
222
+
223
+ def test_edit_restricted_field_without_permission(self):
224
+ test_setting = TestPermissionedGenericSetting()
225
+ test_setting.sensitive_email = "test@example.com"
226
+ test_setting.save()
227
+ self.user.is_superuser = False
228
+ self.user.save()
229
+
230
+ response = self.get(setting=TestPermissionedGenericSetting)
231
+ self.assertEqual(response.status_code, 200)
232
+ self.assertNotIn("sensitive_email", list(response.context["form"].fields))
233
+
234
+ response = self.post(
235
+ setting=TestPermissionedGenericSetting,
236
+ post_data={"sensitive_email": "test-updated@example.com", "title": "title"},
237
+ )
238
+ self.assertEqual(response.status_code, 302)
239
+
240
+ test_setting.refresh_from_db()
241
+ self.assertEqual(test_setting.sensitive_email, "test@example.com")
242
+
156
243
 
157
244
  class TestAdminPermission(WagtailTestUtils, TestCase):
158
245
  def test_registered_permission(self):
@@ -14,6 +14,7 @@ from wagtail.test.testapp.models import (
14
14
  IconSiteSetting,
15
15
  PanelSiteSettings,
16
16
  TabbedSiteSettings,
17
+ TestPermissionedSiteSetting,
17
18
  TestSiteSetting,
18
19
  )
19
20
  from wagtail.test.utils import WagtailTestUtils
@@ -72,6 +73,11 @@ class BaseTestSiteSettingView(WagtailTestUtils, TestCase):
72
73
  class TestSiteSettingCreateView(BaseTestSiteSettingView):
73
74
  def setUp(self):
74
75
  self.user = self.login()
76
+ self.user.user_permissions.add(
77
+ Permission.objects.get(
78
+ content_type__app_label="wagtailadmin", codename="access_admin"
79
+ )
80
+ )
75
81
 
76
82
  def test_get_edit(self):
77
83
  response = self.get()
@@ -103,18 +109,55 @@ class TestSiteSettingCreateView(BaseTestSiteSettingView):
103
109
  # Ensure the form supports file uploads
104
110
  self.assertContains(response, 'enctype="multipart/form-data"')
105
111
 
112
+ def test_create_restricted_field_without_permission(self):
113
+ self.user.is_superuser = False
114
+ self.user.save()
115
+
116
+ self.assertFalse(TestPermissionedSiteSetting.objects.exists())
117
+ response = self.post(
118
+ post_data={"sensitive_email": "test@example.com", "title": "test"},
119
+ setting=TestPermissionedSiteSetting,
120
+ )
121
+ self.assertEqual(response.status_code, 302)
122
+
123
+ settings = TestPermissionedSiteSetting.objects.get()
124
+ self.assertEqual(settings.title, "test")
125
+ self.assertEqual(settings.sensitive_email, "")
126
+
127
+ def test_create_restricted_field(self):
128
+ self.user.is_superuser = False
129
+ self.user.save()
130
+ self.user.user_permissions.add(
131
+ Permission.objects.get(codename="can_edit_sensitive_email_site_setting")
132
+ )
133
+ self.assertFalse(TestPermissionedSiteSetting.objects.exists())
134
+ response = self.post(
135
+ post_data={"sensitive_email": "test@example.com", "title": "test"},
136
+ setting=TestPermissionedSiteSetting,
137
+ )
138
+ self.assertEqual(response.status_code, 302)
139
+
140
+ settings = TestPermissionedSiteSetting.objects.get()
141
+ self.assertEqual(settings.title, "test")
142
+ self.assertEqual(settings.sensitive_email, "test@example.com")
143
+
106
144
 
107
145
  class TestSiteSettingEditView(BaseTestSiteSettingView):
108
146
  def setUp(self):
109
- default_site = Site.objects.get(is_default_site=True)
147
+ self.default_site = Site.objects.get(is_default_site=True)
110
148
 
111
149
  self.test_setting = TestSiteSetting()
112
150
  self.test_setting.title = "Site title"
113
151
  self.test_setting.email = "initial@example.com"
114
- self.test_setting.site = default_site
152
+ self.test_setting.site = self.default_site
115
153
  self.test_setting.save()
116
154
 
117
- self.login()
155
+ self.user = self.login()
156
+ self.user.user_permissions.add(
157
+ Permission.objects.get(
158
+ content_type__app_label="wagtailadmin", codename="access_admin"
159
+ )
160
+ )
118
161
 
119
162
  def test_get_edit(self):
120
163
  response = self.get()
@@ -158,6 +201,52 @@ class TestSiteSettingEditView(BaseTestSiteSettingView):
158
201
  response = self.client.get(url)
159
202
  self.assertRedirects(response, status_code=302, expected_url="/admin/")
160
203
 
204
+ def test_edit_restricted_field(self):
205
+ test_setting = TestPermissionedSiteSetting()
206
+ test_setting.sensitive_email = "test@example.com"
207
+ test_setting.site = self.default_site
208
+ test_setting.save()
209
+ self.user.is_superuser = False
210
+ self.user.save()
211
+
212
+ self.user.user_permissions.add(
213
+ Permission.objects.get(codename="can_edit_sensitive_email_site_setting")
214
+ )
215
+
216
+ response = self.get(setting=TestPermissionedSiteSetting)
217
+ self.assertEqual(response.status_code, 200)
218
+ self.assertIn("sensitive_email", list(response.context["form"].fields))
219
+
220
+ response = self.post(
221
+ setting=TestPermissionedSiteSetting,
222
+ post_data={"sensitive_email": "test-updated@example.com", "title": "title"},
223
+ )
224
+ self.assertEqual(response.status_code, 302)
225
+
226
+ test_setting.refresh_from_db()
227
+ self.assertEqual(test_setting.sensitive_email, "test-updated@example.com")
228
+
229
+ def test_edit_restricted_field_without_permission(self):
230
+ test_setting = TestPermissionedSiteSetting()
231
+ test_setting.sensitive_email = "test@example.com"
232
+ test_setting.site = self.default_site
233
+ test_setting.save()
234
+ self.user.is_superuser = False
235
+ self.user.save()
236
+
237
+ response = self.get(setting=TestPermissionedSiteSetting)
238
+ self.assertEqual(response.status_code, 200)
239
+ self.assertNotIn("sensitive_email", list(response.context["form"].fields))
240
+
241
+ response = self.post(
242
+ setting=TestPermissionedSiteSetting,
243
+ post_data={"sensitive_email": "test-updated@example.com", "title": "title"},
244
+ )
245
+ self.assertEqual(response.status_code, 302)
246
+
247
+ test_setting.refresh_from_db()
248
+ self.assertEqual(test_setting.sensitive_email, "test@example.com")
249
+
161
250
 
162
251
  @override_settings(
163
252
  ALLOWED_HOSTS=["testserver", "example.com", "noneoftheabove.example.com"]
@@ -16,8 +16,8 @@ msgstr ""
16
16
  "Content-Type: text/plain; charset=UTF-8\n"
17
17
  "Content-Transfer-Encoding: 8bit\n"
18
18
  "Language: he_IL\n"
19
- "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % "
20
- "1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
19
+ "Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % "
20
+ "1 == 0) ? 1: 2;\n"
21
21
 
22
22
  msgid "Save"
23
23
  msgstr "שמור"
@@ -1,6 +1,7 @@
1
1
  from django.test import TestCase
2
2
  from django.urls import reverse
3
3
 
4
+ from wagtail.admin.staticfiles import versioned_static
4
5
  from wagtail.test.utils import WagtailTestUtils
5
6
 
6
7
 
@@ -13,3 +14,10 @@ class TestStyleGuide(WagtailTestUtils, TestCase):
13
14
 
14
15
  self.assertEqual(response.status_code, 200)
15
16
  self.assertTemplateUsed(response, "wagtailstyleguide/base.html")
17
+
18
+ custom_css = versioned_static("wagtailstyleguide/css/animate-progress.css")
19
+ widget_css = versioned_static("wagtailadmin/css/panels/draftail.css")
20
+ widget_js = versioned_static("wagtailadmin/js/draftail.js")
21
+ self.assertContains(response, custom_css)
22
+ self.assertContains(response, widget_css)
23
+ self.assertContains(response, widget_js)
@@ -94,7 +94,7 @@ class ExampleForm(forms.Form):
94
94
 
95
95
  @property
96
96
  def media(self):
97
- return forms.Media(
97
+ return super().media + forms.Media(
98
98
  css={
99
99
  "all": [versioned_static("wagtailstyleguide/css/animate-progress.css")]
100
100
  }
@@ -132,7 +132,7 @@ class TableBlock(FieldBlock):
132
132
  value for the header choice. I would really like to have this default to "" and force the
133
133
  editor to reaffirm they don't want any headers, but that woud be a breaking change.
134
134
  """
135
- if not value.get("table_header_choice", ""):
135
+ if value and not value.get("table_header_choice", ""):
136
136
  if value.get("first_row_is_table_header", False) and value.get(
137
137
  "first_col_is_header", False
138
138
  ):
@@ -3,14 +3,14 @@
3
3
  # This file is distributed under the same license as the PACKAGE package.
4
4
  #
5
5
  # Translators:
6
- # Roger Pons <rogerpons@gmail.com>, 2017,2020,2023
6
+ # Roger Pons <rogerpons@gmail.com>, 2017,2020,2023-2024
7
7
  msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: Wagtail\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
11
  "POT-Creation-Date: 2024-01-24 13:51+0000\n"
12
12
  "PO-Revision-Date: 2016-05-11 20:23+0000\n"
13
- "Last-Translator: Roger Pons <rogerpons@gmail.com>, 2017,2020,2023\n"
13
+ "Last-Translator: Roger Pons <rogerpons@gmail.com>, 2017,2020,2023-2024\n"
14
14
  "Language-Team: Catalan (http://app.transifex.com/torchbox/wagtail/language/"
15
15
  "ca/)\n"
16
16
  "MIME-Version: 1.0\n"
@@ -25,11 +25,36 @@ msgstr "Bloc de taula de Wagtail"
25
25
  msgid "Row header"
26
26
  msgstr "Capçalera de fila"
27
27
 
28
+ msgid "Table headers"
29
+ msgstr "Capçaleres de taules"
30
+
31
+ msgid "Display the first row as a header"
32
+ msgstr "Mostrar la primera fila com a capçalera"
33
+
34
+ msgid "Display the first column as a header"
35
+ msgstr "Mostrar la primera columna com a capçalera"
36
+
28
37
  msgid "Column header"
29
38
  msgstr "Capçalera de columna"
30
39
 
40
+ msgid "Display the first row AND first column as headers"
41
+ msgstr "Mostrar la primera fila i la primera columna com a capçaleres"
42
+
43
+ msgid "No headers"
44
+ msgstr "Sense capçaleres"
45
+
46
+ msgid "Which cells should be displayed as headers?"
47
+ msgstr "Quines cel·les s'han de mostrar com a capçaleres?"
48
+
31
49
  msgid "Table caption"
32
50
  msgstr "Llegenda de taula"
33
51
 
52
+ msgid ""
53
+ "A heading that identifies the overall topic of the table, and is useful for "
54
+ "screen reader users."
55
+ msgstr ""
56
+ "Una capçalera que identifica el tema general de la taula i és útil per als "
57
+ "usuaris de lectors de pantalla."
58
+
34
59
  msgid "Table"
35
60
  msgstr "Taula"
@@ -3,7 +3,7 @@
3
3
  # This file is distributed under the same license as the PACKAGE package.
4
4
  #
5
5
  # Translators:
6
- # Istvan Farkas <istvan.farkas@gmail.com>, 2019,2021
6
+ # Istvan Farkas <istvan.farkas@gmail.com>, 2019,2021,2024
7
7
  # Kornel Novak Mergulhão <nkornel@gmail.com>, 2016
8
8
  # Kornel Novak Mergulhão <nkornel@gmail.com>, 2016
9
9
  msgid ""
@@ -12,7 +12,7 @@ msgstr ""
12
12
  "Report-Msgid-Bugs-To: \n"
13
13
  "POT-Creation-Date: 2024-01-24 13:51+0000\n"
14
14
  "PO-Revision-Date: 2016-05-11 20:23+0000\n"
15
- "Last-Translator: Kornel Novak Mergulhão <nkornel@gmail.com>, 2016\n"
15
+ "Last-Translator: Istvan Farkas <istvan.farkas@gmail.com>, 2019,2021,2024\n"
16
16
  "Language-Team: Hungarian (http://app.transifex.com/torchbox/wagtail/language/"
17
17
  "hu/)\n"
18
18
  "MIME-Version: 1.0\n"
@@ -27,11 +27,36 @@ msgstr "Táblázat blokk"
27
27
  msgid "Row header"
28
28
  msgstr "Sor fejléc"
29
29
 
30
+ msgid "Table headers"
31
+ msgstr "Táblázat fejlécek"
32
+
33
+ msgid "Display the first row as a header"
34
+ msgstr "Első sor fejlécként"
35
+
36
+ msgid "Display the first column as a header"
37
+ msgstr "Első oszlop fejlécként"
38
+
30
39
  msgid "Column header"
31
40
  msgstr "Oszlop fejléc"
32
41
 
42
+ msgid "Display the first row AND first column as headers"
43
+ msgstr "Első sor ÉS oszlop is fejlécként"
44
+
45
+ msgid "No headers"
46
+ msgstr "Nincs fejléc"
47
+
48
+ msgid "Which cells should be displayed as headers?"
49
+ msgstr "Melyik cellák legyenek fejlécek?"
50
+
33
51
  msgid "Table caption"
34
52
  msgstr "Táblázat felirata"
35
53
 
54
+ msgid ""
55
+ "A heading that identifies the overall topic of the table, and is useful for "
56
+ "screen reader users."
57
+ msgstr ""
58
+ "Egy fejléc, amelyik a táblázat témáját írja le, és nagyon hasznos az "
59
+ "olvasóprogramoknak."
60
+
36
61
  msgid "Table"
37
62
  msgstr "Táblázat"
@@ -6,7 +6,7 @@
6
6
  # Giacomo Ghizzani <giacomo.ghz@gmail.com>, 2016
7
7
  # giammi <gian-maria.daffre@giammi.org>, 2018
8
8
  # giammi <gian-maria.daffre@giammi.org>, 2018
9
- # Marco Badan <marco.badan@gmail.com>, 2021
9
+ # Marco Badan <marco.badan@gmail.com>, 2021,2024
10
10
  # Stefano Marchetto <airbatum@gmail.com>, 2020
11
11
  msgid ""
12
12
  msgstr ""
@@ -14,7 +14,7 @@ msgstr ""
14
14
  "Report-Msgid-Bugs-To: \n"
15
15
  "POT-Creation-Date: 2024-01-24 13:51+0000\n"
16
16
  "PO-Revision-Date: 2016-05-11 20:23+0000\n"
17
- "Last-Translator: Stefano Marchetto <airbatum@gmail.com>, 2020\n"
17
+ "Last-Translator: Marco Badan <marco.badan@gmail.com>, 2021,2024\n"
18
18
  "Language-Team: Italian (http://app.transifex.com/torchbox/wagtail/language/"
19
19
  "it/)\n"
20
20
  "MIME-Version: 1.0\n"
@@ -30,11 +30,36 @@ msgstr "Blocco tabella Wagtail"
30
30
  msgid "Row header"
31
31
  msgstr "Intestazione di riga"
32
32
 
33
+ msgid "Table headers"
34
+ msgstr "Intestazioni tabella"
35
+
36
+ msgid "Display the first row as a header"
37
+ msgstr "Visualizza la prima riga come intestazione."
38
+
39
+ msgid "Display the first column as a header"
40
+ msgstr "Visualizza la prima colonna come intestazione."
41
+
33
42
  msgid "Column header"
34
43
  msgstr "Intestazione colonna"
35
44
 
45
+ msgid "Display the first row AND first column as headers"
46
+ msgstr "Visualizza la prima riga E la prima colonna come intestazioni"
47
+
48
+ msgid "No headers"
49
+ msgstr "Nessuna intestazione"
50
+
51
+ msgid "Which cells should be displayed as headers?"
52
+ msgstr "Quali celle dovrebbero essere visualizzate come intestazioni?"
53
+
36
54
  msgid "Table caption"
37
55
  msgstr "Didascalia"
38
56
 
57
+ msgid ""
58
+ "A heading that identifies the overall topic of the table, and is useful for "
59
+ "screen reader users."
60
+ msgstr ""
61
+ "Un'intestazione che identifica l'argomento generale della tabella, utile "
62
+ "agli utenti dotati di screen reader."
63
+
39
64
  msgid "Table"
40
65
  msgstr "Tabella"
@@ -439,6 +439,12 @@ class TestTableBlock(TestCase):
439
439
  """
440
440
  self.assertHTMLEqual(result, expected)
441
441
 
442
+ def test_empty_table_block_to_python(self):
443
+ # Should not raise an error
444
+ # See https://github.com/wagtail/wagtail/issues/11816
445
+ block = TableBlock()
446
+ self.assertIsNone(block.to_python(None))
447
+
442
448
 
443
449
  class TestTableBlockForm(WagtailTestUtils, SimpleTestCase):
444
450
  def setUp(self):
@@ -4,7 +4,7 @@
4
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
5
  #
6
6
  # Translators:
7
- # Roger Pons <rogerpons@gmail.com>, 2023
7
+ # Roger Pons <rogerpons@gmail.com>, 2024
8
8
  #
9
9
  #, fuzzy
10
10
  msgid ""
@@ -13,7 +13,7 @@ msgstr ""
13
13
  "Report-Msgid-Bugs-To: \n"
14
14
  "POT-Creation-Date: 2024-01-24 13:51+0000\n"
15
15
  "PO-Revision-Date: 2021-10-15 16:05+0000\n"
16
- "Last-Translator: Roger Pons <rogerpons@gmail.com>, 2023\n"
16
+ "Last-Translator: Roger Pons <rogerpons@gmail.com>, 2024\n"
17
17
  "Language-Team: Catalan (https://app.transifex.com/torchbox/teams/8009/ca/)\n"
18
18
  "MIME-Version: 1.0\n"
19
19
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -21,6 +21,16 @@ msgstr ""
21
21
  "Language: ca\n"
22
22
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
23
23
 
24
+ msgid "Caption"
25
+ msgstr "Llegenda"
26
+
27
+ msgid ""
28
+ "A heading that identifies the overall topic of the table, and is useful for "
29
+ "screen reader users."
30
+ msgstr ""
31
+ "Una capçalera que identifica el tema general de la taula i és útil per als "
32
+ "usuaris de lectors de pantalla."
33
+
24
34
  msgid "Add column"
25
35
  msgstr "Afegir columna"
26
36
 
@@ -4,7 +4,7 @@
4
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
5
  #
6
6
  # Translators:
7
- # Istvan Farkas <istvan.farkas@gmail.com>, 2021
7
+ # Istvan Farkas <istvan.farkas@gmail.com>, 2024
8
8
  #
9
9
  #, fuzzy
10
10
  msgid ""
@@ -13,7 +13,7 @@ msgstr ""
13
13
  "Report-Msgid-Bugs-To: \n"
14
14
  "POT-Creation-Date: 2024-01-24 13:51+0000\n"
15
15
  "PO-Revision-Date: 2021-10-15 16:05+0000\n"
16
- "Last-Translator: Istvan Farkas <istvan.farkas@gmail.com>, 2021\n"
16
+ "Last-Translator: Istvan Farkas <istvan.farkas@gmail.com>, 2024\n"
17
17
  "Language-Team: Hungarian (https://app.transifex.com/torchbox/teams/8009/"
18
18
  "hu/)\n"
19
19
  "MIME-Version: 1.0\n"
@@ -22,6 +22,16 @@ msgstr ""
22
22
  "Language: hu\n"
23
23
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
24
24
 
25
+ msgid "Caption"
26
+ msgstr "Felirat"
27
+
28
+ msgid ""
29
+ "A heading that identifies the overall topic of the table, and is useful for "
30
+ "screen reader users."
31
+ msgstr ""
32
+ "Egy fejléc, amelyik a táblázat témáját írja le, és nagyon hasznos az "
33
+ "olvasóprogramoknak."
34
+
25
35
  msgid "Add column"
26
36
  msgstr "Oszlop hozzáadása"
27
37