wagtail 6.1.1__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 (147) 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 +1 -1
  4. wagtail/admin/locale/fa/LC_MESSAGES/django.mo +0 -0
  5. wagtail/admin/locale/fa/LC_MESSAGES/django.po +75 -1
  6. wagtail/admin/locale/fa/LC_MESSAGES/djangojs.mo +0 -0
  7. wagtail/admin/locale/fa/LC_MESSAGES/djangojs.po +5 -1
  8. wagtail/admin/locale/fr/LC_MESSAGES/django.mo +0 -0
  9. wagtail/admin/locale/fr/LC_MESSAGES/django.po +89 -3
  10. wagtail/admin/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  11. wagtail/admin/locale/is_IS/LC_MESSAGES/django.po +228 -2
  12. wagtail/admin/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  13. wagtail/admin/locale/pt_BR/LC_MESSAGES/django.po +20 -1
  14. wagtail/admin/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  15. wagtail/admin/locale/sk_SK/LC_MESSAGES/django.po +11 -1
  16. wagtail/admin/locale/sl/LC_MESSAGES/django.mo +0 -0
  17. wagtail/admin/locale/sl/LC_MESSAGES/django.po +97 -0
  18. wagtail/admin/locale/sv/LC_MESSAGES/django.mo +0 -0
  19. wagtail/admin/locale/sv/LC_MESSAGES/django.po +74 -0
  20. wagtail/admin/locale/sv/LC_MESSAGES/djangojs.mo +0 -0
  21. wagtail/admin/locale/sv/LC_MESSAGES/djangojs.po +5 -2
  22. wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  23. wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.po +71 -1
  24. wagtail/admin/static/wagtailadmin/js/telepath/widgets.js +1 -1
  25. wagtail/admin/views/generic/base.py +3 -2
  26. wagtail/contrib/forms/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  27. wagtail/contrib/forms/locale/pt_BR/LC_MESSAGES/django.po +2 -2
  28. wagtail/contrib/redirects/locale/fa/LC_MESSAGES/django.mo +0 -0
  29. wagtail/contrib/redirects/locale/fa/LC_MESSAGES/django.po +14 -1
  30. wagtail/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  31. wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.mo +0 -0
  32. wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.po +5 -2
  33. wagtail/contrib/search_promotions/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  34. wagtail/contrib/search_promotions/locale/is_IS/LC_MESSAGES/django.po +6 -2
  35. wagtail/contrib/search_promotions/locale/sl/LC_MESSAGES/django.mo +0 -0
  36. wagtail/contrib/search_promotions/locale/sl/LC_MESSAGES/django.po +56 -2
  37. wagtail/contrib/search_promotions/locale/sv/LC_MESSAGES/django.mo +0 -0
  38. wagtail/contrib/search_promotions/locale/sv/LC_MESSAGES/django.po +5 -2
  39. wagtail/contrib/settings/locale/hi/LC_MESSAGES/django.po +1 -1
  40. wagtail/contrib/settings/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  41. wagtail/contrib/settings/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  42. wagtail/contrib/settings/locale/sk_SK/LC_MESSAGES/django.po +10 -1
  43. wagtail/contrib/settings/tests/generic/test_admin.py +144 -16
  44. wagtail/contrib/settings/tests/site_specific/test_admin.py +142 -17
  45. wagtail/contrib/settings/views.py +3 -0
  46. wagtail/contrib/simple_translation/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  47. wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  48. wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.po +5 -1
  49. wagtail/contrib/styleguide/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  50. wagtail/contrib/styleguide/locale/zh_Hans/LC_MESSAGES/django.po +3 -0
  51. wagtail/contrib/styleguide/tests.py +33 -0
  52. wagtail/contrib/styleguide/views.py +4 -1
  53. wagtail/contrib/table_block/locale/fr/LC_MESSAGES/django.mo +0 -0
  54. wagtail/contrib/table_block/locale/fr/LC_MESSAGES/django.po +27 -1
  55. wagtail/contrib/table_block/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  56. wagtail/contrib/table_block/locale/is_IS/LC_MESSAGES/django.po +28 -2
  57. wagtail/contrib/table_block/locale/sl/LC_MESSAGES/django.mo +0 -0
  58. wagtail/contrib/table_block/locale/sl/LC_MESSAGES/django.po +27 -1
  59. wagtail/contrib/typed_table_block/locale/fr/LC_MESSAGES/django.mo +0 -0
  60. wagtail/contrib/typed_table_block/locale/fr/LC_MESSAGES/django.po +12 -1
  61. wagtail/contrib/typed_table_block/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  62. wagtail/contrib/typed_table_block/locale/is_IS/LC_MESSAGES/django.po +12 -1
  63. wagtail/contrib/typed_table_block/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  64. wagtail/contrib/typed_table_block/locale/sl/LC_MESSAGES/django.mo +0 -0
  65. wagtail/contrib/typed_table_block/locale/sl/LC_MESSAGES/django.po +12 -2
  66. wagtail/documents/locale/ca/LC_MESSAGES/django.mo +0 -0
  67. wagtail/documents/locale/ca/LC_MESSAGES/django.po +3 -2
  68. wagtail/documents/locale/fa/LC_MESSAGES/django.mo +0 -0
  69. wagtail/documents/locale/fa/LC_MESSAGES/django.po +9 -0
  70. wagtail/documents/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  71. wagtail/documents/locale/is_IS/LC_MESSAGES/django.po +17 -2
  72. wagtail/documents/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  73. wagtail/documents/locale/sk_SK/LC_MESSAGES/django.po +45 -2
  74. wagtail/documents/locale/sl/LC_MESSAGES/django.mo +0 -0
  75. wagtail/documents/locale/sl/LC_MESSAGES/django.po +11 -2
  76. wagtail/documents/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  77. wagtail/documents/locale/zh_Hans/LC_MESSAGES/django.po +7 -1
  78. wagtail/images/locale/fa/LC_MESSAGES/django.mo +0 -0
  79. wagtail/images/locale/fa/LC_MESSAGES/django.po +20 -1
  80. wagtail/images/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  81. wagtail/images/locale/is_IS/LC_MESSAGES/django.po +28 -2
  82. wagtail/images/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  83. wagtail/images/locale/sk_SK/LC_MESSAGES/django.po +15 -0
  84. wagtail/images/locale/sl/LC_MESSAGES/django.mo +0 -0
  85. wagtail/images/locale/sl/LC_MESSAGES/django.po +14 -2
  86. wagtail/images/locale/sv/LC_MESSAGES/django.mo +0 -0
  87. wagtail/images/locale/sv/LC_MESSAGES/django.po +14 -2
  88. wagtail/images/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  89. wagtail/images/locale/zh_Hans/LC_MESSAGES/django.po +45 -1
  90. wagtail/images/models.py +1 -0
  91. wagtail/images/tests/test_admin_views.py +32 -0
  92. wagtail/images/tests/test_image_operations.py +12 -0
  93. wagtail/images/tests/tests.py +27 -2
  94. wagtail/images/views/images.py +7 -3
  95. wagtail/images/views/serve.py +1 -0
  96. wagtail/locale/fa/LC_MESSAGES/django.mo +0 -0
  97. wagtail/locale/fa/LC_MESSAGES/django.po +3 -0
  98. wagtail/locale/fr/LC_MESSAGES/django.mo +0 -0
  99. wagtail/locale/fr/LC_MESSAGES/django.po +23 -4
  100. wagtail/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  101. wagtail/locale/is_IS/LC_MESSAGES/django.po +22 -2
  102. wagtail/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  103. wagtail/locale/sl/LC_MESSAGES/django.mo +0 -0
  104. wagtail/locale/sl/LC_MESSAGES/django.po +77 -0
  105. wagtail/locale/sv/LC_MESSAGES/django.mo +0 -0
  106. wagtail/locale/sv/LC_MESSAGES/django.po +11 -2
  107. wagtail/locales/locale/it/LC_MESSAGES/django.mo +0 -0
  108. wagtail/locales/locale/it/LC_MESSAGES/django.po +16 -17
  109. wagtail/search/locale/fa/LC_MESSAGES/django.mo +0 -0
  110. wagtail/search/locale/fa/LC_MESSAGES/django.po +24 -0
  111. wagtail/search/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  112. wagtail/search/locale/pt_BR/LC_MESSAGES/django.po +2 -2
  113. wagtail/search/tests/test_queries.py +24 -0
  114. wagtail/search/utils.py +6 -12
  115. wagtail/snippets/locale/fa/LC_MESSAGES/django.mo +0 -0
  116. wagtail/snippets/locale/fa/LC_MESSAGES/django.po +17 -1
  117. wagtail/snippets/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  118. wagtail/snippets/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  119. wagtail/snippets/locale/sk_SK/LC_MESSAGES/django.po +3 -0
  120. wagtail/snippets/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  121. wagtail/snippets/locale/zh_Hans/LC_MESSAGES/django.po +40 -1
  122. wagtail/test/testapp/templates/tests/icons/single-quotes.svg +1 -0
  123. wagtail/tests/test_blocks.py +27 -0
  124. wagtail/tests/test_utils.py +28 -1
  125. wagtail/users/locale/fa/LC_MESSAGES/django.mo +0 -0
  126. wagtail/users/locale/fa/LC_MESSAGES/django.po +63 -1
  127. wagtail/users/locale/fr/LC_MESSAGES/django.mo +0 -0
  128. wagtail/users/locale/fr/LC_MESSAGES/django.po +44 -3
  129. wagtail/users/locale/is_IS/LC_MESSAGES/django.mo +0 -0
  130. wagtail/users/locale/is_IS/LC_MESSAGES/django.po +44 -2
  131. wagtail/users/locale/pt_BR/LC_MESSAGES/django.po +1 -1
  132. wagtail/users/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
  133. wagtail/users/locale/sk_SK/LC_MESSAGES/django.po +8 -1
  134. wagtail/users/locale/sl/LC_MESSAGES/django.mo +0 -0
  135. wagtail/users/locale/sl/LC_MESSAGES/django.po +46 -2
  136. wagtail/users/locale/sv/LC_MESSAGES/django.mo +0 -0
  137. wagtail/users/locale/sv/LC_MESSAGES/django.po +41 -2
  138. wagtail/users/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  139. wagtail/users/locale/zh_Hans/LC_MESSAGES/django.po +45 -1
  140. wagtail/utils/utils.py +26 -0
  141. wagtail/widget_adapters.py +1 -1
  142. {wagtail-6.1.1.dist-info → wagtail-6.1.3.dist-info}/METADATA +1 -1
  143. {wagtail-6.1.1.dist-info → wagtail-6.1.3.dist-info}/RECORD +147 -145
  144. {wagtail-6.1.1.dist-info → wagtail-6.1.3.dist-info}/LICENSE +0 -0
  145. {wagtail-6.1.1.dist-info → wagtail-6.1.3.dist-info}/WHEEL +0 -0
  146. {wagtail-6.1.1.dist-info → wagtail-6.1.3.dist-info}/entry_points.txt +0 -0
  147. {wagtail-6.1.1.dist-info → wagtail-6.1.3.dist-info}/top_level.txt +0 -0
