wagtail 6.0.2__py3-none-any.whl → 6.0.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,7 @@ from wagtail.test.testapp.models import (
14
14
  PanelGenericSettings,
15
15
  TabbedGenericSettings,
16
16
  TestGenericSetting,
17
+ TestPermissionedGenericSetting,
17
18
  )
18
19
  from wagtail.test.utils import WagtailTestUtils
19
20
 
@@ -76,6 +77,11 @@ class BaseTestGenericSettingView(WagtailTestUtils, TestCase):
76
77
  class TestGenericSettingCreateView(BaseTestGenericSettingView):
77
78
  def setUp(self):
78
79
  self.user = self.login()
80
+ self.user.user_permissions.add(
81
+ Permission.objects.get(
82
+ content_type__app_label="wagtailadmin", codename="access_admin"
83
+ )
84
+ )
79
85
 
80
86
  def test_get_edit(self):
81
87
  response = self.get()
@@ -107,6 +113,38 @@ class TestGenericSettingCreateView(BaseTestGenericSettingView):
107
113
  # Ensure the form supports file uploads
108
114
  self.assertContains(response, 'enctype="multipart/form-data"')
109
115
 
116
+ def test_create_restricted_field_without_permission(self):
117
+ self.user.is_superuser = False
118
+ self.user.save()
119
+
120
+ self.assertFalse(TestPermissionedGenericSetting.objects.exists())
121
+ response = self.post(
122
+ post_data={"sensitive_email": "test@example.com", "title": "test"},
123
+ setting=TestPermissionedGenericSetting,
124
+ )
125
+ self.assertEqual(response.status_code, 302)
126
+
127
+ settings = TestPermissionedGenericSetting.objects.get()
128
+ self.assertEqual(settings.title, "test")
129
+ self.assertEqual(settings.sensitive_email, "")
130
+
131
+ def test_create_restricted_field(self):
132
+ self.user.is_superuser = False
133
+ self.user.save()
134
+ self.user.user_permissions.add(
135
+ Permission.objects.get(codename="can_edit_sensitive_email_generic_setting")
136
+ )
137
+ self.assertFalse(TestPermissionedGenericSetting.objects.exists())
138
+ response = self.post(
139
+ post_data={"sensitive_email": "test@example.com", "title": "test"},
140
+ setting=TestPermissionedGenericSetting,
141
+ )
142
+ self.assertEqual(response.status_code, 302)
143
+
144
+ settings = TestPermissionedGenericSetting.objects.get()
145
+ self.assertEqual(settings.title, "test")
146
+ self.assertEqual(settings.sensitive_email, "test@example.com")
147
+
110
148
 
111
149
  class TestGenericSettingEditView(BaseTestGenericSettingView):
112
150
  def setUp(self):
@@ -114,7 +152,12 @@ class TestGenericSettingEditView(BaseTestGenericSettingView):
114
152
  self.test_setting.title = "Setting title"
115
153
  self.test_setting.save()
116
154
 
117
- self.login()
155
+ self.user = self.login()
156
+ self.user.user_permissions.add(
157
+ Permission.objects.get(
158
+ content_type__app_label="wagtailadmin", codename="access_admin"
159
+ )
160
+ )
118
161
 
119
162
  def test_get_edit(self):
120
163
  response = self.get()
@@ -153,6 +196,50 @@ class TestGenericSettingEditView(BaseTestGenericSettingView):
153
196
  expected_url=f"{url}{TestGenericSetting.objects.first().pk}/",
154
197
  )
155
198
 
199
+ def test_edit_restricted_field(self):
200
+ test_setting = TestPermissionedGenericSetting()
201
+ test_setting.sensitive_email = "test@example.com"
202
+ test_setting.save()
203
+ self.user.is_superuser = False
204
+ self.user.save()
205
+
206
+ self.user.user_permissions.add(
207
+ Permission.objects.get(codename="can_edit_sensitive_email_generic_setting")
208
+ )
209
+
210
+ response = self.get(setting=TestPermissionedGenericSetting)
211
+ self.assertEqual(response.status_code, 200)
212
+ self.assertIn("sensitive_email", list(response.context["form"].fields))
213
+
214
+ response = self.post(
215
+ setting=TestPermissionedGenericSetting,
216
+ post_data={"sensitive_email": "test-updated@example.com", "title": "title"},
217
+ )
218
+ self.assertEqual(response.status_code, 302)
219
+
220
+ test_setting.refresh_from_db()
221
+ self.assertEqual(test_setting.sensitive_email, "test-updated@example.com")
222
+
223
+ def test_edit_restricted_field_without_permission(self):
224
+ test_setting = TestPermissionedGenericSetting()
225
+ test_setting.sensitive_email = "test@example.com"
226
+ test_setting.save()
227
+ self.user.is_superuser = False
228
+ self.user.save()
229
+
230
+ response = self.get(setting=TestPermissionedGenericSetting)
231
+ self.assertEqual(response.status_code, 200)
232
+ self.assertNotIn("sensitive_email", list(response.context["form"].fields))
233
+
234
+ response = self.post(
235
+ setting=TestPermissionedGenericSetting,
236
+ post_data={"sensitive_email": "test-updated@example.com", "title": "title"},
237
+ )
238
+ self.assertEqual(response.status_code, 302)
239
+
240
+ test_setting.refresh_from_db()
241
+ self.assertEqual(test_setting.sensitive_email, "test@example.com")
242
+
156
243
 
157
244
  class TestAdminPermission(WagtailTestUtils, TestCase):
158
245
  def test_registered_permission(self):
