wagtail 6.3.3__py3-none-any.whl → 6.3.5__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.
@@ -25,6 +25,7 @@
25
25
  data-action="w-dismissible#toggle"
26
26
  {% if dismissible_value %}data-w-dismissible-value-param="{{ dismissible_value }}"{% endif %}
27
27
  data-w-upgrade-target="dismiss"
28
+ aria-label="{% trans 'Close' %}"
28
29
  class="w-ml-auto w-flex w-items-center w-justify-center w-bg-transparent w-rounded-full w-p-0 w-w-8 w-h-8
29
30
  w-text-current
30
31
  w-border
@@ -78,6 +78,7 @@ class TestUpgradeNotificationPanel(WagtailTestUtils, TestCase):
78
78
  )
79
79
  toggle = soup.select_one("[data-action='w-dismissible#toggle']")
80
80
  self.assertIsNotNone(toggle)
81
+ self.assertEqual(toggle.get("aria-label"), "Close")
81
82
  self.assertIsNone(toggle.get(self.ATTR_LAST_DISMISSED_VALUE))
82
83
 
83
84
  @override_settings(WAGTAIL_ENABLE_UPDATE_CHECK=False)
@@ -115,6 +116,7 @@ class TestUpgradeNotificationPanel(WagtailTestUtils, TestCase):
115
116
  )
116
117
  toggle = soup.select_one("[data-action='w-dismissible#toggle']")
117
118
  self.assertIsNotNone(toggle)
119
+ self.assertEqual(toggle.get("aria-label"), "Close")
118
120
  self.assertIsNone(toggle.get(self.ATTR_LAST_DISMISSED_VALUE))
119
121
 
120
122
  def test_render_html_dismissed_version(self):
@@ -140,6 +142,7 @@ class TestUpgradeNotificationPanel(WagtailTestUtils, TestCase):
140
142
  )
141
143
  toggle = soup.select_one("[data-action='w-dismissible#toggle']")
142
144
  self.assertIsNotNone(toggle)
145
+ self.assertEqual(toggle.get("aria-label"), "Close")
143
146
  self.assertEqual(
144
147
  toggle.get(self.ATTR_LAST_DISMISSED_VALUE),
145
148
  "6.2.2",
@@ -426,6 +426,7 @@ class ListBlock(Block):
426
426
  child_block = kwargs.get("child_block")
427
427
  if isinstance(child_block, Block):
428
428
  block_id = lookup.add_block(child_block)
429
+ kwargs = kwargs.copy() # avoid mutating the original kwargs stored in self._constructor_args
429
430
  kwargs["child_block"] = block_id
430
431
 
431
432
  return path, args, kwargs
@@ -552,15 +552,39 @@ class TestFormsSubmissionsList(WagtailTestUtils, TestCase):
552
552
  self.assertEqual(len(response.context["data_rows"]), 1)
553
553
 
554
554
  def test_list_submissions_filtering_range(self):
555
- response = self.client.get(
556
- reverse("wagtailforms:list_submissions", args=(self.form_page.id,)),
557
- {"date_from": "12/31/2013", "date_to": "01/02/2014"},
558
- )
555
+ url = reverse("wagtailforms:list_submissions", args=(self.form_page.id,))
556
+ params = {"date_from": "12/31/2013", "date_to": "01/02/2014"}
557
+ response = self.client.get(url, params)
559
558
 
560
559
  # Check response
561
560
  self.assertEqual(response.status_code, 200)
562
561
  self.assertTemplateUsed(response, "wagtailforms/submissions_index.html")
563
562
  self.assertEqual(len(response.context["data_rows"]), 1)
563
+ soup = self.get_soup(response.content)
564
+ next_input = soup.select_one('input[name="next"]')
565
+ self.assertIsNotNone(next_input)
566
+ self.assertEqual(next_input["value"], f"{url}?{urlencode(params)}")
567
+
568
+ def test_list_submissions_filtering_results(self):
569
+ index_url = reverse("wagtailforms:list_submissions", args=(self.form_page.id,))
570
+ results_url = reverse(
571
+ "wagtailforms:list_submissions_results",
572
+ args=(self.form_page.id,),
573
+ )
574
+ params = {"date_from": "12/31/2013", "date_to": "01/02/2014"}
575
+ response = self.client.get(results_url, params)
576
+
577
+ # Check response
578
+ self.assertEqual(response.status_code, 200)
579
+ self.assertTemplateNotUsed(response, "wagtailforms/submissions_index.html")
580
+ self.assertTemplateUsed(response, "wagtailforms/list_submissions.html")
581
+ self.assertEqual(len(response.context["data_rows"]), 1)
582
+ soup = self.get_soup(response.content)
583
+ next_input = soup.select_one('input[name="next"]')
584
+ self.assertIsNotNone(next_input)
585
+ # The next URL should point to the index page (instead of results page)
586
+ # with the same query params to preserve the filter
587
+ self.assertEqual(next_input["value"], f"{index_url}?{urlencode(params)}")
564
588
 
565
589
  def test_list_submissions_pagination(self):
566
590
  self.make_list_submissions()
@@ -363,5 +363,5 @@ class SubmissionsListView(SpreadsheetExportMixin, BaseListingView):
363
363
  }