@@ -171,6 +171,30 @@ class TestParseQueryString(SimpleTestCase):
171
171
  self.assertDictEqual(filters.dict(), {"author": "foo bar", "bar": "beer"})
172
172
  self.assertEqual(repr(query), repr(Phrase("hello world")))
173
173
 
174
+ def test_long_queries(self):
175
+ filters, query = parse_query_string("0" * 60_000)
176
+ self.assertEqual(filters.dict(), {})
177
+ self.assertEqual(repr(query), repr(PlainText("0" * 60_000)))
178
+
179
+ filters, _ = parse_query_string(f'{"a" * 60_000}:"foo bar"')
180
+ self.assertEqual(filters.dict(), {"a" * 60_000: "foo bar"})
181
+
182
+ def test_long_filter_value(self):
183
+ filters, _ = parse_query_string(f'foo:ba{"r" * 60_000}')
184
+ self.assertEqual(filters.dict(), {"foo": f'ba{"r" * 60_000}'})
185
+
186
+ def test_joined_filters(self):
187
+ filters, query = parse_query_string("foo:bar:baz")
188
+ self.assertEqual(filters.dict(), {"foo": "bar"})
189
+ self.assertEqual(repr(query), repr(PlainText(":baz")))
190
+
191
+ filters, query = parse_query_string("foo:'bar':baz")
192
+ self.assertEqual(filters.dict(), {"foo": "bar"})
193
+ self.assertEqual(repr(query), repr(PlainText(":baz")))
194
+
195
+ filters, query = parse_query_string("foo:'bar:baz'")
196
+ self.assertEqual(filters.dict(), {"foo": "bar:baz"})
197
+
174
198
  def test_multiple_phrases(self):
