wagtail 6.3.5__py3-none-any.whl → 6.3.6__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.
wagtail/__init__.py CHANGED
@@ -6,7 +6,7 @@ from wagtail.utils.version import get_semver_version, get_version
6
6
 
7
7
  # major.minor.patch.release.number
8
8
  # release must be one of alpha, beta, rc, or final
9
- VERSION = (6, 3, 5, "final", 1)
9
+ VERSION = (6, 3, 6, "final", 1)
10
10
 
11
11
  __version__ = get_version(VERSION)
12
12
 
@@ -1,6 +1,7 @@
1
1
  import datetime
2
2
  from functools import wraps
3
3
 
4
+ from django.contrib.auth.models import Permission
4
5
  from django.test import TestCase, override_settings
5
6
  from django.urls import reverse
6
7
  from django.utils import timezone
@@ -228,6 +229,47 @@ class TestPreview(WagtailTestUtils, TestCase):
228
229
  self.assertContains(response, "<li>Parties</li>")
229
230
  self.assertContains(response, "<li>Holidays</li>")
230
231
 
232
+ def test_preview_on_create_without_permissions(self):
233
+ # Remove privileges from user
234
+ self.user.is_superuser = False
235
+ self.user.user_permissions.add(
236
+ Permission.objects.get(
237
+ content_type__app_label="wagtailadmin", codename="access_admin"
238
+ )
239
+ )
240
+ self.user.save()
241
+
242
+ preview_url = reverse(
243
+ "wagtailadmin_pages:preview_on_add",
244
+ args=("tests", "eventpage", self.home_page.id),
245
+ )
246
+
247
+ response = self.client.post(
248
+ preview_url,
249
+ self.post_data,
250
+ )
251
+ self.assertEqual(response.status_code, 302)
252
+ self.assertRedirects(response, reverse("wagtailadmin_home"))
253
+
254
+ def test_preview_on_create_get_without_permissions(self):
255
+ # Remove privileges from user
256
+ self.user.is_superuser = False
257
+ self.user.user_permissions.add(
258
+ Permission.objects.get(
259
+ content_type__app_label="wagtailadmin", codename="access_admin"
260
+ )
261
+ )
262
+ self.user.save()
263
+
264
+ preview_url = reverse(
265
+ "wagtailadmin_pages:preview_on_add",
266
+ args=("tests", "eventpage", self.home_page.id),
267
+ )
268
+
269
+ response = self.client.get(preview_url)
270
+ self.assertEqual(response.status_code, 302)
271
+ self.assertRedirects(response, reverse("wagtailadmin_home"))
272
+
231
273
  def test_preview_on_edit_with_m2m_field(self):