364
364
  )
365
365
 
366
- context["next_url"] = self.request.get_full_path()
366
+ context["next_url"] = f"{self.get_index_url()}?{self.request.GET.urlencode()}"
367
367
  return context
File without changes
@@ -1,8 +1,23 @@
1
1
  # Generated by Django 4.2.1 on 2023-06-21 11:44
2
2
 
3
+ from django import VERSION as DJANGO_VERSION
3
4
  from django.db import migrations, models
4
5
 
5
6
 
7
+ check_constraint_condition = models.Q(
8
+ ("permission__isnull", False),
9
+ ("permission_type__isnull", False),
10
+ _connector="OR",
11
+ )
12
+
13
+ check_constraint_kwargs = {"name": "permission_or_permission_type_not_null"}
14
+
15
+ if DJANGO_VERSION >= (5, 1):
16
+ check_constraint_kwargs["condition"] = check_constraint_condition
17
+ else:
18
+ check_constraint_kwargs["check"] = check_constraint_condition
19
+
20
+
6
21
  class Migration(migrations.Migration):
7
22
 
8
23
  dependencies = [
@@ -16,14 +31,7 @@ class Migration(migrations.Migration):
16
31
  ),
17
32
  migrations.AddConstraint(
18
33
  model_name="grouppagepermission",
19
- constraint=models.CheckConstraint(
20
- check=models.Q(
21
- ("permission__isnull", False),
22
- ("permission_type__isnull", False),
23
- _connector="OR",
24
- ),
25
- name="permission_or_permission_type_not_null",
26
- ),
34
+ constraint=models.CheckConstraint(**check_constraint_kwargs),
27
35
  ),
28
36
  migrations.AddConstraint(
29
37
  model_name="grouppagepermission",
@@ -5,7 +5,7 @@ from django.db.models.functions.datetime import Extract as ExtractDate
5
5
  from django.db.models.functions.datetime import ExtractYear
6
6
  from django.db.models.lookups import Lookup
7
7
  from django.db.models.query import QuerySet
8
- from django.db.models.sql.where import SubqueryConstraint, WhereNode
8
+ from django.db.models.sql.where import WhereNode
9
9
 
10
10
  from wagtail.search.index import class_is_indexed, get_indexed_models
11
11
  from wagtail.search.query import MATCH_ALL, PlainText
@@ -179,11 +179,6 @@ class BaseSearchQueryCompiler:
179
179
  field_attname, lookup, value, check_only=check_only
180
180
  )
181
181
 
182
- elif isinstance(where_node, SubqueryConstraint):
183
- raise FilterError(
184
- "Could not apply filter on search results: Subqueries are not allowed."
185
- )
186
-
187
182
  elif isinstance(where_node, WhereNode):
188
183
  # Get child filters
189
184
  connector = where_node.connector
wagtail/test/settings.py CHANGED
@@ -49,8 +49,12 @@ if DATABASES["default"]["ENGINE"] == "sql_server.pyodbc":
49
49
 
50
50
  # explicitly set charset / collation to utf8 on mysql
51
51
  if DATABASES["default"]["ENGINE"] == "django.db.backends.mysql":
52
- DATABASES["default"]["TEST"]["CHARSET"] = "utf8"
53
- DATABASES["default"]["TEST"]["COLLATION"] = "utf8_general_ci"
52
+ DATABASES["default"]["OPTIONS"] = {
53
+ "charset": "utf8mb4",
54
+ "collation": "utf8mb4_general_ci",
55
+ }
56
+ DATABASES["default"]["TEST"]["CHARSET"] = "utf8mb4"
57
+ DATABASES["default"]["TEST"]["COLLATION"] = "utf8mb4_general_ci"
54
58
 
55
59
 
56
60
  SECRET_KEY = "not needed"
@@ -967,6 +967,54 @@ class TestDeconstructStreamFieldWithLookup(TestCase):
967
967
  },
968
968
  )
969
969
 