175
199
  filters, query = parse_query_string('"hello world" "hi earth"')
176
200
 
wagtail/search/utils.py CHANGED
@@ -69,6 +69,8 @@ MUL = partial(balanced_reduce, operator.mul)
69
69
 
70
70
  MAX_QUERY_STRING_LENGTH = 255
71
71
 
72
+ filters_regexp = re.compile(r'\b(\w+):(\w+|"[^"]+"|\'[^\']+\')')
73
+
72
74
 
73
75
  def normalise_query_string(query_string):
74
76
  # Truncate query string
@@ -83,20 +85,12 @@ def normalise_query_string(query_string):
83
85
 
84
86
 
85
87
  def separate_filters_from_query(query_string):
86
- filters_regexp = r'(\w+):(\w+|"[^"]+"|\'[^\']+\')'
87
-
88
88
  filters = QueryDict(mutable=True)
89
- for match_object in re.finditer(filters_regexp, query_string):
89
+ for match_object in filters_regexp.finditer(query_string):
90
90
  key, value = match_object.groups()
91
- filters.update(
92
- {
93
- key: value.strip('"')
94
- if value.strip('"') is not value
95
- else value.strip("'")
96
- }
97
- )
98
-
99
- query_string = re.sub(filters_regexp, "", query_string).strip()
91
+ filters.update({key: value.strip("\"'")})
92
+
93
+ query_string = filters_regexp.sub("", query_string).strip()
100
94
 
101
95
  return filters, query_string
102
96
 
@@ -5,6 +5,7 @@
5
5
  # Translators:
6
6
  # Amir Mahmoodi, 2022
7
7
  # Amir Mahmoodi, 2022
8
+ # Bardia Khoshroo, 2024
8
9
  # pyzenberg <pyzenberg@gmail.com>, 2017
9
10
  # pyzenberg <pyzenberg@gmail.com>, 2017
10
11
  msgid ""
@@ -13,7 +14,7 @@ msgstr ""
13
14
  "Report-Msgid-Bugs-To: \n"
14
15
  "POT-Creation-Date: 2024-05-02 10:04+0100\n"
15
16
  "PO-Revision-Date: 2014-02-19 19:01+0000\n"