@@ -14,6 +14,7 @@ from wagtail.test.testapp.models import (
14
14
  IconSiteSetting,
15
15
  PanelSiteSettings,
16
16
  TabbedSiteSettings,
17
+ TestPermissionedSiteSetting,
17
18
  TestSiteSetting,
18
19
  )
19
20
  from wagtail.test.utils import WagtailTestUtils
@@ -72,6 +73,11 @@ class BaseTestSiteSettingView(WagtailTestUtils, TestCase):
72
73
  class TestSiteSettingCreateView(BaseTestSiteSettingView):
73
74
  def setUp(self):
74
75
  self.user = self.login()
76
+ self.user.user_permissions.add(
77
+ Permission.objects.get(
78
+ content_type__app_label="wagtailadmin", codename="access_admin"
79
+ )
80
+ )
75
81
 
76
82
  def test_get_edit(self):
77
83
  response = self.get()
@@ -103,18 +109,55 @@ class TestSiteSettingCreateView(BaseTestSiteSettingView):
103
109
  # Ensure the form supports file uploads
104
110
  self.assertContains(response, 'enctype="multipart/form-data"')
105
111
 
112
+ def test_create_restricted_field_without_permission(self):
113
+ self.user.is_superuser = False
114
+ self.user.save()
115
+
116
+ self.assertFalse(TestPermissionedSiteSetting.objects.exists())
117
+ response = self.post(
118
+ post_data={"sensitive_email": "test@example.com", "title": "test"},
119
+ setting=TestPermissionedSiteSetting,
120
+ )
121
+ self.assertEqual(response.status_code, 302)
122
+
123
+ settings = TestPermissionedSiteSetting.objects.get()
124
+ self.assertEqual(settings.title, "test")
125
+ self.assertEqual(settings.sensitive_email, "")
126
+
127
+ def test_create_restricted_field(self):
128
+ self.user.is_superuser = False
129
+ self.user.save()
130
+ self.user.user_permissions.add(
131
+ Permission.objects.get(codename="can_edit_sensitive_email_site_setting")
132
+ )
133
+ self.assertFalse(TestPermissionedSiteSetting.objects.exists())
134
+ response = self.post(
135
+ post_data={"sensitive_email": "test@example.com", "title": "test"},
136
+ setting=TestPermissionedSiteSetting,
137
+ )
138
+ self.assertEqual(response.status_code, 302)
139
+
140
+ settings = TestPermissionedSiteSetting.objects.get()
141
+ self.assertEqual(settings.title, "test")
142
+ self.assertEqual(settings.sensitive_email, "test@example.com")
143
+
106
144
 
107
145
  class TestSiteSettingEditView(BaseTestSiteSettingView):
108
146
  def setUp(self):
109
- default_site = Site.objects.get(is_default_site=True)
147
+ self.default_site = Site.objects.get(is_default_site=True)
110
148
 
111
149
  self.test_setting = TestSiteSetting()
112
150
  self.test_setting.title = "Site title"
113
151
  self.test_setting.email = "initial@example.com"
114
- self.test_setting.site = default_site
152
+ self.test_setting.site = self.default_site
115
153
  self.test_setting.save()
116
154
 
117
- self.login()
155
+ self.user = self.login()
156
+ self.user.user_permissions.add(
157
+ Permission.objects.get(
158
+ content_type__app_label="wagtailadmin", codename="access_admin"
159
+ )
160
+ )
118
161
 
119
162
  def test_get_edit(self):
120
163
  response = self.get()
@@ -158,6 +201,52 @@ class TestSiteSettingEditView(BaseTestSiteSettingView):
158
201
  response = self.client.get(url)
159
202
  self.assertRedirects(response, status_code=302, expected_url="/admin/")
160
203
 
204
+ def test_edit_restricted_field(self):
205
+ test_setting = TestPermissionedSiteSetting()
206
+ test_setting.sensitive_email = "test@example.com"
207
+ test_setting.site = self.default_site
208
+ test_setting.save()
209
+ self.user.is_superuser = False
210
+ self.user.save()
211
+
212
+ self.user.user_permissions.add(
213
+ Permission.objects.get(codename="can_edit_sensitive_email_site_setting")
214
+ )
215
+
216
+ response = self.get(setting=TestPermissionedSiteSetting)
217
+ self.assertEqual(response.status_code, 200)
218
+ self.assertIn("sensitive_email", list(response.context["form"].fields))
219
+
220
+ response = self.post(
221
+ setting=TestPermissionedSiteSetting,
222
+ post_data={"sensitive_email": "test-updated@example.com", "title": "title"},
223
+ )
224
+ self.assertEqual(response.status_code, 302)
225
+
226
+ test_setting.refresh_from_db()
227
+ self.assertEqual(test_setting.sensitive_email, "test-updated@example.com")
228
+
229
+ def test_edit_restricted_field_without_permission(self):
230
+ test_setting = TestPermissionedSiteSetting()
231
+ test_setting.sensitive_email = "test@example.com"
232
+ test_setting.site = self.default_site
233
+ test_setting.save()
234
+ self.user.is_superuser = False
235
+ self.user.save()
236
+
237
+ response = self.get(setting=TestPermissionedSiteSetting)
238
+ self.assertEqual(response.status_code, 200)
239
+ self.assertNotIn("sensitive_email", list(response.context["form"].fields))
240
+
241
+ response = self.post(
242
+ setting=TestPermissionedSiteSetting,
243
+ post_data={"sensitive_email": "test-updated@example.com", "title": "title"},
244
+ )
245
+ self.assertEqual(response.status_code, 302)
246
+
247
+ test_setting.refresh_from_db()
248
+ self.assertEqual(test_setting.sensitive_email, "test@example.com")
249
+
161
250
 