970
+ def test_deconstruct_with_listblock_with_child_block_kwarg_idempotence(self):
971
+ # See https://github.com/wagtail/wagtail/issues/13137. When a ListBlock is defined with
972
+ # a child_block keyword argument, its deconstruct_with_lookup method inserts that child
973
+ # block into the lookup to obtain an ID, and returns that ID as the child_block kwarg
974
+ # in its result. However, an implementation bug meant that this was mutating the kwargs
975
+ # dict stored in the block's _constructor_args attribute. As a result, subsequent calls
976
+ # to deconstruct_with_lookup (which happen routinely during makemigrations) would
977
+ # encounter the ID in child_block, leave it alone (because it isn't a block object as
978
+ # expected), and return that ID in the result without adding it to the lookup, messing
979
+ # up the ID sequence in the process.
980
+ field = StreamField(
981
+ [
982
+ ("heading", blocks.CharBlock(required=True)),
983
+ (
984
+ "bullets",
985
+ blocks.ListBlock(child_block=blocks.CharBlock(required=False)),
986
+ ),
987
+ ],
988
+ blank=True,
989
+ )
990
+ field.set_attributes_from_name("body")
991
+
992
+ expected_args = [
993
+ [
994
+ ("heading", 0),
995
+ ("bullets", 2),
996
+ ]
997
+ ]
998
+ expected_kwargs = {
999
+ "blank": True,
1000
+ "block_lookup": {
1001
+ 0: ("wagtail.blocks.CharBlock", (), {"required": True}),
1002
+ 1: ("wagtail.blocks.CharBlock", (), {"required": False}),
1003
+ 2: ("wagtail.blocks.ListBlock", (), {"child_block": 1}),
1004
+ },
1005
+ }
1006
+ name, path, args, kwargs = field.deconstruct()
1007
+ self.assertEqual(name, "body")
1008
+ self.assertEqual(path, "wagtail.fields.StreamField")
1009
+ self.assertEqual(kwargs, expected_kwargs)
1010
+ self.assertEqual(args, expected_args)
1011
+
1012
+ name, path, args, kwargs = field.deconstruct()
1013
+ self.assertEqual(name, "body")
1014
+ self.assertEqual(path, "wagtail.fields.StreamField")
1015
+ self.assertEqual(kwargs, expected_kwargs)
1016
+ self.assertEqual(args, expected_args)
1017
+
970
1018
  def test_deconstruct_with_listblock_subclass(self):
971
1019
  # See https://github.com/wagtail/wagtail/issues/12164 - unlike StructBlock and StreamBlock,
972
1020
  # ListBlock's deconstruct method doesn't reduce subclasses to the base ListBlock class.
@@ -0,0 +1,89 @@
1
+ Metadata-Version: 2.4
2
+ Name: wagtail
3
+ Version: 6.3.5
4
+ Summary: A Django content management system.
5
+ Home-page: https://wagtail.org/
6
+ Author: Wagtail core team + contributors
7
+ Author-email: hello@wagtail.org
8
+ License: BSD
9
+ Project-URL: Changelog, https://github.com/wagtail/wagtail/blob/main/CHANGELOG.txt
10
+ Project-URL: Documentation, https://docs.wagtail.org
11
+ Project-URL: Source, https://github.com/wagtail/wagtail
12
+ Project-URL: Tracker, https://github.com/wagtail/wagtail/issues
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Environment :: Web Environment
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: BSD License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Framework :: Django
26
+ Classifier: Framework :: Django :: 4.2
27
+ Classifier: Framework :: Django :: 5.0
28
+ Classifier: Framework :: Django :: 5.1
29
+ Classifier: Framework :: Wagtail
30
+ Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
31
+ Requires-Python: >=3.9
32
+ License-File: LICENSE
33
+ Requires-Dist: Django<6.0,>=4.2
34
+ Requires-Dist: django-modelcluster<7.0,>=6.2.1
35
+ Requires-Dist: django-permissionedforms<1.0,>=0.1
36
+ Requires-Dist: django-taggit<6.2,>=5.0
37
+ Requires-Dist: django-treebeard<5.0,>=4.5.1
38
+ Requires-Dist: djangorestframework<4.0,>=3.15.1
39
+ Requires-Dist: django-filter>=23.3
40
+ Requires-Dist: draftjs_exporter<6.0,>=2.1.5
41
+ Requires-Dist: Pillow<12.0.0,>=9.1.0
42
+ Requires-Dist: beautifulsoup4<4.13,>=4.8
43
+ Requires-Dist: Willow[heif]<2,>=1.10.0
44
+ Requires-Dist: requests<3.0,>=2.11.1
45
+ Requires-Dist: l18n>=2018.5
46
+ Requires-Dist: openpyxl<4.0,>=3.0.10
47
+ Requires-Dist: anyascii>=0.1.5
48
+ Requires-Dist: telepath<1,>=0.3.1
49
+ Requires-Dist: laces<0.2,>=0.1
50
+ Provides-Extra: testing
51
+ Requires-Dist: python-dateutil>=2.7; extra == "testing"
52
+ Requires-Dist: Jinja2<3.2,>=3.0; extra == "testing"
53
+ Requires-Dist: boto3<2,>=1.28; extra == "testing"
54
+ Requires-Dist: freezegun>=0.3.8; extra == "testing"
55
+ Requires-Dist: azure-mgmt-cdn<13.0,>=12.0; extra == "testing"
56
+ Requires-Dist: azure-mgmt-frontdoor<1.1,>=1.0; extra == "testing"
57
+ Requires-Dist: django-pattern-library>=0.7; extra == "testing"
58
+ Requires-Dist: coverage>=3.7.0; extra == "testing"
59
+ Requires-Dist: doc8==0.8.1; extra == "testing"
60
+ Requires-Dist: ruff==0.1.5; extra == "testing"
61
+ Requires-Dist: semgrep==1.40.0; extra == "testing"
62
+ Requires-Dist: curlylint==0.13.1; extra == "testing"
63
+ Requires-Dist: djhtml==3.0.6; extra == "testing"
64
+ Requires-Dist: polib<2.0,>=1.1; extra == "testing"
65
+ Requires-Dist: factory-boy>=3.2; extra == "testing"
66
+ 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
+
87
+ 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
+
89
+ For more details, see https://wagtail.org, https://docs.wagtail.org and https://github.com/wagtail/wagtail/.
@@ -1,4 +1,4 @@
1
- wagtail/__init__.py,sha256=iPUJo4Z0gCm0DGzRtMq9i10svLFA31wPWOz60HwDGxI,724
1
+ wagtail/__init__.py,sha256=IxxJ8QzgHcMVGHTR7mCmSlH5JF45wP-EMKbGOWjOEn0,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
@@ -356,7 +356,7 @@ wagtail/admin/rich_text/converters/html_to_contentstate.py,sha256=W0l9O-ZpxJkzRF
356
356
  wagtail/admin/rich_text/editors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