16
- "Last-Translator: pyzenberg <pyzenberg@gmail.com>, 2017\n"
17
+ "Last-Translator: Bardia Khoshroo, 2024\n"
17
18
  "Language-Team: Persian (http://app.transifex.com/torchbox/wagtail/language/"
18
19
  "fa/)\n"
19
20
  "MIME-Version: 1.0\n"
@@ -36,6 +37,12 @@ msgstr "دوباره ثبت کردن در %(task_name)s"
36
37
  msgid "Submit to %(workflow_name)s"
37
38
  msgstr "ثبت کردن در %(workflow_name)s"
38
39
 
40
+ msgid "Restart workflow "
41
+ msgstr "بازنشانی رویه"
42
+
43
+ msgid "Cancel workflow "
44
+ msgstr "لغو رویه کاری"
45
+
39
46
  msgid "Unpublish"
40
47
  msgstr "لغو انتشار"
41
48
 
@@ -48,6 +55,9 @@ msgstr "ذخیره"
48
55
  msgid "Locked"
49
56
  msgstr "قفل شده"
50
57
 
58
+ msgid "Delete "
59
+ msgstr "حذف"
60
+
51
61
  #, python-format
52
62
  msgid "Used %(usage_count)s time"
53
63
  msgid_plural "Used %(usage_count)s times"
@@ -86,6 +96,9 @@ msgstr "ذخیره پیشنویس"
86
96
  msgid "Actions"
87
97
  msgstr "اعمال"
88
98
 
99
+ msgid "Select all snippets in listing"
100
+ msgstr "انتخاب تمامی اسنیپت های لیست"
101
+
89
102
  msgid "Choose"
90
103
  msgstr "انتخاب"
91
104
 
@@ -95,6 +108,9 @@ msgstr "قطعه‌ها"
95
108
  msgid "Name"
96
109
  msgstr "نام"
97
110
 
111
+ msgid "Instances"
112
+ msgstr "موارد"
113
+
98
114
  msgid "Home"
99
115
  msgstr "خانه"
100
116
 
@@ -9,7 +9,7 @@
9
9
  # Gladson <gladsonbrito@gmail.com>, 2014
10
10
  # Luiz Boaretto <lboaretto@gmail.com>, 2016
11
11
  # Luiz Boaretto <lboaretto@gmail.com>, 2016-2019,2021,2024
12
- # Rodrigo de Almeida Sottomaior Macedo <sottomaiormacedotec@gmail.com>, 2021
12
+ # Rodrigo de Almeida Sottomaior Macedo <sottomaiormacedotec@sottomaiormacedo.tech>, 2021
13
13
  msgid ""
14
14
  msgstr ""
15
15
  "Project-Id-Version: Wagtail\n"
@@ -48,6 +48,9 @@ msgstr "Naozaj chcete zmazať tento %(snippet_type_name)s?"
48
48
  msgid "Yes, delete"
49
49
  msgstr "Áno, zmazať"
50
50
 
51
+ msgid "No, don't delete"
52
+ msgstr "Nie, nezmazať"
53
+
51
54
  msgid "Saving…"
52
55
  msgstr "Ukladám…"
53
56
 
@@ -13,6 +13,7 @@
13
13
  # 祝沙军 <zhushajun@gmail.com>, 2017
14
14
  # Vincent Zhao <zhaopu2008@gmail.com>, 2017
15
15
  # Yin Guanhao <sopium@mysterious.site>, 2021
16
+ # Yu Cheng, 2024
16
17
  # 祝沙军 <zhushajun@gmail.com>, 2017
17
18
  # 汇民 王 <whuim@qq.com>, 2018-2019,2021
18
19
  # 祝沙军 <zhushajun@gmail.com>, 2017
@@ -22,7 +23,7 @@ msgstr ""
22
23
  "Report-Msgid-Bugs-To: \n"
23
24
  "POT-Creation-Date: 2024-05-02 10:04+0100\n"
24
25
  "PO-Revision-Date: 2014-02-19 19:01+0000\n"
25
- "Last-Translator: Ford Guo <agile.guo@gmail.com>, 2023\n"
26
+ "Last-Translator: Yu Cheng, 2024\n"
26
27
  "Language-Team: Chinese (China) (http://app.transifex.com/torchbox/wagtail/"
27
28
  "language/zh_CN/)\n"
28
29
  "MIME-Version: 1.0\n"
@@ -70,10 +71,18 @@ msgstr "%(label)s 和发布"
70
71
  msgid "Wagtail snippets"
71
72
  msgstr "Wagtail 片段"
72
73
 
74
+ msgid "Delete selected snippets"
75
+ msgstr "删除选定的片段"
76
+
73
77
  #, python-format
74
78
  msgid "%(model_name)s '%(object)s' deleted."
75
79
  msgstr "%(model_name)s '%(object)s' 已删除。"
76
80
 
81
+ #, python-format
82
+ msgid "%(count)d %(model_name)s deleted."
83
+ msgid_plural "%(count)d %(model_name)s deleted."
84
+ msgstr[0] "%(count)d %(model_name)s 已删除。"
85
+
77
86
  #, python-format