162
251
  @override_settings(
163
252
  ALLOWED_HOSTS=["testserver", "example.com", "noneoftheabove.example.com"]
@@ -1,6 +1,7 @@
1
1
  from django.test import TestCase
2
2
  from django.urls import reverse
3
3
 
4
+ from wagtail.admin.staticfiles import versioned_static
4
5
  from wagtail.test.utils import WagtailTestUtils
5
6
 
6
7
 
@@ -13,3 +14,10 @@ class TestStyleGuide(WagtailTestUtils, TestCase):
13
14
 
14
15
  self.assertEqual(response.status_code, 200)
15
16
  self.assertTemplateUsed(response, "wagtailstyleguide/base.html")
17
+
18
+ custom_css = versioned_static("wagtailstyleguide/css/animate-progress.css")
19
+ widget_css = versioned_static("wagtailadmin/css/panels/draftail.css")
20
+ widget_js = versioned_static("wagtailadmin/js/draftail.js")
21
+ self.assertContains(response, custom_css)
22
+ self.assertContains(response, widget_css)
23
+ self.assertContains(response, widget_js)
@@ -94,7 +94,7 @@ class ExampleForm(forms.Form):
94
94
 
95
95
  @property
96
96
  def media(self):
97
- return forms.Media(
97
+ return super().media + forms.Media(
98
98
  css={
99
99
  "all": [versioned_static("wagtailstyleguide/css/animate-progress.css")]
100
100
  }
@@ -0,0 +1,43 @@
1
+ from django.apps import apps
2
+ from django.core.management.base import BaseCommand
3
+ from django.db import connection, models
4
+
5
+ from wagtail.models import (
6
+ BaseLogEntry,
7
+ BootstrapTranslatableMixin,
8
+ ReferenceIndex,
9
+ TranslatableMixin,
10
+ )
11
+
12
+
13
+ class Command(BaseCommand):
14
+ help = "Converts UUID columns from char type to the native UUID type used in MariaDB 10.7+ and Django 5.0+."
15
+
16
+ def convert_field(self, model, field_name, null=False):
17
+ if model._meta.get_field(field_name).model != model:
18
+ # Field is inherited from a parent model
19
+ return
20
+
21
+ if not model._meta.managed:
22
+ # The migration framework skips unmanaged models, so we should too
23
+ return
24
+
25
+ old_field = models.CharField(null=null, max_length=36)
26
+ old_field.set_attributes_from_name(field_name)
27
+
28
+ new_field = models.UUIDField(null=null)
29
+ new_field.set_attributes_from_name(field_name)
30
+
31
+ with connection.schema_editor() as schema_editor:
32
+ schema_editor.alter_field(model, old_field, new_field)
33
+
34
+ def handle(self, **options):
35
+ self.convert_field(ReferenceIndex, "content_path_hash")
36
+
37
+ for model in apps.get_models():
38
+ if issubclass(model, BaseLogEntry):
39
+ self.convert_field(model, "uuid", null=True)
40
+ elif issubclass(model, BootstrapTranslatableMixin):
41
+ self.convert_field(model, "translation_key", null=True)
42
+ elif issubclass(model, TranslatableMixin):
43
+ self.convert_field(model, "translation_key")
@@ -235,22 +235,6 @@ class CreateView(generic.CreateEditViewOptionalFeaturesMixin, generic.CreateView
235
235
  def _get_action_menu(self):
236
236
  return SnippetActionMenu(self.request, view=self.view_name, model=self.model)
237
237
 
238
- def _get_initial_form_instance(self):
239
- instance = self.model()
240
-
241
- # Set locale of the new instance
242
- if self.locale:
243
- instance.locale = self.locale
244
-
245
- return instance
246
-
247
- def get_form_kwargs(self):
248
- return {
249
- **super().get_form_kwargs(),
250
- "instance": self._get_initial_form_instance(),
251
- "for_user": self.request.user,
252
- }
253
-
254
238
  def get_side_panels(self):
255
239
  side_panels = [
256
240
  SnippetStatusSidePanel(
@@ -310,9 +294,6 @@ class EditView(generic.CreateEditViewOptionalFeaturesMixin, generic.EditView):
310
294
  locked_for_user=self.locked_for_user,
311
295
  )
312
296
 
313
- def get_form_kwargs(self):
314
- return {**super().get_form_kwargs(), "for_user": self.request.user}
315
-
316
297
  def get_side_panels(self):
317
298
  side_panels = [
318
299
  SnippetStatusSidePanel(
@@ -0,0 +1,42 @@
1
+ # Generated by Django 4.2.11 on 2024-04-25 15:51
2
+
3
+ from django.db import migrations, models
4
+ import django.db.models.deletion
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ('wagtailcore', '0091_remove_revision_submitted_for_moderation'),
11
+ ('tests', '0033_customcopyformpage'),
12
+ ]
13
+
14
+ operations = [
15
+ migrations.CreateModel(
16
+ name='TestPermissionedGenericSetting',
17
+ fields=[
18
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19
+ ('title', models.CharField(max_length=100)),
20
+ ('sensitive_email', models.EmailField(max_length=50)),
21
+ ],
22
+ options={
23
+ 'permissions': [('can_edit_sensitive_email_generic_setting', 'Can edit sensitive email generic setting.')],
24
+ },
25
+ ),
26
+ migrations.AlterModelOptions(
27
+ name='featurecompletetoy',
28
+ options={'permissions': [('can_set_release_date', 'Can set release date')]},
29
+ ),
30
+ migrations.CreateModel(
31
+ name='TestPermissionedSiteSetting',
32
+ fields=[
33
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
34
+ ('title', models.CharField(max_length=100)),
35
+ ('sensitive_email', models.EmailField(max_length=50)),
36
+ ('site', models.OneToOneField(editable=False, on_delete=django.db.models.deletion.CASCADE, to='wagtailcore.site')),
37
+ ],
38
+ options={
39
+ 'permissions': [('can_edit_sensitive_email_site_setting', 'Can edit sensitive email site setting.')],
40
+ },
41
+ ),
42
+ ]
@@ -1640,6 +1640,49 @@ class TestGenericSetting(BaseGenericSetting):
1640
1640
  email = models.EmailField(max_length=50)
1641
1641
 
1642
1642
 
1643
+ @register_setting
1644
+ class TestPermissionedGenericSetting(BaseGenericSetting):
1645
+ title = models.CharField(max_length=100)
1646
+ sensitive_email = models.EmailField(max_length=50)
1647
+
1648
+ panels = [
1649
+ FieldPanel("title"),
1650
+ FieldPanel(
1651
+ "sensitive_email",
1652
+ permission="tests.can_edit_sensitive_email_generic_setting",
1653
+ ),
1654
+ ]
1655
+
1656
+ class Meta:
1657
+ permissions = [
1658
+ (
1659
+ "can_edit_sensitive_email_generic_setting",
1660
+ "Can edit sensitive email generic setting.",
1661
+ ),
1662
+ ]
1663
+
1664
+
1665
+ @register_setting
1666
+ class TestPermissionedSiteSetting(BaseSiteSetting):
1667
+ title = models.CharField(max_length=100)
1668
+ sensitive_email = models.EmailField(max_length=50)
1669
+
1670
+ panels = [
1671
+ FieldPanel("title"),
1672
+ FieldPanel(
1673
+ "sensitive_email", permission="tests.can_edit_sensitive_email_site_setting"
1674
+ ),
1675
+ ]
1676
+
1677
+ class Meta:
1678
+ permissions = [
1679
+ (
1680
+ "can_edit_sensitive_email_site_setting",
1681
+ "Can edit sensitive email site setting.",
1682
+ ),
1683
+ ]
1684
+
1685
+
1643
1686
  @register_setting
1644
1687
  class ImportantPagesSiteSetting(BaseSiteSetting):
1645
1688
  sign_up_page = models.ForeignKey(
@@ -2229,6 +2272,9 @@ class FeatureCompleteToy(index.Indexed, models.Model):
2229
2272
  def __str__(self):
2230
2273
  return f"{self.name} ({self.release_date})"
2231
2274
 
2275
+ class Meta:
2276
+ permissions = [("can_set_release_date", "Can set release date")]
2277
+
2232
2278
 
2233
2279
  class PurgeRevisionsProtectedTestModel(models.Model):
2234
2280
  revision = models.OneToOneField(
@@ -227,7 +227,7 @@ class FeatureCompleteToyViewSet(ModelViewSet):
227
227
 
228
228
  panels = [
229
229
  FieldPanel("name"),
230
- FieldPanel("release_date"),
230
+ FieldPanel("release_date", permission="tests.can_set_release_date"),
231
231
  ]
232
232
 
233
233
 
@@ -2029,7 +2029,13 @@ class TestGroupEditView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
2029
2029
  perm.content_type.model,
2030
2030
  )
2031
2031
  for perm_set in object_perms
2032
- for perm in [next(v for v in flatten(perm_set) if "perm" in v)["perm"]]
2032
+ for perm in [
2033
+ next(
2034
+ v
2035
+ for v in flatten(perm_set)
2036
+ if isinstance(v, dict) and "perm" in v
2037
+ )["perm"]
2038
+ ]
2033
2039
  ]
2034
2040
 
2035
2041
  # Set order on two objects, should appear first and second
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wagtail
3
- Version: 6.0.2
3
+ Version: 6.0.3
4
4
  Summary: A Django content management system.
5
5
  Home-page: https://wagtail.org/
6
6
  Author: Wagtail core team + contributors
@@ -1,4 +1,4 @@
1
- wagtail/__init__.py,sha256=xwPiRMuhLkGxJJZYXaXKEEaDY0W6JK2CySkK8ylI9mw,724
1
+ wagtail/__init__.py,sha256=AalpcuhGeGc_ikrSLxCWo5wCAh7hnaKFfzdXnh58BGY,724
2
2
  wagtail/apps.py,sha256=38kXTdHoQzFnpUqDNxFpsqn2dut4V0u9rLOkhqCoYkc,713
3
3
  wagtail/compat.py,sha256=L41FhlX4xy5KgTdJ63smtM78mtKf1mxkPeOs8kyOwS0,538
4
4
  wagtail/coreutils.py,sha256=2eFnlfuyzu8wr5_u2j_zbrHhQDPxPfnaIlgRc4433J0,20660
@@ -378,7 +378,7 @@ wagtail/admin/static/wagtailadmin/js/chooser-modal.js,sha256=4xHYE6KEL_vh98wzMS7
378
378
  wagtail/admin/static/wagtailadmin/js/chooser-widget-telepath.js,sha256=2IaIEgHWjHgVmJXVr3dPpuiU1PB8rwlm5zruq46gX2E,1682
379
379
  wagtail/admin/static/wagtailadmin/js/chooser-widget.js,sha256=SekmMrwRwf2LcgjW56VjpCbNwF4rEcrcPH4PjiqEIbI,1637
380
380
  wagtail/admin/static/wagtailadmin/js/comments.js,sha256=xSxMNoWCTCdSXVXe4Ot799uHejwwancQFQR3lLhnHuw,52898
381
- wagtail/admin/static/wagtailadmin/js/core.js,sha256=CrpKwbn2QOMo351pDqgdr1cPSB1aQN0aS-vciuEFj4U,75084
381
+ wagtail/admin/static/wagtailadmin/js/core.js,sha256=lK7y9vQhM8ooGwQoxqskaAURauV3btT4mErJHrJBouo,75108
382
382
  wagtail/admin/static/wagtailadmin/js/core.js.LICENSE.txt,sha256=M7UXSQDHTF-vamFVtlKAOaGSMARk8bKbMLR7Mss5V1U,125
383
383
  wagtail/admin/static/wagtailadmin/js/date-time-chooser.js,sha256=cKc3vHN8jLrrUKErdE888TN2lkn-3OvfPyX2aKeUUQM,3470
384
384
  wagtail/admin/static/wagtailadmin/js/draftail.js,sha256=ao5nvS6a-gUQNAf4M06kjPuBCTALpIpF9GSSZsqOzEg,293625
@@ -882,7 +882,7 @@ wagtail/admin/tests/pages/test_edit_page.py,sha256=P6iLTAwxVlexvlurUhQgItQs9ZNnS
882
882
  wagtail/admin/tests/pages/test_explorer_view.py,sha256=6hOC35sU2HAQMQ7v_CY3iqlNIyIKoX1PDwTATGJvJMA,54349
883
883
  wagtail/admin/tests/pages/test_move_page.py,sha256=o-2onhDQ6eb6oqpSL29D8_r-zr-ubhUNb_exuVo4dtI,10175
884
884
  wagtail/admin/tests/pages/test_page_locking.py,sha256=7CMYaBVzbvSdsLMtXNOoVYnG0iSf7RMedFmGMRdguf8,11766
885
- wagtail/admin/tests/pages/test_page_search.py,sha256=9_e1lllYdWAYByegC_7ZQTISmomB4_reywGtz2HEGew,11269
885
+ wagtail/admin/tests/pages/test_page_search.py,sha256=HdcZr41y72YDl3X9qWgEqMWdBFcM7KgW3X-ZgbA7Qgg,12707
886
886
  wagtail/admin/tests/pages/test_page_usage.py,sha256=2cnZXdCaCjqi7PRJ4tyfIyhUIx2j360jgPDFKA8wJUw,2736
887
887
  wagtail/admin/tests/pages/test_preview.py,sha256=S9MkzSxCpfEJgwefe3ZffGzwgzTuZVmGr2zvz1ubSGI,24493
888
888
  wagtail/admin/tests/pages/test_reorder_page.py,sha256=71G4x9n6mgLbHrit5Hvk-it5SoRlkhwVo8nC4MLJiH8,5809
@@ -902,7 +902,7 @@ wagtail/admin/tests/ui/test_tables.py,sha256=MTBnyrWWIFsgYDzU5QbDQ1ZIqu4BTZHh8U8
902
902
  wagtail/admin/tests/viewsets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
903
903
  wagtail/admin/tests/viewsets/test_base_viewset.py,sha256=_6DhpxiinfXr-wjQfh0tcL1skZi1KXVlZLJpxCwazog,1537
904
904
  wagtail/admin/tests/viewsets/test_chooser_viewset.py,sha256=fIoBQ3u_J-ZhWvpATq7BLEzCet7_hOl383xGIgFtf7E,2039
905
- wagtail/admin/tests/viewsets/test_model_viewset.py,sha256=ZdLO4pPWcHwvqdkhnagrb6ZeubqQx9aNa29i1H2BVmg,60490
905
+ wagtail/admin/tests/viewsets/test_model_viewset.py,sha256=XzHAzvKa5vAOJDgO28Zbi7Bz1SfnWKYW3UUoPcaOHCM,61379
906
906
  wagtail/admin/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
907
907
  wagtail/admin/ui/components.py,sha256=UbrSfXbeCo2vmsk69NXOodL82dI7H9U0WxW3-7GbX-4,146
908
908
  wagtail/admin/ui/fields.py,sha256=QQBV9L8w6L5w8E6DG8LKqrlIzz1K5leFSxfM67v6L1Q,1377
@@ -937,7 +937,7 @@ wagtail/admin/views/generic/chooser.py,sha256=pjOYGcYBHc1ZkZJ4LWcHkoGNQ7U7GdKBsJ
937
937
  wagtail/admin/views/generic/history.py,sha256=gsjOYx5aHv1s3klx_5VuZwsPqEaxV_8kucswr6MUTVE,10764
938
938
  wagtail/admin/views/generic/lock.py,sha256=dvZ613n3itNAhO3zdQzGRewm2kH-dyemx-LSuUC2AHM,1435
939
939
  wagtail/admin/views/generic/mixins.py,sha256=s17uj8lGDOI2zi3oH3HDJUem3tDddYQc3mrNxc-J_-I,28349
940
- wagtail/admin/views/generic/models.py,sha256=9ZESF1UGzwT92Mz4WlFE-fXqw4Pr7jZ8xsfmy2xGe04,49927
940
+ wagtail/admin/views/generic/models.py,sha256=5RDc5QmY4dPC0lKGdE2eR3cQbE2jnc4rP8QXLvQbAig,50900
941
941
  wagtail/admin/views/generic/multiple_upload.py,sha256=rgf3uXZShyZ_2rnidfk_tnU4YhHcXyPwrIKMKWIk78s,13031
942
942
  wagtail/admin/views/generic/permissions.py,sha256=8WY3Pd3jt3sPH4CNaQqmhUvgb1YjD3fjIgkqh7zRjbc,1476
943
943
  wagtail/admin/views/generic/preview.py,sha256=9tvUJoz55b0bKY4vvfqnDMNke3TTeSPaEamvrICYR9Q,5655
@@ -956,7 +956,7 @@ wagtail/admin/views/pages/move.py,sha256=tk2AT98mb3RcjjvvCEIczhw4orAzakmXCbdV4LB
956
956
  wagtail/admin/views/pages/ordering.py,sha256=cabaYVsfbHZoxNkGQUqP5klUSlnZDisSFbPko1mX8kM,1633
957
957
  wagtail/admin/views/pages/preview.py,sha256=kMizr-BU4oMHoXhHm7SmkPWBUNa6kq3eXZXj2eQ1yMI,3728
958
958
  wagtail/admin/views/pages/revisions.py,sha256=1CkUrB6gtroB9FTiYv6rxhR9rE8CQuPhRCMwvDuFrIk,7060
959
- wagtail/admin/views/pages/search.py,sha256=ukOwKuDHaGxgnbMU6_jw-Jd4rt_jBDl6JsiMCrHhjCU,5929
959
+ wagtail/admin/views/pages/search.py,sha256=Yd1McpbRW0JzhpYJJbBXlfmmhC7efYfUvrlmriH_7Bs,5987
960
960
  wagtail/admin/views/pages/unpublish.py,sha256=p_lYd6x8k35UlFIhrZzEjQ6m68qbiHAWyvZrgCg4EoY,3716
961
961
  wagtail/admin/views/pages/usage.py,sha256=ywEomHNsPUiHxAAwEIfiO6wwv5Xe0VSsphe58v6msY0,2755
962
962
  wagtail/admin/views/pages/utils.py,sha256=TcZQmy-WQ2SJVeitqKz1kEJb5Svb80qg-ET9SAjMub8,123
@@ -1648,13 +1648,13 @@ wagtail/contrib/settings/templatetags/wagtailsettings_tags.py,sha256=_YT4sMMUcuL
1648
1648
  wagtail/contrib/settings/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1649
1649
  wagtail/contrib/settings/tests/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1650
1650
  wagtail/contrib/settings/tests/generic/base.py,sha256=ROErYgcjkO7ll5NpleP0Y0gin0J6CxFDDFrS7zfJy48,780
1651
- wagtail/contrib/settings/tests/generic/test_admin.py,sha256=yCxB5zN6IXK3D-1Ps2pWD7ad1g5ogNOBbb6UDKk1S9c,7184
1651
+ wagtail/contrib/settings/tests/generic/test_admin.py,sha256=J2909d8VRaJXrbXb4-9sm6hz82wefoQrIVDsjbHbIh0,10685
1652
1652
  wagtail/contrib/settings/tests/generic/test_model.py,sha256=6fvP7I4L-NBsQAqZwrVSyvc828p1DEaPZr8RwjiYqZM,5276
1653
1653
  wagtail/contrib/settings/tests/generic/test_register.py,sha256=J_E6KrlYeQtQqGD8P_4YTjVu3ZLiin3epeU2MsBrq2s,907
1654
1654
  wagtail/contrib/settings/tests/generic/test_templates.py,sha256=Pvm0ZwMBkCf1Z8EYiJ9Xyv_NEY4OScfDawFwU6oTUbc,7250
1655
1655
  wagtail/contrib/settings/tests/site_specific/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1656
1656
  wagtail/contrib/settings/tests/site_specific/base.py,sha256=F0AGRh-k87W5qaYtX_hOLX9fX_DQn8V1rA3vM5lG9_Q,1186
1657
- wagtail/contrib/settings/tests/site_specific/test_admin.py,sha256=w5dOOSBm0D8ziN_K5f48CchsdZ0ffRmC-r06vev-878,11536
1657
+ wagtail/contrib/settings/tests/site_specific/test_admin.py,sha256=i29kYwRbSj0FuXxTm0zZw-TtTgnIUrWDQBMlflawWuc,15094
1658
1658
  wagtail/contrib/settings/tests/site_specific/test_forms.py,sha256=ObrofQc5X6J19sezBRIkodk67fmfAVNahl-85vv34Zk,1226
1659
1659
  wagtail/contrib/settings/tests/site_specific/test_model.py,sha256=Sxpvta-DmfYa0oL7Hqjk8AA8OPWMSWbGnBSwN8xkBiQ,9634
1660
1660
  wagtail/contrib/settings/tests/site_specific/test_register.py,sha256=Zi8VC7vaZ8XA_JwM_0OQLCd4npnIZQA5Y6EMSpWGWq0,860
@@ -1755,8 +1755,8 @@ wagtail/contrib/sitemaps/views.py,sha256=fDC4cNGrJcTknK00jJVKyUHi_NFm3KcE3speobP
1755
1755
  wagtail/contrib/styleguide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1756
1756
  wagtail/contrib/styleguide/apps.py,sha256=KQDm53k-F3HMKFSrBumdxvqMQl-I6cD9Tn4_YBEkAQ4,252
1757
1757
  wagtail/contrib/styleguide/models.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1758
- wagtail/contrib/styleguide/tests.py,sha256=Pai1bciKaSJpK636dTuTAfhUG_e-y8_BGVpPv5GQIjA,431
1759
- wagtail/contrib/styleguide/views.py,sha256=8XHw2xIH26ORavh8tEt_EYASi_UUBxr2t8GIF_RJBDo,6270
1758
+ wagtail/contrib/styleguide/tests.py,sha256=7HhA6ZUHm9W8s2YnMwNEqBreLbcQ9ps1GHoLAy6hAjs,866
1759
+ wagtail/contrib/styleguide/views.py,sha256=yyfVD6PEPasWWVKKwOLOnZ7A11iysJ5jQGEHnLsGwGQ,6286
1760
1760
  wagtail/contrib/styleguide/wagtail_hooks.py,sha256=35TZx-2LUKKrdh78_JR3kLBMYqpvNi2EPXISLm1NQUg,600
1761
1761
  wagtail/contrib/styleguide/locale/af/LC_MESSAGES/django.mo,sha256=Vgou-T2iEQM17_IjA1WCZ0twa7fYsPSDrRxqzVbnpC8,455
1762
1762
  wagtail/contrib/styleguide/locale/af/LC_MESSAGES/django.po,sha256=sRQbU8GkoWn3Q-TdbUGX_xbWkm7SE1ZbVUVM3VbLTCc,667
@@ -2884,6 +2884,7 @@ wagtail/locales/templates/wagtaillocales/create.html,sha256=rOJbRZ9Y6Nf3oAjGIgRv
2884
2884
  wagtail/locales/templates/wagtaillocales/edit.html,sha256=Z6BKLxPMJzIBOZW-X2pmBh5r2dGQOP4fm5PEXxscUjQ,411
2885
2885
  wagtail/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2886
2886
  wagtail/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2887
+ wagtail/management/commands/convert_mariadb_uuids.py,sha256=J-qLmgxq2jgciJUtz6bBsTv-7OUHLgXpAG4Br8QVdbc,1568
2887
2888
  wagtail/management/commands/create_log_entries_from_revisions.py,sha256=0FnmvrUo9jW1N1OaB9DA1SzIT7e2YYiPn6ATX4Ak9Ys,5020
2888
2889
  wagtail/management/commands/fixtree.py,sha256=O5mwQ-k4-8Zq2e47mbBtJjJ_ODOHFlA_MOl8XxIFdmU,6786
2889
2890
  wagtail/management/commands/move_pages.py,sha256=SZVk8AwDJQOROr4lZ56jM9KzryZe31ZBTUJib_u8x2w,852
@@ -3472,7 +3473,7 @@ wagtail/snippets/tests/test_bulk_actions/test_bulk_delete.py,sha256=h19bHzxx0FiP
3472
3473
  wagtail/snippets/tests/test_bulk_actions/test_custom_models.py,sha256=ymcv9FcRzaqA9P_QXIkCLDS2SBhV2Kc9jDrw1W51LZo,2156
3473
3474
  wagtail/snippets/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3474
3475
  wagtail/snippets/views/chooser.py,sha256=Yhr19rpjifwu3YWE0k1ULZkcXWVKXP0mXc4o-ul7f88,2178
3475
- wagtail/snippets/views/snippets.py,sha256=Ywk7q6NazQ8eolzturpP2BfVHL3Uai2tzNz1sDfss4Y,47947
3476
+ wagtail/snippets/views/snippets.py,sha256=VentPtabHVJJhkG5g9Gu-105vKCA7J7Rikvs7LUdhIE,47429
3476
3477
  wagtail/templates/wagtailcore/login.html,sha256=OFcM7lpacqi4vTcHAwmh6-FjYl2fWEKKMJsqPYWhinM,998
3477
3478
  wagtail/templates/wagtailcore/page.html,sha256=731rpIL3MbL3oNEEIzrwQ-a7KgJITGnyCRJa5K8EuU4,343
3478
3479
  wagtail/templates/wagtailcore/password_required.html,sha256=cHsx0GRU8EaXeEyR_jigoKuf4gzS1leEuhFmoU4wmUM,726
@@ -3568,10 +3569,10 @@ wagtail/test/testapp/apps.py,sha256=NIqHOtcWNoM35crZpziUcE5nzmHtcb-PQgtDKjOKV34,
3568
3569
  wagtail/test/testapp/blocks.py,sha256=GUzxM5RVmRHiDk7fmNtFGzfuO1WKJnmAEzJK8Ot52mU,971
3569
3570
  wagtail/test/testapp/forms.py,sha256=jDu_6eF5DzRF3ww-9hGLKCyE90InGLQoiwkTjPQX5qo,1438
3570
3571
  wagtail/test/testapp/media_forms.py,sha256=TVphjCtSfK90cl6p8lfz7hb5fUzAFmBb4KW0u3pOFa4,798
3571
- wagtail/test/testapp/models.py,sha256=px_OhZOHLKxr9o391fKLVU-P0uaot5C9V9JoADLPYR4,61442
3572
+ wagtail/test/testapp/models.py,sha256=PhTZlYp3amUGPccVa8khvhq5AGTi8ZatLZKRgLtsmQQ,62634
3572
3573
  wagtail/test/testapp/rich_text.py,sha256=qxaGVLd9eW69Ii4ERRiJz6VXSuYjDkZCG0DM11LEzR0,1037
3573
3574
  wagtail/test/testapp/urls.py,sha256=2zQPbGiM8e53nGkxu4ZtECjlalBk_t-pTPyapfiKwXc,559
3574
- wagtail/test/testapp/views.py,sha256=EzrZfScrl9WXFfs3pJsEU2nO4bwmRQ0hZW-eww0IU-E,9027
3575
+ wagtail/test/testapp/views.py,sha256=ewiVqyxEq7jCxy4pBroZ9RikkV1g0MJFDbkM_rVuNYM,9068
3575
3576
  wagtail/test/testapp/wagtail_hooks.py,sha256=v4NOwh8rkL38GxRAQjCkW0UOIyLDUZYlBjXtIoEjzxI,11969
3576
3577
  wagtail/test/testapp/fixtures/test.json,sha256=ZyzV2cVz2Pt1JwcB-XzgGV2JXU3-RJONO2RKUGTRaYM,22906
3577
3578
  wagtail/test/testapp/fixtures/test_empty.json,sha256=4t6c6tfYLPQL55Q9lrsNsnmVaeO3paSKpoLq0Tm6YTs,1116
@@ -3621,6 +3622,7 @@ wagtail/test/testapp/migrations/0030_purgerevisionsprotectedtestmodel.py,sha256=
3621
3622
  wagtail/test/testapp/migrations/0031_searchtestmodel.py,sha256=tStn9eArZZHCloMdFZSvsE0VbyPpxY03GMFfGxxUwS8,760
3622
3623
  wagtail/test/testapp/migrations/0032_custompermissionpage.py,sha256=Gu7xVwRd_nVUWODB410mLjxOGMhSmVKVuFmXFjl3_qY,975
3623
3624
  wagtail/test/testapp/migrations/0033_customcopyformpage.py,sha256=-P6SCgXXgDeBiIlkqcrOWus7Tm6UCaILmLLaIL11egE,989
3625
+ wagtail/test/testapp/migrations/0034_testpermissionedgenericsetting_and_more.py,sha256=LfMd61MVj3rrd0-sHWpzQ3zfFTcoG2xQlUQKMFEMAxE,1715
3624
3626
  wagtail/test/testapp/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3625
3627
  wagtail/test/testapp/templates/customprefix/confirm_delete.html,sha256=bP1C1d-aA9Jf68jeda2zgMgtMY_nQLCeInhpofijjsc,160
3626
3628
  wagtail/test/testapp/templates/customprefix/tests/edit.html,sha256=dMh5LvHjW9LkFlT5jKsdtJRjHjtL0Z_yGhP7mlcjk5E,150
@@ -3890,7 +3892,7 @@ wagtail/users/templates/wagtailusers/users/list.html,sha256=-n-BB6Q2nnhztNWmQTJw
3890
3892
  wagtail/users/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3891
3893
  wagtail/users/templatetags/wagtailusers_tags.py,sha256=lo5TbX0YS6siSDlWj9gFtzHQv3gtaYpxmvbImUmJd5Q,4493
3892
3894
  wagtail/users/tests/__init__.py,sha256=-_5MwigQVfaxvNytkEKUk-0sG90N-APaWajAxNmQgX0,192
3893
- wagtail/users/tests/test_admin_views.py,sha256=e22YxRVRfo06ZZitrLmvSsAFJUH8wugh_6XqCfRStcs,92851
3895
+ wagtail/users/tests/test_admin_views.py,sha256=W2L9VgGvnZcZsjFyvtw-SM8zGJEEenSM43pTP7j90NM,93007
3894
3896
  wagtail/users/tests/test_bulk_actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3895
3897
  wagtail/users/tests/test_bulk_actions/test_bulk_assign_role.py,sha256=A2_YxqNftl0XcUCmZ38ozaNeO9Q4fwonCdJZ9mFVoqE,3906
3896
3898
  wagtail/users/tests/test_bulk_actions/test_bulk_delete.py,sha256=76AqkoE5wALzIUOhbaQg4FDeYHi3YrXgTkJX-lxwW1k,5304
@@ -3921,9 +3923,9 @@ wagtail/utils/urlpatterns.py,sha256=RDhVScxdm-RV4HSMjWElyrbEoTPsXu841_SKMgoFKtY,
3921
3923
  wagtail/utils/utils.py,sha256=UALGn0KOyqi5ZoXOozWX99ZPUsVZP51ET8d7sZ1jlm0,430
3922
3924
  wagtail/utils/version.py,sha256=40WGMIy8nSPQJFF01p7c38L444SexH2Cb-bQmR8ztXg,1478
3923
3925
  wagtail/utils/widgets.py,sha256=ibAvxHCjNw06bMlTD7wvrwmGEMNS3NzrnSKREGfPF44,1775
3924
- wagtail-6.0.2.dist-info/LICENSE,sha256=0aiL7_RJ2YkOjscmRI7opwmuURrY6h8MR0B24nrdRQU,1512
3925
- wagtail-6.0.2.dist-info/METADATA,sha256=s_g1camu1MZU9EOaa4eC91puYGDGVoc4gjapCaOepTc,3797
3926
- wagtail-6.0.2.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
3927
- wagtail-6.0.2.dist-info/entry_points.txt,sha256=R14Z0xKoufNcDaku0EWDKM-K8J4ap0EImO8C-df8HVM,53
3928
- wagtail-6.0.2.dist-info/top_level.txt,sha256=zcKgvuRTi0gSgVzJ1qMoERCwhQ_i0n9bkyxza3oh9as,8
3929
- wagtail-6.0.2.dist-info/RECORD,,
3926
+ wagtail-6.0.3.dist-info/LICENSE,sha256=0aiL7_RJ2YkOjscmRI7opwmuURrY6h8MR0B24nrdRQU,1512
3927
+ wagtail-6.0.3.dist-info/METADATA,sha256=15prseYYe8ZY201sM-jy7zJxSCF0YDR-j76oBBRjuis,3797
3928
+ wagtail-6.0.3.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
3929
+ wagtail-6.0.3.dist-info/entry_points.txt,sha256=R14Z0xKoufNcDaku0EWDKM-K8J4ap0EImO8C-df8HVM,53
3930
+ wagtail-6.0.3.dist-info/top_level.txt,sha256=zcKgvuRTi0gSgVzJ1qMoERCwhQ_i0n9bkyxza3oh9as,8
3931
+ wagtail-6.0.3.dist-info/RECORD,,