357
357
  wagtail/admin/rich_text/editors/draftail/__init__.py,sha256=IsmQYvx0YQuhiW_KqXq07iXPZg63NV1VOwXBL6f8TUY,3594
358
358
  wagtail/admin/rich_text/editors/draftail/features.py,sha256=X3LZhvlSqQA9GTXAdKi0PthdiIxL-InuiuLl_1AdVns,2593
359
- wagtail/admin/static/wagtailadmin/css/core.css,sha256=YYwV7bElbqjbI0HnTNw_Qg9wyUZ3DvnuOK_flB6SHp0,275995
359
+ wagtail/admin/static/wagtailadmin/css/core.css,sha256=X831nK84rvCR8LRGmnnlsDqTguQK5tfYvG4aUfgcH-c,276070
360
360
  wagtail/admin/static/wagtailadmin/css/core.js,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
361
361
  wagtail/admin/static/wagtailadmin/css/panels/draftail.css,sha256=y7FM00LtDC9CZ_9V4XySg04pXty5obRipdSw7YRT0YM,24614
362
362
  wagtail/admin/static/wagtailadmin/css/panels/draftail.js,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -496,7 +496,7 @@ wagtail/admin/templates/wagtailadmin/home/locked_pages.html,sha256=58AUxBtLlOlOv
496
496
  wagtail/admin/templates/wagtailadmin/home/recent_edits.html,sha256=cCrUkVByHsa9FMZmoyZTfdnxrihuSw_FNcmsrws-fr4,3683
497
497
  wagtail/admin/templates/wagtailadmin/home/site_summary.html,sha256=NnpY7RGV8Qid0GlBY8wsBS4o7JTBvkhRUyAMBFXoDHY,366
498
498
  wagtail/admin/templates/wagtailadmin/home/site_summary_pages.html,sha256=bWbEvL9ue-j7qUwDSS_iEZlGB_XSVk5zxwlqtQP0lSY,466
499
- wagtail/admin/templates/wagtailadmin/home/upgrade_notification.html,sha256=-qjO2hhvuGuRNHPTVEDPIdOKL0bLLBPtUIj_O13u2ik,2006
499
+ wagtail/admin/templates/wagtailadmin/home/upgrade_notification.html,sha256=xGd54pMpmSWhBsbrf6waLf7SjeMag-qZCF3-sRziP7k,2047
500
500
  wagtail/admin/templates/wagtailadmin/home/user_objects_in_workflow_moderation.html,sha256=oyouVaaxCMAmGgcfRb2ivp_Djydr61arn671UeOqUXg,3697
501
501
  wagtail/admin/templates/wagtailadmin/home/whats_new_in_wagtail_version.html,sha256=tE8H2w-steUxH02dNJK6Frkc0b06EsxQ_hnJWGaXiJ8,1480
502
502
  wagtail/admin/templates/wagtailadmin/home/workflow_objects_to_moderate.html,sha256=zpKNhigoWR9VWSB14Epg9h-dZ6dpiI2lVaBdAnzHLHY,6668