78
87
  msgid "Delete %(snippet_type_name)s"
79
88
  msgstr "删除 %(snippet_type_name)s"
@@ -94,12 +103,24 @@ msgstr "确定要删除 %(snippet_type_name)s?"
94
103
  msgid "Are you sure you want to delete %(count)s %(snippet_type_name)s?"
95
104
  msgstr "你确定要删除 %(count)s%(snippet_type_name)s ?"
96
105
 
106
+ #, python-format
107
+ msgid "You don't have permission to delete this %(snippet_type_name)s"
108
+ msgstr "您无权删除此 %(snippet_type_name)s"
109
+
110
+ #, python-format
111
+ msgid "You don't have permission to delete these %(snippet_plural_name)s"
112
+ msgstr "您无权删除这些 %(snippet_plural_name)s"
113
+
97
114
  msgid "Yes, delete"
98
115
  msgstr "是的,删除"
99
116
 
100
117
  msgid "No, don't delete"
101
118
  msgstr "否,不删除"
102
119
 
120
+ #, python-format
121
+ msgid "Sorry, no snippets match \"<em>%(search_query)s</em>\""
122
+ msgstr "抱歉,没有片段匹配“<em>%(search_query)s</em>”"
123
+
103
124
  msgid "Publishing…"
104
125
  msgstr "正在发布..."
105
126
 
@@ -112,12 +133,18 @@ msgstr "正在保存……"
112
133
  msgid "Replace current draft"
113
134
  msgstr "替换当前的草稿"
114
135
 
136
+ msgid "Replace current revision"
137
+ msgstr "替换当前版本"
138
+
115
139
  msgid "Save draft"
116
140
  msgstr "保存草稿"
117
141
 
118
142
  msgid "Actions"
119
143
  msgstr "动作"
120
144
 
145
+ msgid "Select all snippets in listing"
146
+ msgstr "选择列表中的所有片段"
147
+
121
148
  msgid "Choose"
122
149
  msgstr "选择"
123
150
 
@@ -130,6 +157,18 @@ msgstr "名字"
130
157
  msgid "Instances"
131
158
  msgstr "实例"
132
159
 
160
+ #, python-format
161
+ msgid "More options for '%(title)s'"
162
+ msgstr "“%(title)s”的更多选项"
163
+
164
+ #, python-format
165
+ msgid "Edit this %(model_name)s"
166
+ msgstr "编辑此%(model_name)s"
167
+
168
+ #, python-format
169
+ msgid "%(model_name)s history"
170
+ msgstr "%(model_name)s 历史"
171
+
133
172
  msgid "Home"
134
173
  msgstr "首页"
135
174
 
@@ -0,0 +1 @@
1
+ <svg id='icon-single-quotes' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><!--! Custom icon with single quotes for the id --></svg>
@@ -1122,6 +1122,18 @@ class TestChoiceBlock(WagtailTestUtils, SimpleTestCase):
1122
1122
  with self.assertRaises(ValidationError):
1123
1123
  block.clean("coffee")
1124
1124
 
1125
+ def test_get_form_state(self):
1126
+ block = blocks.ChoiceBlock(choices=[("tea", "Tea"), ("coffee", "Coffee")])
1127
+ form_state = block.get_form_state("tea")
1128
+ self.assertEqual(form_state, ["tea"])
1129
+
1130
+ def test_get_form_state_with_radio_widget(self):
1131
+ block = blocks.ChoiceBlock(
1132
+ choices=[("tea", "Tea"), ("coffee", "Coffee")], widget=forms.RadioSelect
1133
+ )
1134
+ form_state = block.get_form_state("tea")
1135
+ self.assertEqual(form_state, ["tea"])
1136
+
1125
1137
 
1126
1138
  class TestMultipleChoiceBlock(WagtailTestUtils, SimpleTestCase):
1127
1139
  def setUp(self):
@@ -1508,6 +1520,21 @@ class TestMultipleChoiceBlock(WagtailTestUtils, SimpleTestCase):
1508
1520
  with self.assertRaises(ValidationError):
1509
1521
  block.clean("coffee")
1510
1522
 
1523
+ def test_get_form_state(self):
1524
+ block = blocks.MultipleChoiceBlock(
1525
+ choices=[("tea", "Tea"), ("coffee", "Coffee")]
1526
+ )
1527
+ form_state = block.get_form_state(["tea", "coffee"])
1528
+ self.assertEqual(form_state, ["tea", "coffee"])
1529
+
1530
+ def test_get_form_state_with_checkbox_widget(self):
1531
+ block = blocks.ChoiceBlock(
1532
+ choices=[("tea", "Tea"), ("coffee", "Coffee")],
1533
+ widget=forms.CheckboxSelectMultiple,
1534
+ )
1535
+ form_state = block.get_form_state(["tea", "coffee"])
1536
+ self.assertEqual(form_state, ["tea", "coffee"])
1537
+
1511
1538
 
