wagtail 7.0__py3-none-any.whl → 7.0.1__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 = (7, 0, 0, "final", 1)
9
+ VERSION = (7, 0, 1, "final", 1)
10
10
 
11
11
  __version__ = get_version(VERSION)
12
12
 
@@ -164,9 +164,9 @@ filter_adapter_class_registry = ObjectTypeRegistry()
164
164
 
165
165
 
166
166
  def register_filter_adapter_class(
167
- filter_class: django_filters.Filter,
168
- adapter_class: BaseFilterAdapter = None,
169
- exact_class: BaseFilterAdapter = False,
167
+ filter_class: type[django_filters.Filter],
168
+ adapter_class: type[BaseFilterAdapter] = None,
169
+ exact_class: bool = False,
170
170
  ):
171
171
  """
172
172
  Define how a django-filter Filter should be displayed when it's active.
wagtail/blocks/base.py CHANGED
@@ -324,14 +324,14 @@ class Block(metaclass=BaseBlock):
324
324
 
325
325
  @cached_property
326
326
  def is_previewable(self):
327
- # To prevent showing a broken preview if the block preview has not been
328
- # configured, consider the block to be previewable if either:
329
- # - a specific preview template is configured for the block
330
- # - a preview value is provided and the global template has been overridden
331
- # which are the intended ways to configure block previews.
332
- #
333
- # If a block is made previewable by other means, the `is_previewable`
334
- # property should be overridden to return `True`.
327
+ """
328
+ Determine whether the block is previewable in the block picker. By
329
+ default, it automatically detects when a custom template is used or the
330
+ :ref:`the global preview template <streamfield_global_preview_template>`
331
+ is overridden and a preview value is provided. If the block is
332
+ previewable by other means, override this property to return ``True``.
333
+ To turn off previews for the block, set it to ``False``.
334
+ """
335
335
  has_specific_template = (
336
336
  hasattr(self.meta, "preview_template")
337
337
  or self.__class__.get_preview_template is not Block.get_preview_template
@@ -427,6 +427,7 @@ class ListBlock(Block):
427
427
  child_block = kwargs.get("child_block")
428
428
  if isinstance(child_block, Block):
429
429
  block_id = lookup.add_block(child_block)
430
+ kwargs = kwargs.copy() # avoid mutating the original kwargs stored in self._constructor_args
430
431
  kwargs["child_block"] = block_id
431
432
 
432
433
  return path, args, kwargs
@@ -553,15 +553,39 @@ class TestFormsSubmissionsList(WagtailTestUtils, TestCase):
553
553
  self.assertEqual(len(response.context["data_rows"]), 1)
554
554
 
555
555
  def test_list_submissions_filtering_range(self):
556
- response = self.client.get(
557
- reverse("wagtailforms:list_submissions", args=(self.form_page.id,)),
558
- {"date_from": "12/31/2013", "date_to": "01/02/2014"},
559
- )
556
+ url = reverse("wagtailforms:list_submissions", args=(self.form_page.id,))
557
+ params = {"date_from": "12/31/2013", "date_to": "01/02/2014"}
558
+ response = self.client.get(url, params)
560
559
 
561
560
  # Check response
562
561
  self.assertEqual(response.status_code, 200)
563
562
  self.assertTemplateUsed(response, "wagtailforms/submissions_index.html")
564
563
  self.assertEqual(len(response.context["data_rows"]), 1)
564
+ soup = self.get_soup(response.content)
565
+ next_input = soup.select_one('input[name="next"]')
566
+ self.assertIsNotNone(next_input)
567
+ self.assertEqual(next_input["value"], f"{url}?{urlencode(params)}")
568
+
569
+ def test_list_submissions_filtering_results(self):
570
+ index_url = reverse("wagtailforms:list_submissions", args=(self.form_page.id,))
571
+ results_url = reverse(
572
+ "wagtailforms:list_submissions_results",
573
+ args=(self.form_page.id,),
574
+ )
575
+ params = {"date_from": "12/31/2013", "date_to": "01/02/2014"}
576
+ response = self.client.get(results_url, params)
577
+
578
+ # Check response
579
+ self.assertEqual(response.status_code, 200)
580
+ self.assertTemplateNotUsed(response, "wagtailforms/submissions_index.html")
581
+ self.assertTemplateUsed(response, "wagtailforms/list_submissions.html")
582
+ self.assertEqual(len(response.context["data_rows"]), 1)
583
+ soup = self.get_soup(response.content)
584
+ next_input = soup.select_one('input[name="next"]')
585
+ self.assertIsNotNone(next_input)
586
+ # The next URL should point to the index page (instead of results page)
587
+ # with the same query params to preserve the filter
588
+ self.assertEqual(next_input["value"], f"{index_url}?{urlencode(params)}")
565
589
 
566
590
  def test_list_submissions_pagination(self):
567
591
  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
wagtail/embeds/blocks.py CHANGED
@@ -87,8 +87,11 @@ class EmbedBlock(blocks.URLBlock):
87
87
 
88
88
  def normalize(self, value):
89
89
  if isinstance(value, EmbedValue):
90
- return value
91
- return EmbedValue(value)
90
+ return value if value.url else None
91
+ elif value:
92
+ return EmbedValue(value)
93
+ else:
94
+ return None
92
95
 
93
96
  class Meta:
94
97
  icon = "media"
@@ -952,15 +952,23 @@ class TestEmbedBlock(TestCase):
952
952
  block = EmbedBlock()
953
953
 
954
954
  cleaned_value = block.clean(
955
- EmbedValue("https://www.youtube.com/watch?v=_U79Wc965vw")
955
+ block.normalize(EmbedValue("https://www.youtube.com/watch?v=_U79Wc965vw"))
956
956
  )
957
957
  self.assertIsInstance(cleaned_value, EmbedValue)
958
958
  self.assertEqual(
959
959
  cleaned_value.url, "https://www.youtube.com/watch?v=_U79Wc965vw"
960
960
  )
961
961
 
962
+ @patch("wagtail.embeds.embeds.get_embed")
963
+ def test_clean_required_empty(self, get_embed):
964
+ get_embed.return_value = Embed(html="<h1>Hello world!</h1>")
965
+
966
+ block = EmbedBlock()
967
+
962
968
  with self.assertRaisesMessage(ValidationError, ""):
963
- block.clean(None)
969
+ block.clean(block.normalize(None))
970
+
971
+ get_embed.assert_not_called()
964
972
 
965
973
  @patch("wagtail.embeds.embeds.get_embed")
966
974
  def test_clean_non_required(self, get_embed):
@@ -976,9 +984,17 @@ class TestEmbedBlock(TestCase):
976
984
  cleaned_value.url, "https://www.youtube.com/watch?v=_U79Wc965vw"
977
985
  )
978
986
 
979
- cleaned_value = block.clean(None)
987
+ @patch("wagtail.embeds.embeds.get_embed")
988
+ def test_clean_non_required_empty(self, get_embed):
989
+ get_embed.return_value = Embed(html="<h1>Hello world!</h1>")
990
+
991
+ block = EmbedBlock(required=False)
992
+
993
+ cleaned_value = block.clean(block.normalize(None))
980
994
  self.assertIsNone(cleaned_value)
981
995
 
996
+ get_embed.assert_not_called()
997
+
982
998
  @patch("wagtail.embeds.embeds.get_embed")
983
999
  def test_clean_invalid_url(self, get_embed):
984
1000
  get_embed.side_effect = EmbedNotFoundException
@@ -986,9 +1002,17 @@ class TestEmbedBlock(TestCase):
986
1002
  non_required_block = EmbedBlock(required=False)
987
1003
 
988
1004
  with self.assertRaises(ValidationError):
989
- non_required_block.clean(EmbedValue("http://no-oembed-here.com/something"))
1005
+ non_required_block.clean(
1006
+ non_required_block.normalize(
1007
+ EmbedValue("http://no-oembed-here.com/something")
1008
+ )
1009
+ )
990
1010
 
991
1011
  required_block = EmbedBlock()
992
1012
 
993
1013
  with self.assertRaises(ValidationError):
994
- required_block.clean(EmbedValue("http://no-oembed-here.com/something"))
1014
+ required_block.clean(
1015
+ non_required_block.normalize(
1016
+ EmbedValue("http://no-oembed-here.com/something")
1017
+ )
1018
+ )
wagtail/images/models.py CHANGED
@@ -1405,8 +1405,8 @@ class AbstractRendition(ImageFileMixin, models.Model):
1405
1405
  "on the 'image', 'filter_spec', and 'focal_point_key' fields."
1406
1406
  % cls._meta.label,
1407
1407
  hint=(
1408
- "Add models.UniqueConstraint(fields={"
1409
- '"image", "filter_spec", "focal_point_key"}, '
1408
+ "Add models.UniqueConstraint(fields=("
1409
+ '"image", "filter_spec", "focal_point_key"), '
1410
1410
  'name="unique_rendition") to %s.Meta.constraints.'
1411
1411
  % (cls.__name__,)
1412
1412
  ),
@@ -551,8 +551,8 @@ class TestRenditions(TestCase):
551
551
  )
552
552
  self.assertEqual(
553
553
  errors[0].hint,
554
- "Add models.UniqueConstraint(fields={"
555
- '"image", "filter_spec", "focal_point_key"}, '
554
+ "Add models.UniqueConstraint(fields=("
555
+ '"image", "filter_spec", "focal_point_key"), '
556
556
  'name="unique_rendition") to CustomRendition.Meta.constraints.',
557
557
  )
558
558
 
wagtail/models/pages.py CHANGED
@@ -25,6 +25,7 @@ from django.urls import NoReverseMatch, reverse
25
25
  from django.utils import translation as translation
26
26
  from django.utils.encoding import force_bytes, force_str
27
27
  from django.utils.functional import Promise, cached_property
28
+ from django.utils.log import log_response
28
29
  from django.utils.text import capfirst, slugify
29
30
  from django.utils.translation import gettext_lazy as _
30
31
  from modelcluster.fields import ParentalKey
@@ -1226,13 +1227,15 @@ class Page(AbstractPage, index.Indexed, ClusterableModel, metaclass=PageBase):
1226
1227
  """