@@ -879,7 +879,7 @@ wagtail/admin/tests/test_reports_views.py,sha256=oFvzx7lltLCpHZxYW41Z3eQjEPn5Acl
879
879
  wagtail/admin/tests/test_rich_text.py,sha256=fp1LhnUAKT03M3BelxkIwTnbEE4yB29llFTJlEa_-TU,22155
880
880
  wagtail/admin/tests/test_site_summary.py,sha256=d3kWKFPZYoEXgchpOrZe8zSerhvn9afQar-NGrXlBRA,3148
881
881
  wagtail/admin/tests/test_templatetags.py,sha256=2PMUeHi5t543Bw5nDWK1RYi-OLgKwoqsLbmIPYLH3Uk,40029
882
- wagtail/admin/tests/test_upgrade_notification.py,sha256=jlGPoqFA6E77tXlYChIVoiBOwwDkBT7eVme7vKqtNLg,5802
882
+ wagtail/admin/tests/test_upgrade_notification.py,sha256=GnUZ5Nugp9SHtefdGNIUKA1La7P2DXu5Z1-UkwGkcRI,5990
883
883
  wagtail/admin/tests/test_userbar.py,sha256=9u4WjEhU7iGDLinfG_-40tNKjeKEx31OMMD7FhNepV8,18644
884
884
  wagtail/admin/tests/test_views.py,sha256=A8kEpc1csb9Ocu02l7mkEThNOgwz8g8G7RWdWcb3IA0,8686
885
885
  wagtail/admin/tests/test_views_generic.py,sha256=iD75NrZunwgPkvkdkCC4wQrbPihkA0cEiW-OJY2birI,3403
@@ -1040,7 +1040,7 @@ wagtail/blocks/__init__.py,sha256=VjRA2jnSMItNEqkMGtYQxFHzoefy8QbqTysjlFHnxpU,31
1040
1040
  wagtail/blocks/base.py,sha256=H-dI5oEXN2paPEhW8gf45n42IdWF62vnw0ZUDELvdtw,27979
1041
1041
  wagtail/blocks/definition_lookup.py,sha256=JkSwFcqEkavq-M6kWNfeDZtvIXnQJ58QT2FeaKrFPEA,3274
1042
1042
  wagtail/blocks/field_block.py,sha256=rKXfquVsRbA80GnXQvgRI8mtYZ4t7eKRCqaSCpeOS94,32414
1043
- wagtail/blocks/list_block.py,sha256=TJgxmUvTnQrnwk-celA2T5zGSa-NedVvr7WzGsweDRo,18289
1043
+ wagtail/blocks/list_block.py,sha256=_3qNE0L7UMAmwMYCZ5CKasf574tKO7eDUth8HInmo88,18403
1044
1044
  wagtail/blocks/static_block.py,sha256=tKkU0hENu_fzHC9xiZ3p9c9drP7-TDogn9r8j0E-nLk,1748
1045
1045
  wagtail/blocks/stream_block.py,sha256=amEWzaq4oiOUVf0Y2VRIfXhsDnRzd9hHBYhx-4SW8nE,32291
1046
1046
  wagtail/blocks/struct_block.py,sha256=u-etS4B5ONd6_gYbL-F8XX3l_RY3zPMMsrxSTLXMOIs,15988
@@ -1056,7 +1056,7 @@ wagtail/contrib/forms/models.py,sha256=IqLRh9a9W0hDsO2HUgwfAOUzKWqeaTMvP-KT8VLWV
1056
1056
  wagtail/contrib/forms/panels.py,sha256=zI3bFM1X5iT_fnxQUe5BWWN5iQKm6tEFEiaFhNRZcwk,1556
1057
1057
  wagtail/contrib/forms/urls.py,sha256=VZ4LDq6SkdEi3iXL7zoxDRSNZeGS5ZSeiNUsfqZ-nOI,776
1058
1058
  wagtail/contrib/forms/utils.py,sha256=Gu3WS-X37KQeDuHZliEwkhHJaqDgUwF1ObuVp3ai2fM,1279
1059
- wagtail/contrib/forms/views.py,sha256=xOSyAMn0CpGpDWAMMlaVK4vBaJIzLBUpQlMikwaB1zU,13355
1059
+ wagtail/contrib/forms/views.py,sha256=-pBvZObLNKdwo7Hq5TiAXvrkstba0kKpm3-hjG3VZ18,13383
1060
1060
  wagtail/contrib/forms/wagtail_hooks.py,sha256=VbHWejKs7Pp-KXtrcIqWOS476hpK9UuWBn1XF8qLmug,876
1061
1061
  wagtail/contrib/forms/locale/af/LC_MESSAGES/django.mo,sha256=IT4kQ2iXzYtsLiFZcjhqZdbNqnigtbo1oWilPNx88L0,455