1512
1539
  class TestRawHTMLBlock(unittest.TestCase):
1513
1540
  def test_get_default_with_fallback_value(self):
@@ -28,7 +28,7 @@ from wagtail.coreutils import (
28
28
  )
29
29
  from wagtail.models import Page, Site
30
30
  from wagtail.utils.file import hash_filelike
31
- from wagtail.utils.utils import deep_update
31
+ from wagtail.utils.utils import deep_update, flatten_choices
32
32
 
33
33
 
34
34
  class TestCamelCaseToUnderscore(TestCase):
@@ -575,3 +575,30 @@ class HashFileLikeTestCase(SimpleTestCase):
575
575
  hash_filelike(FakeLargeFile()),
576
576
  "bd36f0c5a02cd6e9e34202ea3ff8db07b533e025",
577
577
  )
578
+
579
+
580
+ class TestFlattenChoices(SimpleTestCase):
581
+ def test_tuple_choices(self):
582
+ choices = [(1, "1st"), (2, "2nd")]
583
+ self.assertEqual(flatten_choices(choices), {"1": "1st", "2": "2nd"})
584
+
585
+ def test_grouped_tuple_choices(self):
586
+ choices = [("Group", [(1, "1st"), (2, "2nd")])]
587
+ self.assertEqual(flatten_choices(choices), {"1": "1st", "2": "2nd"})
588
+
589
+ def test_dictionary_choices(self):
590
+ choices = {
591
+ "Martial Arts": {"judo": "Judo", "karate": "Karate"},
592
+ "Racket": {"badminton": "Badminton", "tennis": "Tennis"},
593
+ "unknown": "Unknown",
594
+ }
595
+ self.assertEqual(
596
+ flatten_choices(choices),
597
+ {
598
+ "judo": "Judo",
599
+ "karate": "Karate",
600
+ "badminton": "Badminton",
601
+ "tennis": "Tennis",
602
+ "unknown": "Unknown",
603
+ },
604
+ )
@@ -5,6 +5,7 @@
5
5
  # Translators:
6
6
  # Amir Mahmoodi, 2022
7
7
  # Amir Mahmoodi, 2022
8
+ # Bardia Khoshroo, 2024
8
9
  # pyzenberg <pyzenberg@gmail.com>, 2017
9
10
  # pyzenberg <pyzenberg@gmail.com>, 2017
10
11
  msgid ""
@@ -13,7 +14,7 @@ msgstr ""
13
14
  "Report-Msgid-Bugs-To: \n"
14
15
  "POT-Creation-Date: 2024-05-02 10:04+0100\n"
15
16
  "PO-Revision-Date: 2014-02-19 11:54+0000\n"
16
- "Last-Translator: pyzenberg <pyzenberg@gmail.com>, 2017\n"
17
+ "Last-Translator: Bardia Khoshroo, 2024\n"
17
18
  "Language-Team: Persian (http://app.transifex.com/torchbox/wagtail/language/"
18
19
  "fa/)\n"
19
20
  "MIME-Version: 1.0\n"
@@ -22,6 +23,12 @@ msgstr ""
22
23
  "Language: fa\n"
23
24
  "Plural-Forms: nplurals=2; plural=(n > 1);\n"
24
25
 
26
+ msgid "Wagtail users"
27
+ msgstr "کاربران وگتیل"
28
+
29
+ msgid "Required. Letters, digits and @/./+/-/_ only."
30
+ msgstr "الزامی. تنها حروف، اعداد و @/./+/-/_ مجاز هستند."
31
+
25
32
  msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
26
33
  msgstr "این مقدار تنها می‌تواند شامل حروف، اعداد و نویسه های @/./+/-/_ باشد."
27
34
 
@@ -82,24 +89,73 @@ msgstr "هشدارهای رد شده"
82
89
  msgid "Receive notification when your page edit is rejected"
83
90
  msgstr "دریافت هشدار هنگام رد شدن ویرایش صفحه"
84
91
 
92
+ msgid "updated comments notifications"
93
+ msgstr "اطلاعیه برای نظرات بروز رسانی شده"
94
+
95
+ msgid ""
96
+ "Receive notification when comments have been created, resolved, or deleted "
97
+ "on a page that you have subscribed to receive comment notifications on"
98
+ msgstr ""
99
+ "برای صفحاتی که ساخته، حذف یا حل شده اند و شما عضو شده اید، اطلاعیه دریافت "
100
+ "کنید."
101
+
85
102
  msgid "preferred language"
86
103
  msgstr "زبان ترجیحی"
87
104
 
88
105
  msgid "Select language for the admin"
89
106
  msgstr "زبانی را برای راهبری انتخاب کنید"
90
107
 
108
+ msgid "current time zone"
109
+ msgstr "منطقه زمانی کنونی"
110
+
111
+ msgid "Select your current time zone"
112
+ msgstr "منطقه زمانی کنونی را انتخاب کنید"
113
+
91
114
  msgid "profile picture"
92
115
  msgstr "تصویر پروفایل"
93
116
 