1227
1228
  allowed_methods = self.allowed_http_method_names()
1228
1229
  if request.method not in allowed_methods:
1229
- logger.warning(
1230
+ response = HttpResponseNotAllowed(allowed_methods)
1231
+ log_response(
1230
1232
  "Method Not Allowed (%s): %s",
1231
1233
  request.method,
1232
1234
  request.path,
1233
- extra={"status_code": 405, "request": request},
1235
+ request=request,
1236
+ response=response,
1234
1237
  )
1235
- return HttpResponseNotAllowed(allowed_methods)
1238
+ return response
1236
1239
 
1237
1240
  def handle_options_request(self, request, *args, **kwargs):
1238
1241
  """
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"
@@ -1115,6 +1115,54 @@ class TestDeconstructStreamFieldWithLookup(TestCase):
1115
1115
  },
1116
1116
  )
1117
1117
 
1118
+ def test_deconstruct_with_listblock_with_child_block_kwarg_idempotence(self):
1119
+ # See https://github.com/wagtail/wagtail/issues/13137. When a ListBlock is defined with
1120
+ # a child_block keyword argument, its deconstruct_with_lookup method inserts that child
1121
+ # block into the lookup to obtain an ID, and returns that ID as the child_block kwarg
1122
+ # in its result. However, an implementation bug meant that this was mutating the kwargs
1123
+ # dict stored in the block's _constructor_args attribute. As a result, subsequent calls
1124
+ # to deconstruct_with_lookup (which happen routinely during makemigrations) would
1125
+ # encounter the ID in child_block, leave it alone (because it isn't a block object as
1126
+ # expected), and return that ID in the result without adding it to the lookup, messing
1127
+ # up the ID sequence in the process.
1128
+ field = StreamField(
1129
+ [
1130
+ ("heading", blocks.CharBlock(required=True)),
1131
+ (
1132
+ "bullets",
1133
+ blocks.ListBlock(child_block=blocks.CharBlock(required=False)),
1134
+ ),
1135
+ ],
1136
+ blank=True,
1137
+ )
1138
+ field.set_attributes_from_name("body")
1139
+
1140
+ expected_args = [
1141
+ [
1142
+ ("heading", 0),
1143
+ ("bullets", 2),
1144
+ ]
1145
+ ]
1146
+ expected_kwargs = {
1147
+ "blank": True,
1148
+ "block_lookup": {
1149
+ 0: ("wagtail.blocks.CharBlock", (), {"required": True}),
1150
+ 1: ("wagtail.blocks.CharBlock", (), {"required": False}),
1151
+ 2: ("wagtail.blocks.ListBlock", (), {"child_block": 1}),
1152
+ },
1153
+ }
1154
+ name, path, args, kwargs = field.deconstruct()
1155
+ self.assertEqual(name, "body")
1156
+ self.assertEqual(path, "wagtail.fields.StreamField")
1157
+ self.assertEqual(kwargs, expected_kwargs)
1158
+ self.assertEqual(args, expected_args)
1159
+
1160
+ name, path, args, kwargs = field.deconstruct()
1161
+ self.assertEqual(name, "body")
1162
+ self.assertEqual(path, "wagtail.fields.StreamField")
1163
+ self.assertEqual(kwargs, expected_kwargs)
1164
+ self.assertEqual(args, expected_args)
1165
+
1118
1166
  def test_deconstruct_with_listblock_subclass(self):
1119
1167
  # See https://github.com/wagtail/wagtail/issues/12164 - unlike StructBlock and StreamBlock,
1120
1168
  # ListBlock's deconstruct method doesn't reduce subclasses to the base ListBlock class.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wagtail
3
- Version: 7.0
3
+ Version: 7.0.1
4
4
  Summary: A Django content management system.
5
5
  Author-email: Wagtail core team + contributors <hello@wagtail.org>
6
6
  License-Expression: BSD-3-Clause
@@ -1,4 +1,4 @@
1
- wagtail/__init__.py,sha256=ez5UTC_rhu7U2gJsgddStsDXVYMguHLRp74LKr9By-E,724
1
+ wagtail/__init__.py,sha256=DQhT861vbs-upaIFVuUVU3ANCGP9p-NCCiJ_yExHBzk,724
2
2
  wagtail/apps.py,sha256=38kXTdHoQzFnpUqDNxFpsqn2dut4V0u9rLOkhqCoYkc,713
3
3
  wagtail/compat.py,sha256=5z6X9d-h_VUFt44kuZ-Cw00e9Be5vIXy7yqAdfuv3Mc,1452
4
4
  wagtail/coreutils.py,sha256=MbFcVZjqUChdHMCa993X_RUwLJQNUGwpkTpzJOFdtgU,19822
@@ -36,7 +36,7 @@ wagtail/actions/unpublish.py,sha256=kIBZrqunRD0xAWPeK32MSVmUIrDfC_woLjYUM9TMoVI,
36
36
  wagtail/actions/unpublish_page.py,sha256=WN8MusNFc6zW8vXfCKKJvWAVZcdPTvYeX5svMEfWG5Y,2085
37
37
  wagtail/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  wagtail/admin/action_menu.py,sha256=6c11U-qv501L7BiDyRnn0r1K23GPvOcgyaFi3L05ac8,12187
39
- wagtail/admin/active_filters.py,sha256=_icxZjhEwSFRATcf_UrphEQ8JaHeTw_rHFqelw6GIys,6936
39
+ wagtail/admin/active_filters.py,sha256=I5rVK-wsQruAaPllsmJVRhFdLwMM17Y9gqZqGDeHw9o,6935
40
40
  wagtail/admin/admin_url_finder.py,sha256=fLPeQVjvVmde2xi_clH46YAbbG0nPkpeSimS4dypGzs,3254
41
41
  wagtail/admin/apps.py,sha256=Kk8hV_D8-WZMFwaKtzDNB9p07Nqy-NfrRRqqHvV_-7k,446
42
42
  wagtail/admin/auth.py,sha256=aK4POOyluUiheybaTIfiUulRO5_Mb7iwUBETzzyKX6Q,4710
@@ -1041,10 +1041,10 @@ wagtail/api/v2/tests/tests.py,sha256=5ybtIySgD20Gs9hVq8xwyqZn168Isn5AJy5DsCkQPqQ
1041
1041
  wagtail/bin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1042
1042
  wagtail/bin/wagtail.py,sha256=pTMsop2BPCpJCqk8IEGdB7u6G8LQ2EZZ8WHWu7gBAXs,14760
1043
1043
  wagtail/blocks/__init__.py,sha256=VjRA2jnSMItNEqkMGtYQxFHzoefy8QbqTysjlFHnxpU,318
1044
- wagtail/blocks/base.py,sha256=MqZ2DLdWLmZ3nlLNZL76iJ08cIT1fbO2uqvfslvq4d4,33131
1044
+ wagtail/blocks/base.py,sha256=TEHyYxUXbGQnLNyIy3ZFkHCAAVZ5EGfXaNhJMvabYvM,33091
1045
1045
  wagtail/blocks/definition_lookup.py,sha256=JkSwFcqEkavq-M6kWNfeDZtvIXnQJ58QT2FeaKrFPEA,3274
1046
1046
  wagtail/blocks/field_block.py,sha256=aShrcRwSsCE86Sx7UVrcCU-KPoKxJoqH830mwV6uTJE,32701
1047
- wagtail/blocks/list_block.py,sha256=n3PXsnljlrEUrBu6MMK-uw1QAOziA_Ndp7rUzdN4LWI,18524
1047
+ wagtail/blocks/list_block.py,sha256=zqxCXaBZQCPRHiQnNLccPXr7CX1jFnpPAEW5iXjQAQY,18638
1048
1048
  wagtail/blocks/static_block.py,sha256=3XXU8AKEnazLaiCJX4BMMdaJd9B6LjB2BovtUbmhK-M,1914
1049
1049
  wagtail/blocks/stream_block.py,sha256=HGXJxB3Am5AuNfIcxYXUVTnMrJAayaty8d8pMdX8K4k,32805
1050
1050
  wagtail/blocks/struct_block.py,sha256=-wXvi3AlkksrZbU9XkXQTaAhTUgT-6cs3xGacb1chs4,16380
@@ -1060,7 +1060,7 @@ wagtail/contrib/forms/models.py,sha256=IqLRh9a9W0hDsO2HUgwfAOUzKWqeaTMvP-KT8VLWV
1060
1060
  wagtail/contrib/forms/panels.py,sha256=zI3bFM1X5iT_fnxQUe5BWWN5iQKm6tEFEiaFhNRZcwk,1556
1061
1061
  wagtail/contrib/forms/urls.py,sha256=VZ4LDq6SkdEi3iXL7zoxDRSNZeGS5ZSeiNUsfqZ-nOI,776
1062
1062
  wagtail/contrib/forms/utils.py,sha256=Gu3WS-X37KQeDuHZliEwkhHJaqDgUwF1ObuVp3ai2fM,1279
1063
- wagtail/contrib/forms/views.py,sha256=xOSyAMn0CpGpDWAMMlaVK4vBaJIzLBUpQlMikwaB1zU,13355
1063
+ wagtail/contrib/forms/views.py,sha256=-pBvZObLNKdwo7Hq5TiAXvrkstba0kKpm3-hjG3VZ18,13383
1064
1064
  wagtail/contrib/forms/wagtail_hooks.py,sha256=VbHWejKs7Pp-KXtrcIqWOS476hpK9UuWBn1XF8qLmug,876
1065
1065
  wagtail/contrib/forms/locale/af/LC_MESSAGES/django.mo,sha256=IT4kQ2iXzYtsLiFZcjhqZdbNqnigtbo1oWilPNx88L0,455
1066
1066
  wagtail/contrib/forms/locale/af/LC_MESSAGES/django.po,sha256=iXzWWEnB2COsqExms3qAUaajagjmiBCvEhMaiGXZbO4,667
@@ -1194,7 +1194,7 @@ wagtail/contrib/forms/templates/wagtailforms/panels/form_responses_panel.html,sh
1194
1194
  wagtail/contrib/forms/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1195
1195
  wagtail/contrib/forms/tests/test_forms.py,sha256=pyTRQjBW9tIInrxnV1_Zy5ACsNTpUlF6SnAfcgOAUWk,16094
1196
1196
  wagtail/contrib/forms/tests/test_models.py,sha256=lcifi_nJHHD9toYVtIY3P-zh-rdCTsLQTgxvAyFKbMM,32465
1197
- wagtail/contrib/forms/tests/test_views.py,sha256=MzrxJQ-UM7RJxZ0MXwx3clZUyc-BL_K5Ni3vRZSFny4,89609
1197
+ wagtail/contrib/forms/tests/test_views.py,sha256=3kqxz-Tp4vtn2vQ4jDgb2B9XbiUlY0lOAa9sEhhoNLw,90917
1198
1198
  wagtail/contrib/forms/tests/utils.py,sha256=OESefxdqGRgL1lDItVPSFNw_FJNB4X0PvozdvAhrpkc,6043
1199
1199
  wagtail/contrib/frontend_cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1200
1200
  wagtail/contrib/frontend_cache/apps.py,sha256=y-TyHADOpdCrIQ7zfnVD6OOxjo28lnBhPJeBtjlPih4,407
@@ -2307,7 +2307,7 @@ wagtail/documents/views/bulk_actions/delete.py,sha256=WbMoo2hHmHLCKQ7G68FduGVPxC
2307
2307
  wagtail/documents/views/bulk_actions/document_bulk_action.py,sha256=mR0ju8xdkxPC_qD2EWFtpHccByObpBi2N2uoUT5iW8M,1287
2308
2308
  wagtail/embeds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2309
2309
  wagtail/embeds/apps.py,sha256=7Jbc193iuZrIAFoWH4yPrniNGrBMHIUDKojV7ZDlk5Y,447
2310
- wagtail/embeds/blocks.py,sha256=-hEk3sSBQFJI0gTIBIP4Tou0gljeAWNFhmflRFusjk8,3088
2310
+ wagtail/embeds/blocks.py,sha256=k7pXkA7uQuVbiqM7_xOcwloFAhq9NJmU0Qz5meMbmxY,3173
2311
2311
  wagtail/embeds/embeds.py,sha256=n3Nh4eiL-pq1WIim-qnw-TxyGGEQJZBzKv2UoZ9Rgt4,2301
2312
2312
  wagtail/embeds/exceptions.py,sha256=RY4SSf31-LljrBfXOX6kTkUAaCayTyxkkuUJdLjxXzE,167
2313
2313
  wagtail/embeds/format.py,sha256=Ir4tZF4MlAyeVYsiD8aXtiu2gnUOLneBpi8enXtg9I0,867
@@ -2451,7 +2451,7 @@ wagtail/embeds/templates/wagtailembeds/chooser/chooser.html,sha256=5RwKWundVE-nH
2451
2451
  wagtail/embeds/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2452
2452
  wagtail/embeds/templatetags/wagtailembeds_tags.py,sha256=RXvbdsv0jeCEFycV8bwe92440l-NbTCOw3dr9k3VJ_M,416
2453
2453
  wagtail/embeds/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2454
- wagtail/embeds/tests/test_embeds.py,sha256=PiYi-CDbEzUiy5Tu3x1u8-knHB5u68UTemoU6PxjOeo,36771
2454
+ wagtail/embeds/tests/test_embeds.py,sha256=GmfQpkmXMaUPZOpdxU4gAo5b7I4CkB6--ymA9Lfz0TE,37510
2455
2455
  wagtail/embeds/tests/test_rich_text.py,sha256=uCLG1EPJf7V1LrDD-CxUNFQVS9TTAitZmx9LOin0t3k,5874
2456
2456
  wagtail/embeds/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2457
2457
  wagtail/embeds/views/chooser.py,sha256=v96F2XJUplak8-jyYjKRhOYHVRmJ0xUrKV79ar_Fw7c,3072
@@ -2469,7 +2469,7 @@ wagtail/images/formats.py,sha256=1PKflhfvSDSievmAnjVaIpeo2MCifX5eYI9X2SD2gYI,302
2469
2469
  wagtail/images/forms.py,sha256=-REgIQP8vfFoufAMIX79IWqUWysb8DJFW_RNccOCXUs,8365
2470
2470
  wagtail/images/image_operations.py,sha256=ciOv3jrOrl3crnEICnw12XMm07LGUqeOu_KHCT6f_50,13399
2471
2471
  wagtail/images/jinja2tags.py,sha256=yQ-1SXclNCovHpKf__U6lxiyKFY9HU9T8Cc2eDCA-U0,2239
2472
- wagtail/images/models.py,sha256=UVY3dJ5E16ZQbyfkxl68B6JBWYGlOrTpoADXFbiUsrU,53056
2472
+ wagtail/images/models.py,sha256=9_glpo7SqLseMDuP5yti9YgSdEaf2bHsVP5wqBxB4Q0,53056
2473
2473
  wagtail/images/permissions.py,sha256=jY_Fd3s4ff5SbH0ncDukYVCTwKa2bCGPkOPNZXUDorQ,1443
2474
2474
  wagtail/images/rect.py,sha256=5Zu33jN2Vh1QUEOcXTjoQCGVM0k1mt1sCfWUVS2sHoA,5800
2475
2475
  wagtail/images/shortcuts.py,sha256=rV7ASj7u_JTQOJJsxwpvijYEPbUTUYlGl1epjEUqekg,1532
@@ -2686,7 +2686,7 @@ wagtail/images/tests/test_form_overrides.py,sha256=3MlQ9ROurqKphajUT1_VPaH1aE6HC
2686
2686
  wagtail/images/tests/test_image_operations.py,sha256=lu9fwD_-pZiNw-TDDPgTEAVXEOiBSowkiDUaCnhAu4g,33287
2687
2687
  wagtail/images/tests/test_jinja2.py,sha256=DiSjE4eGq9Nzc17-1L7I2Go8g4kmX50gpIekZPlpld4,16779
2688
2688
  wagtail/images/tests/test_management_commands.py,sha256=8wRNUBko1ERpn7JOlbWQ2lgYgyvHoB11sDgb1eE4LXU,5712
2689
- wagtail/images/tests/test_models.py,sha256=3_IibdO5rxWQbl_9PDFhDLSLOkJJs_D6YgXF9X099-s,54169
2689
+ wagtail/images/tests/test_models.py,sha256=UbEy4R9HImeMsWoZBTa7HJebQ4HPxMBLVpxOKYqW-2g,54169
2690
2690
  wagtail/images/tests/test_rich_text.py,sha256=P0q4-74WHdymuchdWVpAKv4-wNyBt2Uq1o4PGP_w72c,5462
2691
2691
  wagtail/images/tests/test_shortcuts.py,sha256=6HtdMxmsBbXyTdUP6x6DnjdunCMMU9F6MqqjF23ExiI,2494
2692
2692
  wagtail/images/tests/test_signal_handlers.py,sha256=zmCTVziE5K-keb2mqfhj1rwmiA4XpG6FIXTNpGUCh-w,4346
@@ -3061,7 +3061,7 @@ wagtail/models/i18n.py,sha256=VzzqfOYgqS6mR08JSdpInJqNd6iJaJiHQwqej59_Vl0,16290
3061
3061
  wagtail/models/locking.py,sha256=h9UcObLbyeVCGHQXMsLSxzNBXLUcdAquqvw9WDq41cY,2313
3062
3062
  wagtail/models/media.py,sha256=HYVcV6oFPSZFTbN2DSquKJmdpetLvaGvNSb1R9AoBaI,7495
3063
3063
  wagtail/models/orderable.py,sha256=nAeov0bBehEuYnsNGyLVrjnxC5SAId876dx0COyCLOw,249
3064
- wagtail/models/pages.py,sha256=ntq04POZpPebAKRdQbhFtFA2KzKS2ct_YoX-bu_zzdE,102013
3064
+ wagtail/models/pages.py,sha256=9Byc7qWjYSIMLy0eGJpUjKlYgw6TZRr3omioT-ILFKU,102089
3065
3065
  wagtail/models/panels.py,sha256=OxO5l3RwYEKgu_6G1TTs0sl2sYQxqkG17G27f8g91iE,1239
3066
3066
  wagtail/models/preview.py,sha256=A-L-uBU5OqkBqSCjJ-8NrY7CUgT0NmKm2KL1Fra0LA0,10824
3067
3067
  wagtail/models/reference_index.py,sha256=6jk_RjVxgm4jc0B8MTtlXqwFc29G2GAO5m5tvmmq5ew,29201
@@ -3570,7 +3570,7 @@ wagtail/test/manage.py,sha256=JaihE2eqQFMxzd83WWPE4DLnZbzq0bqEkozWAbe-xn8,255
3570
3570
  wagtail/test/middleware.py,sha256=Tvt43O8iGOFvK1tpZFKHQndiJPO5AcrvzqrTzBjuTuY,1395
3571
3571
  wagtail/test/non_root_urls.py,sha256=ZWPGHRmWHmx2Ext6S_TONDj4ZHdBt5BNZoULON1nDlA,556
3572
3572
  wagtail/test/numberformat.py,sha256=FBKsX_92H97xHnb4Er5mAH2i3oFSorCQnKdGcjHlcgE,3771
3573
- wagtail/test/settings.py,sha256=jYRRqaJsaM3nC_e486OHdkEY9Bd2WOYrU8QIJpP7e4g,9653
3573
+ wagtail/test/settings.py,sha256=WzPykH0kpISFl4rK1JX_q5mBjfilvc1zlR_BSTd1Fzs,9778
3574
3574
  wagtail/test/settings_ui.py,sha256=FtNeC3qofOBsdfNT2ES0CDtwPq8Kth1Ym_l0QM5ZspE,886
3575
3575
  wagtail/test/urls.py,sha256=OqO9tjttDsR04DFc5cPmVijFRnAJZiktLuUXSi8_Cok,2599
3576
3576
  wagtail/test/urls_multilang.py,sha256=Pfif5_J3mDcf-AJEADTsm2dfFTQQWOlLMZHdPg2P8eA,310
@@ -3824,7 +3824,7 @@ wagtail/tests/test_revision_model.py,sha256=dvW9fGG6-V2WeNWpsIm9fP3jtRmJ6wj6pgqM
3824
3824
  wagtail/tests/test_rich_text.py,sha256=bBTdI__z5QSq-Z3dPvGLUyHaodmi6mKMBl65dSrsJQw,17795
3825
3825
  wagtail/tests/test_signals.py,sha256=MTP1e3dEQLt-JbV41JRlIeCzx9-g6grAFtOJgpwsEFI,6122
3826
3826
  wagtail/tests/test_sites.py,sha256=syJCEPMHdKXfbxc_Vb7CH9ymuPVZiWDAae4JmJPmPx0,8488
3827
- wagtail/tests/test_streamfield.py,sha256=ygaIn8jLdmA0oAuN0PwsLt3KZpeJ-I5Uoy9XAx-tFu4,44713
3827
+ wagtail/tests/test_streamfield.py,sha256=Y1JpJoO6Sx0TLI1C7aF6tJY1ZkQpOZKleZysDIDVjB0,46913
3828
3828
  wagtail/tests/test_telepath.py,sha256=muiOryoRmkISEHVu9GPSrKJEVB_EvpOufhvuJF-HrTk,10374
3829
3829
  wagtail/tests/test_tests.py,sha256=BAWYYlrFls1rHsqRVsh_b9eW43t6MaXiswI-CkUI6fs,18272
3830
3830
  wagtail/tests/test_translatablemixin.py,sha256=bCHX65L-3SMtgXU7XEdG0NYV4G5-V93TzzHX24ubcl8,10283
@@ -4032,9 +4032,9 @@ wagtail/utils/timestamps.py,sha256=wqaIvdtZLUENAYiCP9jN8QPPeud305BlPNJiyTNvxkM,1
4032
4032
  wagtail/utils/urlpatterns.py,sha256=RDhVScxdm-RV4HSMjWElyrbEoTPsXu841_SKMgoFKtY,629
4033
4033
  wagtail/utils/utils.py,sha256=nQhfy-fOiZfUFr67kTX4nF_2VVH7_MDtjTDOzZdpPTE,1407
4034
4034
  wagtail/utils/version.py,sha256=jYCDKIGJD3bZHTpgXMXu14oSBArQnf2WVU979D8V4b0,1552
4035
- wagtail-7.0.dist-info/licenses/LICENSE,sha256=0aiL7_RJ2YkOjscmRI7opwmuURrY6h8MR0B24nrdRQU,1512
4036
- wagtail-7.0.dist-info/METADATA,sha256=aR7X3GX3SlfTV7LG2mAyofd_3wONQGXFZWo1zXPFc7w,12598
4037
- wagtail-7.0.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
4038
- wagtail-7.0.dist-info/entry_points.txt,sha256=R14Z0xKoufNcDaku0EWDKM-K8J4ap0EImO8C-df8HVM,53
4039
- wagtail-7.0.dist-info/top_level.txt,sha256=zcKgvuRTi0gSgVzJ1qMoERCwhQ_i0n9bkyxza3oh9as,8
4040
- wagtail-7.0.dist-info/RECORD,,
4035
+ wagtail-7.0.1.dist-info/licenses/LICENSE,sha256=0aiL7_RJ2YkOjscmRI7opwmuURrY6h8MR0B24nrdRQU,1512
4036
+ wagtail-7.0.1.dist-info/METADATA,sha256=AK2vlQ02fluZPpt4JiKxgVNFBZ39mLKt1S9-MftSefc,12600
4037
+ wagtail-7.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
4038
+ wagtail-7.0.1.dist-info/entry_points.txt,sha256=R14Z0xKoufNcDaku0EWDKM-K8J4ap0EImO8C-df8HVM,53
4039
+ wagtail-7.0.1.dist-info/top_level.txt,sha256=zcKgvuRTi0gSgVzJ1qMoERCwhQ_i0n9bkyxza3oh9as,8
4040
+ wagtail-7.0.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.3.1)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5