1062
1062
  wagtail/contrib/forms/locale/af/LC_MESSAGES/django.po,sha256=ETEtWd1pbUDvlhOZoeGO4LHzOooQm5PHD_7IXKzUnU8,667
@@ -1190,7 +1190,7 @@ wagtail/contrib/forms/templates/wagtailforms/panels/form_responses_panel.html,sh
1190
1190
  wagtail/contrib/forms/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1191
1191
  wagtail/contrib/forms/tests/test_forms.py,sha256=7tRUwJA2j9xzr28NpRC9hDYeOEfR1VTmBCPlny7UPVw,13634
1192
1192
  wagtail/contrib/forms/tests/test_models.py,sha256=lcifi_nJHHD9toYVtIY3P-zh-rdCTsLQTgxvAyFKbMM,32465
1193
- wagtail/contrib/forms/tests/test_views.py,sha256=g213EeJKrWEF7_DPCnTxFvN8SYCCjcOQkGoM2d9iaWw,81552
1193
+ wagtail/contrib/forms/tests/test_views.py,sha256=UNcm3Y5pvDDUnjxEY-HNHaHBHj5YfgNJW2mL2zfCuGM,82860
1194
1194
  wagtail/contrib/forms/tests/utils.py,sha256=OESefxdqGRgL1lDItVPSFNw_FJNB4X0PvozdvAhrpkc,6043
1195
1195
  wagtail/contrib/frontend_cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1196
1196
  wagtail/contrib/frontend_cache/apps.py,sha256=y-TyHADOpdCrIQ7zfnVD6OOxjo28lnBhPJeBtjlPih4,407
@@ -3039,7 +3039,7 @@ wagtail/migrations/0083_workflowcontenttype.py,sha256=5IB4BVgGB2ndtZM8GsDl0q6GdO
3039
3039
  wagtail/migrations/0084_add_default_page_permissions.py,sha256=ZTPv9gl0BETw1hcZHPyy6IXnclDfpRSCmBZLbaFAAjY,737
3040
3040
  wagtail/migrations/0085_add_grouppagepermission_permission.py,sha256=FCVddrLeu8m2F6T_h8mbXYb-ps1K1MoDYN_E1mMRLYU,1605
3041
3041
  wagtail/migrations/0086_populate_grouppagepermission_permission.py,sha256=Bb3JAxZGfiQ_Lij7izu021smOLLmfwHLN0tx2i8a8CU,3102
3042
- wagtail/migrations/0087_alter_grouppagepermission_unique_together_and_more.py,sha256=7tANrGnVzGAiuyu1e3BAjMFAQ_V-2nv_KU-uAO__mp8,1309
3042
+ wagtail/migrations/0087_alter_grouppagepermission_unique_together_and_more.py,sha256=pHcO2I6ysk6oKZe6GHbMDGBevukkWqYP1HKv9cA2IAU,1497
3043
3043
  wagtail/migrations/0088_fix_log_entry_json_timestamps.py,sha256=5a_AH0qM0X8YDt9IIdnOs-lCs7y14n4-dos3rYuQC4Q,6598
3044
3044
  wagtail/migrations/0089_log_entry_data_json_null_to_object.py,sha256=BsgLCgUOzcu43WsEYGz-3lbGY2cxUuo7xcGQOj0ULgQ,1836
3045
3045
  wagtail/migrations/0090_remove_grouppagepermission_permission_type.py,sha256=KB5XHreJBcK7vXRVzffeNlidNQjQf0FmLb9SCPa0vWI,1074
@@ -3103,7 +3103,7 @@ wagtail/search/queryset.py,sha256=xwsUc1FoodmIru4l8bZEIsYtfR-GnDEjizN6jLmkZBI,10
3103
3103
  wagtail/search/signal_handlers.py,sha256=Md4dhmwLF7kX7YLG-MsqTLQ6NdfkFIavBJ9n5OsUIgA,956
3104
3104
  wagtail/search/utils.py,sha256=onx_ym1p0kMBggaormbztwM-T0lXvnTG5vyOuyDnMQ0,6075
3105
3105
  wagtail/search/backends/__init__.py,sha256=nJEc435WnprL13v7OwcUCyHz0CTXMCMar9xTRqn1rH8,3455
3106
- wagtail/search/backends/base.py,sha256=EhedKzF_2niqc7xIH8HmMdykoDXfz7EZ6thaIWUbMi0,16712
3106
+ wagtail/search/backends/base.py,sha256=ClbDhmZhWy1PT_7O0ZHQ8f8fSJ-Ks0uiLyO6GclgA_I,16501
3107
3107
  wagtail/search/backends/elasticsearch7.py,sha256=CbHEAGgaQK82wYez_2H56-G9QdSPQp1FW1ABynez0YM,41361