117
+ msgid "System default"
118
+ msgstr "تنظیمات پیشفرض سیستم"
119
+
120
+ msgid "Light"
121
+ msgstr "روشن"
122
+
123
+ msgid "Dark"
124
+ msgstr "تیره"
125
+
126
+ msgid "admin theme"
127
+ msgstr "تم ادمین"
128
+
94
129
  msgid "Default"
95
130
  msgstr "پیشفرض"
96
131
 
132
+ #. Translators: "Density" is the term used to describe the amount of space
133
+ #. between elements in the user interface
134
+ msgid "density"
135
+ msgstr "غلظت"
136
+
97
137
  msgid "user profile"
98
138
  msgstr "پروفایل کاربر"
99
139
 
140
+ msgid "user profiles"
141
+ msgstr "مشخصات کاربری"
142
+
143
+ msgid "You don't have permission to edit this user"
144
+ msgid_plural "You don't have permission to edit these users"
145
+ msgstr[0] "شما مجوز تغییر این کاربر را ندارید"
146
+ msgstr[1] "شما مجوز تغییر این کاربر را ندارید"
147
+
100
148
  msgid "Delete"
101
149
  msgstr "حذف"
102
150
 
151
+ msgid "Are you sure you want to delete these users?"
152
+ msgstr "آیا مطمئنید که میخواهید این کاربر حذف شود؟"
153
+
154
+ msgid "You don't have permission to delete this user"
155
+ msgid_plural "You don't have permission to delete these users"
156
+ msgstr[0] "شما مجوز حذف این کاربران را ندارید"
157
+ msgstr[1] "شما مجوز حذف این کاربران را ندارید"
158
+
103
159
  msgid "Yes, delete"
104
160
  msgstr "بله حذف شود"
105
161
 
@@ -221,6 +277,12 @@ msgstr "به دلیل بروز خطا گروه ذخیره نشد."
221
277
  msgid "Group '%(object)s' deleted."
222
278
  msgstr "گروه '%(object)s' حذف شد."
223
279
 
280
+ msgid "Last login"
281
+ msgstr "آخرین ورود"
282
+
283
+ msgid "Group"
284
+ msgstr "گروه"
285
+
224
286
  msgid "Add a user"
225
287
  msgstr "افزودن یک کاربر"
226
288
 
@@ -17,14 +17,14 @@
17
17
  # nahuel, 2014
18
18
  # incognitae <pierre@onoffdesign.com>, 2016
19
19
  # Sebastien Andrivet <sebastien@andrivet.com>, 2016
20
- # Sébastien Corbin <seb.corbin@gmail.com>, 2023
20
+ # Sébastien Corbin <seb.corbin@gmail.com>, 2023-2024
21
21
  msgid ""
22
22
  msgstr ""
23
23
  "Project-Id-Version: Wagtail\n"
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-19 11:54+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"
@@ -142,6 +142,17 @@ msgstr "Sombre"
142
142
  msgid "admin theme"
143
143
  msgstr "Thème d'interface d'administration"
144
144
 
145
+ msgid "Default"
146
+ msgstr "Par défaut"
147
+
148
+ msgid "Snug"
149
+ msgstr "Ajusté"
150
+
151
+ #. Translators: "Density" is the term used to describe the amount of space
152
+ #. between elements in the user interface
153
+ msgid "density"
154
+ msgstr "densité"
155
+
145
156
  msgid "user profile"
146
157
  msgstr "compte utilisateur"
147
158
 
@@ -279,6 +290,30 @@ msgstr "Déverrouiller"
279
290
  msgid "Custom permissions"
280
291
  msgstr "Permissions personnalisées"
281
292
 
293
+ msgid "Toggle all"
294
+ msgstr "Activer/Désactiver tout"
295
+
296
+ msgid "Toggle all add permissions"
297
+ msgstr "Activer/Désactiver toutes les permissions d'ajout"
298
+
299
+ msgid "Toggle all change permissions"
300
+ msgstr "Activer/Désactiver toutes les permissions de modification"
301
+
302
+ msgid "Toggle all delete permissions"
303
+ msgstr "Activer/Désactiver toutes les permissions de suppression"
304
+
305
+ msgid "Toggle all publish permissions"
306
+ msgstr "Activer/Désactiver toutes les permissions de publication"
307
+
308
+ msgid "Toggle all lock permissions"
309
+ msgstr "Activer/Désactiver toutes les permissions de verrouillage"
310
+
311
+ msgid "Toggle all unlock permissions"
312
+ msgstr "Activer/Désactiver toutes les permissions de déverrouillage"
313
+
314
+ msgid "Toggle all custom permissions"
315
+ msgstr "Activer/Désactiver toutes les permissions personnalisées"
316
+
282
317
  msgid "Other permissions"
283
318
  msgstr "Autres permissions"
284
319
 
@@ -321,6 +356,9 @@ msgstr "Supprimer l'utilisateur"
321
356
  msgid "Select all users in listing"
322
357
  msgstr "Sélectionner tous les utilisateurs dans la liste"
323
358
 