232
274
  preview_url = reverse(
233
275
  "wagtailadmin_pages:preview_on_edit", args=(self.event_page.id,)
@@ -318,6 +360,45 @@ class TestPreview(WagtailTestUtils, TestCase):
318
360
  response = self.client.get(preview_url)
319
361
  self.assertEqual(response.status_code, 200)
320
362
 
363
+ def test_preview_on_edit_without_permissions(self):
364
+ # Remove privileges from user
365
+ self.user.is_superuser = False
366
+ self.user.user_permissions.add(
367
+ Permission.objects.get(
368
+ content_type__app_label="wagtailadmin", codename="access_admin"
369
+ )
370
+ )
371
+ self.user.save()
372
+
373
+ preview_url = reverse(
374
+ "wagtailadmin_pages:preview_on_edit", args=(self.event_page.id,)
375
+ )
376
+
377
+ response = self.client.post(
378
+ preview_url,
379
+ self.post_data,
380
+ )
381
+ self.assertEqual(response.status_code, 302)
382
+ self.assertRedirects(response, reverse("wagtailadmin_home"))
383
+
384
+ def test_preview_on_edit_get_without_permissions(self):
385
+ # Remove privileges from user
386
+ self.user.is_superuser = False
387
+ self.user.user_permissions.add(
388
+ Permission.objects.get(
389
+ content_type__app_label="wagtailadmin", codename="access_admin"
390
+ )
391
+ )
392
+ self.user.save()
393
+
394
+ preview_url = reverse(
395
+ "wagtailadmin_pages:preview_on_edit", args=(self.event_page.id,)
396
+ )
397
+
398
+ response = self.client.get(preview_url)
399
+ self.assertEqual(response.status_code, 302)
400
+ self.assertRedirects(response, reverse("wagtailadmin_home"))
401
+
321
402
  def test_preview_on_create_clear_preview_data(self):
322
403
  preview_session_key = "wagtail-preview-tests-eventpage-{}".format(
323
404
  self.home_page.id
@@ -13,13 +13,16 @@ from wagtail.admin.panels import get_edit_handler
13
13
  from wagtail.models import PreviewableMixin, RevisionMixin
14
14
  from wagtail.utils.decorators import xframe_options_sameorigin_override
15
15
 
16
+ from .permissions import PermissionCheckedMixin
16
17
 
17
- class PreviewOnEdit(View):
18
+
19
+ class PreviewOnEdit(PermissionCheckedMixin, View):
18
20
  model = None
19
21
  form_class = None
20
22
  http_method_names = ("post", "get", "delete")
21
23
  preview_expiration_timeout = 60 * 60 * 24 # seconds
22
24
  session_key_prefix = "wagtail-preview-"
25
+ permission_required = "change"
23
26
 
24
27
  def setup(self, request, *args, **kwargs):
25
28
  super().setup(request, *args, **kwargs)
@@ -50,6 +53,8 @@ class PreviewOnEdit(View):
50
53
 
51
54
  def get_object(self):
52
55
  obj = get_object_or_404(self.model, pk=unquote(str(self.kwargs["pk"])))
56
+ if not self.user_has_permission_for_instance(self.permission_required, obj):
57
+ raise PermissionDenied
53
58
  if isinstance(obj, RevisionMixin):
54
59
  obj = obj.get_latest_revision_as_object()
55
60
  return obj
@@ -124,6 +129,8 @@ class PreviewOnEdit(View):
124
129
 
125
130
 
126
131
  class PreviewOnCreate(PreviewOnEdit):
132
+ permission_required = "add"
133
+
127
134
  @property
128
135
  def session_key(self):
129
136
  app_label = self.model._meta.app_label
@@ -27,9 +27,13 @@ class PreviewOnEdit(GenericPreviewOnEdit):
27
27
  return "{}{}".format(self.session_key_prefix, self.kwargs["page_id"])
28
28
 
29
29
  def get_object(self):
30
- return get_object_or_404(
30
+ page = get_object_or_404(
31
31
  Page, id=self.kwargs["page_id"]
32
32
  ).get_latest_revision_as_object()
33
+ page_perms = page.permissions_for_user(self.request.user)
34
+ if not page_perms.can_edit():
35
+ raise PermissionDenied
36
+ return page
33
37
 
34
38
  def get_form(self, query_dict):
35
39
  form_class = self.object.get_edit_handler().get_form_class()
@@ -74,6 +78,11 @@ class PreviewOnCreate(PreviewOnEdit):
74
78
 
75
79
  page = content_type.model_class()()
76
80
  parent_page = get_object_or_404(Page, id=parent_page_id).specific
81
+
82
+ parent_page_perms = parent_page.permissions_for_user(self.request.user)
83
+ if not parent_page_perms.can_add_subpage():
84
+ raise PermissionDenied
85
+
77
86
  # We need to populate treebeard's path / depth fields in order to
78
87
  # pass validation. We can't make these 100% consistent with the rest
79
88
  # of the tree without making actual database changes (such as
File without changes
@@ -0,0 +1,45 @@
1
+ from django.db import connection, migrations
2
+
3
+ # This migration takes on the base model defined in 0005_create_indexentry and adds certain fields that are specific to each database system
4
+ class Migration(migrations.Migration):
5
+
6
+ dependencies = [
7
+ ("wagtailsearch", "0008_remove_query_and_querydailyhits_models"),
8
+ ]
9
+
10
+ # Reverse the usage of ngram parser with MySQL introduced in
11
+ # ``0006_customise_indexentry.py``.
12
+ #
13
+ # Ngram parser is designed primarily for languages which to not use spaces to
14
+ # delimit words (most commonly CJK languages). When using ngram with English or
15
+ # other non-CJK languages, it has the adverse affect of parsing words into
16
+ # non-sensical queries that return no results. MySQL default ngram token size is 2
17
+ # characters, so for example the word "wagtail" would be parsed into 6 separate
18
+ # words as follows":
19
+ #
20
+ # "wa" "ag" "gt" "ta" "ai" "il"
21
+ #
22
+ # In English, these tokens would provide useless search results, and in most cases,
23
+ # no results are returned at all when using autocomplete from the Wagtail admin.
24
+ #
25
+ # See: https://dev.mysql.com/doc/refman/8.0/en/fulltext-search-ngram.html
26
+ if connection.vendor == "mysql" and not connection.mysql_is_mariadb:
27
+ operations = [
28
+ migrations.RunSQL(
29
+ sql="""
30
+ ALTER TABLE wagtailsearch_indexentry
31
+ DROP INDEX `fulltext_autocomplete`;
32
+
33
+ ALTER TABLE wagtailsearch_indexentry
34
+ ADD FULLTEXT INDEX `fulltext_autocomplete` (`autocomplete`);
35
+ """,
36
+ reverse_sql="""
37
+ ALTER TABLE wagtailsearch_indexentry
38
+ DROP INDEX `fulltext_autocomplete`;
39
+
40
+ ALTER TABLE wagtailsearch_indexentry
41
+ ADD FULLTEXT INDEX `fulltext_autocomplete` (`autocomplete`)
42
+ WITH PARSER ngram;
43
+ """,
44
+ )
45
+ ]
@@ -1,5 +1,6 @@
1
1
  import datetime
2
2
 
3
+ from django.contrib.auth.models import Permission
3
4
  from django.test import TestCase, override_settings
4
5
  from django.urls import reverse
5
6
  from django.utils import timezone
@@ -113,6 +114,32 @@ class TestPreview(WagtailTestUtils, TestCase):
113
114
  self.assertContains(response, "<li>Parties</li>")
114
115
  self.assertContains(response, "<li>Holidays</li>")
115
116
 
117
+ def test_preview_on_create_without_permissions(self):
118
+ # Remove privileges from user
119
+ self.user.is_superuser = False
120
+ self.user.user_permissions.add(
121
+ Permission.objects.get(
122
+ content_type__app_label="wagtailadmin", codename="access_admin"
123
+ )
124
+ )
125
+ self.user.save()
126
+ response = self.client.post(self.preview_on_add_url, self.post_data)
127
+ self.assertEqual(response.status_code, 302)
128
+ self.assertRedirects(response, reverse("wagtailadmin_home"))
129
+
130
+ def test_preview_on_create_get_without_permissions(self):
131
+ # Remove privileges from user
132
+ self.user.is_superuser = False
133
+ self.user.user_permissions.add(
134
+ Permission.objects.get(
135
+ content_type__app_label="wagtailadmin", codename="access_admin"
136
+ )
137
+ )
138
+ self.user.save()
139
+ response = self.client.get(self.preview_on_add_url)
140
+ self.assertEqual(response.status_code, 302)
141
+ self.assertRedirects(response, reverse("wagtailadmin_home"))
142
+
116
143
  def test_preview_on_edit_with_m2m_field(self):
117
144
  response = self.client.post(self.preview_on_edit_url, self.post_data)
118
145
 
@@ -200,6 +227,32 @@ class TestPreview(WagtailTestUtils, TestCase):
200
227
  self.client.session,
201
228
  )
202
229
 
230
+ def test_preview_on_edit_without_permissions(self):
231
+ # Remove privileges from user
232
+ self.user.is_superuser = False
233
+ self.user.user_permissions.add(
234
+ Permission.objects.get(
235
+ content_type__app_label="wagtailadmin", codename="access_admin"
236
+ )
237
+ )
238
+ self.user.save()
239
+ response = self.client.post(self.preview_on_edit_url, self.post_data)
240
+ self.assertEqual(response.status_code, 302)
241
+ self.assertRedirects(response, reverse("wagtailadmin_home"))
242
+
243
+ def test_preview_on_edit_get_without_permissions(self):
244
+ # Remove privileges from user
245
+ self.user.is_superuser = False
246
+ self.user.user_permissions.add(
247
+ Permission.objects.get(
248
+ content_type__app_label="wagtailadmin", codename="access_admin"
249
+ )
250
+ )
251
+ self.user.save()
252
+ response = self.client.get(self.preview_on_edit_url)
253
+ self.assertEqual(response.status_code, 302)
254
+ self.assertRedirects(response, reverse("wagtailadmin_home"))
255
+
203
256
  def test_preview_on_create_clear_preview_data(self):
204
257
  # Set a fake preview session data for the page
205
258
  self.client.session[self.session_key_prefix] = "test data"
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: wagtail
3
- Version: 6.3.5
3
+ Version: 6.3.6
4
4
  Summary: A Django content management system.
5
5
  Home-page: https://wagtail.org/
6
6
  Author: Wagtail core team + contributors
@@ -37,7 +37,7 @@ Requires-Dist: django-taggit<6.2,>=5.0
37
37
  Requires-Dist: django-treebeard<5.0,>=4.5.1
38
38
  Requires-Dist: djangorestframework<4.0,>=3.15.1
39
39
  Requires-Dist: django-filter>=23.3
40
- Requires-Dist: draftjs_exporter<6.0,>=2.1.5
40
+ Requires-Dist: draftjs-exporter<6.0,>=2.1.5
41
41
  Requires-Dist: Pillow<12.0.0,>=9.1.0
42
42
  Requires-Dist: beautifulsoup4<4.13,>=4.8
43
43
  Requires-Dist: Willow[heif]<2,>=1.10.0
@@ -47,6 +47,13 @@ Requires-Dist: openpyxl<4.0,>=3.0.10
47
47
  Requires-Dist: anyascii>=0.1.5
48
48
  Requires-Dist: telepath<1,>=0.3.1
49
49
  Requires-Dist: laces<0.2,>=0.1
50
+ Provides-Extra: docs
51
+ Requires-Dist: pyenchant<4,>=3.1.1; extra == "docs"
52
+ Requires-Dist: sphinxcontrib-spelling<8,>=7; extra == "docs"
53
+ Requires-Dist: Sphinx>=7.3; extra == "docs"
54
+ Requires-Dist: sphinx-autobuild>=0.6.0; extra == "docs"
55
+ Requires-Dist: sphinx-wagtail-theme==6.4.0; extra == "docs"
56
+ Requires-Dist: myst-parser==2.0.0; extra == "docs"
50
57
  Provides-Extra: testing
51
58
  Requires-Dist: python-dateutil>=2.7; extra == "testing"
52
59
  Requires-Dist: Jinja2<3.2,>=3.0; extra == "testing"
@@ -64,25 +71,6 @@ Requires-Dist: djhtml==3.0.6; extra == "testing"
64
71
  Requires-Dist: polib<2.0,>=1.1; extra == "testing"
65
72
  Requires-Dist: factory-boy>=3.2; extra == "testing"
66
73
  Requires-Dist: tblib<3.0,>=2.0; extra == "testing"
67
- Provides-Extra: docs
68
- Requires-Dist: pyenchant<4,>=3.1.1; extra == "docs"
69
- Requires-Dist: sphinxcontrib-spelling<8,>=7; extra == "docs"
70
- Requires-Dist: Sphinx>=7.3; extra == "docs"
71
- Requires-Dist: sphinx-autobuild>=0.6.0; extra == "docs"
72
- Requires-Dist: sphinx-wagtail-theme==6.4.0; extra == "docs"
73
- Requires-Dist: myst_parser==2.0.0; extra == "docs"
74
- Dynamic: author
75
- Dynamic: author-email
76
- Dynamic: classifier
77
- Dynamic: description
78
- Dynamic: home-page
79
- Dynamic: license
80
- Dynamic: license-file
81
- Dynamic: project-url
82
- Dynamic: provides-extra
83
- Dynamic: requires-dist
84
- Dynamic: requires-python
85
- Dynamic: summary
86
74
 
87
75
  Wagtail is an open source content management system built on Django, with a strong community and commercial support. It’s focused on user experience, and offers precise control for designers and developers.
88
76
 
@@ -1,4 +1,4 @@
1
- wagtail/__init__.py,sha256=IxxJ8QzgHcMVGHTR7mCmSlH5JF45wP-EMKbGOWjOEn0,724
1
+ wagtail/__init__.py,sha256=ApN6kHvYZSoJPHcuzflbUiT5ByYjWpN9gJiDhbAN-cU,724
2
2
  wagtail/apps.py,sha256=38kXTdHoQzFnpUqDNxFpsqn2dut4V0u9rLOkhqCoYkc,713
3
3
  wagtail/compat.py,sha256=L41FhlX4xy5KgTdJ63smtM78mtKf1mxkPeOs8kyOwS0,538
4
4
  wagtail/coreutils.py,sha256=8wQC7LCRJ3dCILhpAsODCDCxlU0x--6UXDVX4Tx3gnQ,20417
@@ -908,7 +908,7 @@ wagtail/admin/tests/pages/test_page_locking.py,sha256=7CMYaBVzbvSdsLMtXNOoVYnG0i
908
908
  wagtail/admin/tests/pages/test_page_search.py,sha256=1g-b_Q2vUOGKYKziPh5dwysp94lhMiXJDJ62ykpewH0,12656
909
909
  wagtail/admin/tests/pages/test_page_usage.py,sha256=jhZo6j7SQogYreRinMESdDSpZ65YiPrkjTiOaI0OXis,4726
910
910
  wagtail/admin/tests/pages/test_parent_page_chooser_view.py,sha256=W_cFg5qmbxdaXvR6hkhvPnbQmmnSWjmu3_I5HoIIHt4,6055
911
- wagtail/admin/tests/pages/test_preview.py,sha256=BMu4Y6BA3synZPRecoLnEWiTNxOZ1m5TvIvtmFafDp4,32392
911
+ wagtail/admin/tests/pages/test_preview.py,sha256=w0FhGqTzBWIyRyUWUi6vtc0qOVN_vDLYeAP4oEL_5Ms,35134
912
912
  wagtail/admin/tests/pages/test_reorder_page.py,sha256=FTw5XLai3dcdb5LAbGDpJc5LGZzAyGXaRVNaC94-MCw,8755
913
913
  wagtail/admin/tests/pages/test_revisions.py,sha256=R9jiE3MpNrabX6ffKf6wqoDc4KKoo9yTuk4ciF5hIHM,25018
914
914
  wagtail/admin/tests/pages/test_unpublish_page.py,sha256=Vu2zq74xcwYPQeMFI9zN2mXh27Iee13LSwnmiALTQgo,9682
@@ -967,7 +967,7 @@ wagtail/admin/views/generic/mixins.py,sha256=FqHQOqwPPqQxGRqJEZx7hW2cIuUvZRrpFfu
967
967
  wagtail/admin/views/generic/models.py,sha256=KX1mS1-QeHoBUprjZh4rMXWbGMSN9lBsm_gcWkZXBms,51388
968
968
  wagtail/admin/views/generic/multiple_upload.py,sha256=KiE9T9Uv_EuMr2_MbHzSWJ2W3uaw3djwAnUXgxsjJ38,13383
969
969
  wagtail/admin/views/generic/permissions.py,sha256=LETkWYmN1DjGC8rNYXplkqSZj3TIHEdYf3iWFVZ2jbE,1788
970
- wagtail/admin/views/generic/preview.py,sha256=9tvUJoz55b0bKY4vvfqnDMNke3TTeSPaEamvrICYR9Q,5655
970
+ wagtail/admin/views/generic/preview.py,sha256=Aqu-JcoDTZncWEJkLVIiBc9ZakW3EPg97D-B9oZIycg,5916
971
971
  wagtail/admin/views/generic/usage.py,sha256=leJNFgfZ7tXugIFyuuQ-oMlBKmq0xlTCybH3WtozqnA,5085
972
972
  wagtail/admin/views/generic/workflow.py,sha256=u8mv-rdFeO0UmDaWVzzwtlXRaTZ_ZQzTEl1dwMtW-r8,9429
973
973
  wagtail/admin/views/pages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -982,7 +982,7 @@ wagtail/admin/views/pages/listing.py,sha256=w6q9zQh6ku0a2-PuSqCVtLB4VA9jJzGKopgb
982
982
  wagtail/admin/views/pages/lock.py,sha256=Z4FxvYyr0eDJj5kgoCJfk-WgwgXhip6_I2CabaG4J1c,1209
983
983
  wagtail/admin/views/pages/move.py,sha256=tk2AT98mb3RcjjvvCEIczhw4orAzakmXCbdV4LBWNk0,5348
984
984
  wagtail/admin/views/pages/ordering.py,sha256=cabaYVsfbHZoxNkGQUqP5klUSlnZDisSFbPko1mX8kM,1633
985
- wagtail/admin/views/pages/preview.py,sha256=rtt4gINN8eujyUgAEsePSlZuWd6q93mlZCEXTkRVvcY,3753
985
+ wagtail/admin/views/pages/preview.py,sha256=YOrDvATDgiLO6LWhMRvxQYZX4UGWQflkYyFEBseuWdQ,4081
986
986
  wagtail/admin/views/pages/revisions.py,sha256=1CkUrB6gtroB9FTiYv6rxhR9rE8CQuPhRCMwvDuFrIk,7060
987
987
  wagtail/admin/views/pages/search.py,sha256=n8Se6p2TNV06Y98-DTwm8yHIFuq1Rl90Z7QoZs5H-5c,4944
988
988
  wagtail/admin/views/pages/unpublish.py,sha256=p_lYd6x8k35UlFIhrZzEjQ6m68qbiHAWyvZrgCg4EoY,3716
@@ -3231,6 +3231,7 @@ wagtail/search/migrations/0005_create_indexentry.py,sha256=LvR4mCvqrfEx-tFnOQaUJ
3231
3231
  wagtail/search/migrations/0006_customise_indexentry.py,sha256=ByuG7ERoyCt5e5-4UyGCwdHDOg0NHXnJdkRI8ioJxXw,10677
3232
3232
  wagtail/search/migrations/0007_delete_editorspick.py,sha256=SUF8_SlrLmDLdncz3LngkR_5oMyR5UvPOzRjim5c93o,710
3233
3233
  wagtail/search/migrations/0008_remove_query_and_querydailyhits_models.py,sha256=NCBdecSK8K7Z4g1KpKpuOw4_4SlzaxZf9rVE_o6PPik,608
3234
+ wagtail/search/migrations/0009_remove_ngram_autocomplete.py,sha256=DMQ6vzRFUYN5BqHdkt3mle7NU0aOO07c5wFBKCS_k3I,1964
3234
3235
  wagtail/search/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3235
3236
  wagtail/search/templates/wagtailsearch/search_results.html,sha256=04u2bj7AJIE_H2jre3v6IiHxUbXuMUBxgfd9O4V8Q4c,710
3236
3237
  wagtail/search/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -3526,7 +3527,7 @@ wagtail/snippets/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
3526
3527
  wagtail/snippets/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3527
3528
  wagtail/snippets/tests/test_locking.py,sha256=QdaRVuX47tCbwoA62KYNJm9qxH33ekKs-nai5UeYDp4,25370
3528
3529
  wagtail/snippets/tests/test_management.py,sha256=GQw8HCZSJWny8giAUua_5-RstN7U_QGcsOkVuG72YHM,894
3529
- wagtail/snippets/tests/test_preview.py,sha256=egI0iOhdlkNzalfcfiRpv0VIunBzOBRjfCziqDLawKI,27036
3530
+ wagtail/snippets/tests/test_preview.py,sha256=sFPLIvRoDrewZ6_B-6uyQB6q1bFPXE_6Kwg3_oOvrOs,29214
3530
3531
  wagtail/snippets/tests/test_snippets.py,sha256=ROlW_-2RA6MZI1wmZi6IVnbduPoqyhrMOUPn0kbhCLE,226414
3531
3532
  wagtail/snippets/tests/test_usage.py,sha256=taycjCYwSB9g74A40TwFM_j7qPPTZL9fAChBatHyqr0,8260
3532
3533
  wagtail/snippets/tests/test_viewset.py,sha256=HkyHndyYdSRHETD71MyvjzLBWThVWg4uJjSBtCIIZjg,63548
@@ -4002,9 +4003,9 @@ wagtail/utils/urlpatterns.py,sha256=RDhVScxdm-RV4HSMjWElyrbEoTPsXu841_SKMgoFKtY,
4002
4003
  wagtail/utils/utils.py,sha256=nQhfy-fOiZfUFr67kTX4nF_2VVH7_MDtjTDOzZdpPTE,1407
4003
4004
  wagtail/utils/version.py,sha256=jYCDKIGJD3bZHTpgXMXu14oSBArQnf2WVU979D8V4b0,1552
4004
4005
  wagtail/utils/widgets.py,sha256=ibAvxHCjNw06bMlTD7wvrwmGEMNS3NzrnSKREGfPF44,1775
4005
- wagtail-6.3.5.dist-info/licenses/LICENSE,sha256=0aiL7_RJ2YkOjscmRI7opwmuURrY6h8MR0B24nrdRQU,1512
4006
- wagtail-6.3.5.dist-info/METADATA,sha256=F-N7gkGMVIUbB7J38XkMG2EReeqtGBUzoBLjHaNcotM,3787
4007
- wagtail-6.3.5.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
4008
- wagtail-6.3.5.dist-info/entry_points.txt,sha256=R14Z0xKoufNcDaku0EWDKM-K8J4ap0EImO8C-df8HVM,53
4009
- wagtail-6.3.5.dist-info/top_level.txt,sha256=zcKgvuRTi0gSgVzJ1qMoERCwhQ_i0n9bkyxza3oh9as,8
4010
- wagtail-6.3.5.dist-info/RECORD,,
4006
+ wagtail-6.3.6.dist-info/LICENSE,sha256=0aiL7_RJ2YkOjscmRI7opwmuURrY6h8MR0B24nrdRQU,1512
4007
+ wagtail-6.3.6.dist-info/METADATA,sha256=mN_fItZb-ll_hZOm14nFQa_mvOrxR8xe_N42fhLDv24,3540
4008
+ wagtail-6.3.6.dist-info/WHEEL,sha256=hPN0AlP2dZM_3ZJZWP4WooepkmU9wzjGgCLCeFjkHLA,92
4009
+ wagtail-6.3.6.dist-info/entry_points.txt,sha256=R14Z0xKoufNcDaku0EWDKM-K8J4ap0EImO8C-df8HVM,53
4010
+ wagtail-6.3.6.dist-info/top_level.txt,sha256=zcKgvuRTi0gSgVzJ1qMoERCwhQ_i0n9bkyxza3oh9as,8
4011
+ wagtail-6.3.6.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: bdist_wheel (0.46.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5