3108
3108
  wagtail/search/backends/elasticsearch8.py,sha256=n3y05d_atzbnkaM4F1BXp3OhayE-J6uzfggYBdw2rBo,3750
3109
3109
  wagtail/search/backends/database/__init__.py,sha256=u8dKGRONweefcHoIlCIJgxpU5DgWAARDz1sefSUq-Rw,1727
@@ -3554,7 +3554,7 @@ wagtail/test/manage.py,sha256=JaihE2eqQFMxzd83WWPE4DLnZbzq0bqEkozWAbe-xn8,255
3554
3554
  wagtail/test/middleware.py,sha256=Tvt43O8iGOFvK1tpZFKHQndiJPO5AcrvzqrTzBjuTuY,1395
3555
3555
  wagtail/test/non_root_urls.py,sha256=ZWPGHRmWHmx2Ext6S_TONDj4ZHdBt5BNZoULON1nDlA,556
3556
3556
  wagtail/test/numberformat.py,sha256=FBKsX_92H97xHnb4Er5mAH2i3oFSorCQnKdGcjHlcgE,3771
3557
- wagtail/test/settings.py,sha256=HZvednl7-RKbP7KJKDii_JCON998Jn2J37m3tIrMQjc,9586
3557
+ wagtail/test/settings.py,sha256=J6y_xiE5WWdWIaF7rxCfzJAMu9sfLpEYN3PqTNDuldU,9711
3558
3558
  wagtail/test/settings_ui.py,sha256=FtNeC3qofOBsdfNT2ES0CDtwPq8Kth1Ym_l0QM5ZspE,886
3559
3559
  wagtail/test/urls.py,sha256=OqO9tjttDsR04DFc5cPmVijFRnAJZiktLuUXSi8_Cok,2599
3560
3560
  wagtail/test/urls_multilang.py,sha256=Pfif5_J3mDcf-AJEADTsm2dfFTQQWOlLMZHdPg2P8eA,310
@@ -3792,7 +3792,7 @@ wagtail/tests/test_revision_model.py,sha256=dvW9fGG6-V2WeNWpsIm9fP3jtRmJ6wj6pgqM
3792
3792
  wagtail/tests/test_rich_text.py,sha256=bBTdI__z5QSq-Z3dPvGLUyHaodmi6mKMBl65dSrsJQw,17795
3793
3793
  wagtail/tests/test_signals.py,sha256=MTP1e3dEQLt-JbV41JRlIeCzx9-g6grAFtOJgpwsEFI,6122
3794
3794
  wagtail/tests/test_sites.py,sha256=syJCEPMHdKXfbxc_Vb7CH9ymuPVZiWDAae4JmJPmPx0,8488
3795
- wagtail/tests/test_streamfield.py,sha256=wHoWTWMHOhBqQqey91ZqLYVWb6PeOkG6J8gWAIKLX_w,39112
3795
+ wagtail/tests/test_streamfield.py,sha256=qIn-hGIWkm0PQvvbcm6ywiqjzizb4KkacRQqg0AOzAk,41312
3796
3796
  wagtail/tests/test_telepath.py,sha256=muiOryoRmkISEHVu9GPSrKJEVB_EvpOufhvuJF-HrTk,10374
3797
3797
  wagtail/tests/test_tests.py,sha256=BAWYYlrFls1rHsqRVsh_b9eW43t6MaXiswI-CkUI6fs,18272
3798
3798
  wagtail/tests/test_translatablemixin.py,sha256=bCHX65L-3SMtgXU7XEdG0NYV4G5-V93TzzHX24ubcl8,10283
@@ -4002,9 +4002,9 @@ wagtail/utils/urlpatterns.py,sha256=RDhVScxdm-RV4HSMjWElyrbEoTPsXu841_SKMgoFKtY,
4002
4002
  wagtail/utils/utils.py,sha256=nQhfy-fOiZfUFr67kTX4nF_2VVH7_MDtjTDOzZdpPTE,1407
4003
4003
  wagtail/utils/version.py,sha256=jYCDKIGJD3bZHTpgXMXu14oSBArQnf2WVU979D8V4b0,1552
4004
4004
  wagtail/utils/widgets.py,sha256=ibAvxHCjNw06bMlTD7wvrwmGEMNS3NzrnSKREGfPF44,1775