359
+ msgid "Sorry, no users match your query"
360
+ msgstr "Désolé, aucun utilisateur ne correspond à votre recherche"
361
+
324
362
  #, python-format
325
363
  msgid ""
326
364
  "There are no users configured. Why not <a "
@@ -409,8 +447,11 @@ msgstr "Voir les utilisateurs dans ce groupe"
409
447
  msgid "Group '%(object)s' deleted."
410
448
  msgstr "Groupe « %(object)s » supprimé."
411
449
 
450
+ msgid "Last login"
451
+ msgstr "Dernière connexion"
452
+
412
453
  msgid "Group"
413
- msgstr "Group"
454
+ msgstr "Groupe"
414
455
 
415
456
  msgid "Add a user"
416
457
  msgstr "Ajouter un utilisateur"
@@ -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-2023
6
+ # Arnar Tumi Þorsteinsson <arnartumi@gmail.com>, 2015-2018,2020-2024
7
7
  # saevarom <saevar@saevar.is>, 2017-2023
8
8
  msgid ""
9
9
  msgstr ""
@@ -11,7 +11,8 @@ msgstr ""
11
11
  "Report-Msgid-Bugs-To: \n"
12
12
  "POT-Creation-Date: 2024-05-02 10:04+0100\n"
13
13
  "PO-Revision-Date: 2014-02-19 11:54+0000\n"
14
- "Last-Translator: saevarom <saevar@saevar.is>, 2017-2023\n"
14
+ "Last-Translator: Arnar Tumi Þorsteinsson <arnartumi@gmail.com>, "
15
+ "2015-2018,2020-2024\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"
@@ -128,6 +129,14 @@ msgstr "Þema stjórnkerfis"
128
129
  msgid "Default"
129
130
  msgstr "Sjálfgefið"
130
131
 
132
+ msgid "Snug"
133
+ msgstr "Þétt"
134
+
135
+ #. Translators: "Density" is the term used to describe the amount of space
136
+ #. between elements in the user interface
137
+ msgid "density"
138
+ msgstr "Þéttleiki"
139
+
131
140
  msgid "user profile"
132
141
  msgstr "uppsetning notanda"
133
142
 
@@ -256,6 +265,30 @@ msgstr "Aflæsa"
256
265
  msgid "Custom permissions"
257
266
  msgstr "Sérsniðnar heimildir"
258
267
 
268
+ msgid "Toggle all"
269
+ msgstr "Sýna/fela allt"
270
+
271
+ msgid "Toggle all add permissions"
272
+ msgstr "Sýna/fela heimildir til viðbóta"
273
+
274
+ msgid "Toggle all change permissions"
275
+ msgstr "Sýna/fela heimildir til að breyta"
276
+
277
+ msgid "Toggle all delete permissions"
278
+ msgstr "Sýna/fela heimildir til að eyða"
279
+
280
+ msgid "Toggle all publish permissions"
281
+ msgstr "Sýna/fela útgáfu heimildir"
282
+
283
+ msgid "Toggle all lock permissions"
284
+ msgstr "Sýna/fela læsinga heimildir"
285
+
286
+ msgid "Toggle all unlock permissions"
287
+ msgstr "Sýna/fela aflæsinga heimildir"
288
+
289
+ msgid "Toggle all custom permissions"
290
+ msgstr "Sýna/fela sérsniðnar heimildir"
291
+
259
292
  msgid "Other permissions"
260
293
  msgstr "Aðrar heimildir"
261
294
 
@@ -298,6 +331,9 @@ msgstr "Eyða notanda"
298
331
  msgid "Select all users in listing"
299
332
  msgstr "Velja alla notendur"
300
333
 
334
+ msgid "Sorry, no users match your query"
335
+ msgstr "Því miður eru engir notendur sem passa við leitina þína"
336
+
301
337
  #, python-format
302
338
  msgid ""
303
339
  "There are no users configured. Why not <a "
@@ -379,6 +415,12 @@ msgstr "Skoða notendur í þessari grúppu"
379
415
  msgid "Group '%(object)s' deleted."
380
416
  msgstr "Hópi '%(object)s' eytt."
381
417
 
418
+ msgid "Last login"
419
+ msgstr "Síðasta innskráning"
420
+
421
+ msgid "Group"
422
+ msgstr "Hópur"
423
+
382
424
  msgid "Add a user"
383
425
  msgstr "Bæta við notanda"
384
426
 
@@ -13,7 +13,7 @@
13
13
  # Iuri L. Machado, 2021
14
14
  # Luiz Boaretto <lboaretto@gmail.com>, 2016
15
15
  # Luiz Boaretto <lboaretto@gmail.com>, 2016-2018,2021,2024
16
- # Rodrigo de Almeida Sottomaior Macedo <sottomaiormacedotec@gmail.com>, 2022
16
+ # Rodrigo de Almeida Sottomaior Macedo <sottomaiormacedotec@sottomaiormacedo.tech>, 2022
17
17
  # Thiago Cangussu <cangussu.thg@gmail.com>, 2014
18
18
  # Thiago Cangussu <cng.thg@gmail.com>, 2014
19
19
  msgid ""