4005
- wagtail-6.3.3.dist-info/LICENSE,sha256=0aiL7_RJ2YkOjscmRI7opwmuURrY6h8MR0B24nrdRQU,1512
4006
- wagtail-6.3.3.dist-info/METADATA,sha256=9FJHuQYiZZAWlz2vdTYBzJhFjCwcF4HL1PJg_Btj2lo,3682
4007
- wagtail-6.3.3.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
4008
- wagtail-6.3.3.dist-info/entry_points.txt,sha256=R14Z0xKoufNcDaku0EWDKM-K8J4ap0EImO8C-df8HVM,53
4009
- wagtail-6.3.3.dist-info/top_level.txt,sha256=zcKgvuRTi0gSgVzJ1qMoERCwhQ_i0n9bkyxza3oh9as,8
4010
- wagtail-6.3.3.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.38.4)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,77 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: wagtail
3
- Version: 6.3.3
4
- Summary: A Django content management system.
5
- Home-page: https://wagtail.org/
6
- Author: Wagtail core team + contributors
7
- Author-email: hello@wagtail.org
8
- License: BSD
9
- Project-URL: Changelog, https://github.com/wagtail/wagtail/blob/main/CHANGELOG.txt
10
- Project-URL: Documentation, https://docs.wagtail.org
11
- Project-URL: Source, https://github.com/wagtail/wagtail
12
- Project-URL: Tracker, https://github.com/wagtail/wagtail/issues
13
- Classifier: Development Status :: 5 - Production/Stable
14
- Classifier: Environment :: Web Environment
15
- Classifier: Intended Audience :: Developers
16
- Classifier: License :: OSI Approved :: BSD License
17
- Classifier: Operating System :: OS Independent
18
- Classifier: Programming Language :: Python
19
- Classifier: Programming Language :: Python :: 3
20
- Classifier: Programming Language :: Python :: 3.9
21
- Classifier: Programming Language :: Python :: 3.10
22
- Classifier: Programming Language :: Python :: 3.11
23
- Classifier: Programming Language :: Python :: 3.12
24
- Classifier: Programming Language :: Python :: 3.13
25
- Classifier: Framework :: Django
26
- Classifier: Framework :: Django :: 4.2
27
- Classifier: Framework :: Django :: 5.0
28
- Classifier: Framework :: Django :: 5.1
29
- Classifier: Framework :: Wagtail
30
- Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
31
- Requires-Python: >=3.9
32
- License-File: LICENSE
33
- Requires-Dist: Django (<6.0,>=4.2)
34
- Requires-Dist: django-modelcluster (<7.0,>=6.2.1)
35
- Requires-Dist: django-permissionedforms (<1.0,>=0.1)
36
- Requires-Dist: django-taggit (<6.2,>=5.0)
37
- Requires-Dist: django-treebeard (<5.0,>=4.5.1)
38
- Requires-Dist: djangorestframework (<4.0,>=3.15.1)
39
- Requires-Dist: django-filter (<25,>=23.3)
40
- Requires-Dist: draftjs-exporter (<6.0,>=2.1.5)
41
- Requires-Dist: Pillow (<12.0.0,>=9.1.0)
42
- Requires-Dist: beautifulsoup4 (<4.13,>=4.8)
43
- Requires-Dist: Willow[heif] (<2,>=1.8.0)
44
- Requires-Dist: requests (<3.0,>=2.11.1)
45
- Requires-Dist: l18n (>=2018.5)
46
- Requires-Dist: openpyxl (<4.0,>=3.0.10)
47
- Requires-Dist: anyascii (>=0.1.5)
48
- Requires-Dist: telepath (<1,>=0.3.1)
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'
57
- Provides-Extra: testing
58
- Requires-Dist: python-dateutil (>=2.7) ; extra == 'testing'
59
- Requires-Dist: Jinja2 (<3.2,>=3.0) ; extra == 'testing'
60
- Requires-Dist: boto3 (<2,>=1.28) ; extra == 'testing'
61
- Requires-Dist: freezegun (>=0.3.8) ; extra == 'testing'
62
- Requires-Dist: azure-mgmt-cdn (<13.0,>=12.0) ; extra == 'testing'
63
- Requires-Dist: azure-mgmt-frontdoor (<1.1,>=1.0) ; extra == 'testing'
64
- Requires-Dist: django-pattern-library (>=0.7) ; extra == 'testing'
65
- Requires-Dist: coverage (>=3.7.0) ; extra == 'testing'
66
- Requires-Dist: doc8 (==0.8.1) ; extra == 'testing'
67
- Requires-Dist: ruff (==0.1.5) ; extra == 'testing'
68
- Requires-Dist: semgrep (==1.40.0) ; extra == 'testing'
69
- Requires-Dist: curlylint (==0.13.1) ; extra == 'testing'
70
- Requires-Dist: djhtml (==3.0.6) ; extra == 'testing'
71
- Requires-Dist: polib (<2.0,>=1.1) ; extra == 'testing'
72
- Requires-Dist: factory-boy (>=3.2) ; extra == 'testing'
73
- Requires-Dist: tblib (<3.0,>=2.0) ; extra == 'testing'
74
-
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.
76
-
77
- For more details, see https://wagtail.org, https://docs.wagtail.org and https://github.com/wagtail/wagtail/.