wagtail 5.2.3__py3-none-any.whl → 5.2.4__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 +1 -1
- wagtail/admin/panels/title_field_panel.py +5 -1
- wagtail/admin/tests/api/test_pages.py +26 -10
- wagtail/admin/tests/test_edit_handlers.py +19 -0
- wagtail/admin/tests/test_workflows.py +25 -1
- wagtail/admin/tests/viewsets/test_model_viewset.py +27 -0
- wagtail/admin/views/generic/history.py +17 -1
- wagtail/admin/views/generic/usage.py +8 -0
- wagtail/admin/views/reports/workflows.py +19 -4
- wagtail/search/backends/elasticsearch5.py +9 -2
- wagtail/search/tests/test_elasticsearch5_backend.py +25 -0
- {wagtail-5.2.3.dist-info → wagtail-5.2.4.dist-info}/METADATA +1 -1
- {wagtail-5.2.3.dist-info → wagtail-5.2.4.dist-info}/RECORD +17 -17
- {wagtail-5.2.3.dist-info → wagtail-5.2.4.dist-info}/LICENSE +0 -0
- {wagtail-5.2.3.dist-info → wagtail-5.2.4.dist-info}/WHEEL +0 -0
- {wagtail-5.2.3.dist-info → wagtail-5.2.4.dist-info}/entry_points.txt +0 -0
- {wagtail-5.2.3.dist-info → wagtail-5.2.4.dist-info}/top_level.txt +0 -0
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 = (5, 2,
|
|
9
|
+
VERSION = (5, 2, 4, "final", 1)
|
|
10
10
|
|
|
11
11
|
__version__ = get_version(VERSION)
|
|
12
12
|
|
|
@@ -78,7 +78,11 @@ class TitleFieldPanel(FieldPanel):
|
|
|
78
78
|
actions = [widget.attrs.get("data-action", None)] + self.apply_actions
|
|
79
79
|
attrs["data-action"] = " ".join(filter(None, actions))
|
|
80
80
|
|
|
81
|
-
targets = [
|
|
81
|
+
targets = [
|
|
82
|
+
self.get_target_selector(target)
|
|
83
|
+
for target in panel.targets
|
|
84
|
+
if target in self.form.fields
|
|
85
|
+
]
|
|
82
86
|
attrs["data-w-sync-target-value"] = ", ".join(filter(None, targets))
|
|
83
87
|
|
|
84
88
|
placeholder = self.get_placeholder()
|
|
@@ -1309,7 +1309,7 @@ class TestCopyPageAction(AdminAPITestCase, TestCase):
|
|
|
1309
1309
|
self.assertEqual(response.status_code, 403)
|
|
1310
1310
|
content = json.loads(response.content.decode("utf-8"))
|
|
1311
1311
|
self.assertEqual(
|
|
1312
|
-
content, {"detail": "You do not have permission to
|
|
1312
|
+
content, {"detail": "You do not have permission to copy this page"}
|
|
1313
1313
|
)
|
|
1314
1314
|
|
|
1315
1315
|
def test_recursively_copy_into_self(self):
|
|
@@ -1347,7 +1347,7 @@ class TestCopyPageAction(AdminAPITestCase, TestCase):
|
|
|
1347
1347
|
self.assertEqual(response.status_code, 403)
|
|
1348
1348
|
content = json.loads(response.content.decode("utf-8"))
|
|
1349
1349
|
self.assertEqual(
|
|
1350
|
-
content, {"detail": "You do not have permission to
|
|
1350
|
+
content, {"detail": "You do not have permission to copy this page"}
|
|
1351
1351
|
)
|
|
1352
1352
|
|
|
1353
1353
|
def test_without_publish_permissions_at_destination_with_keep_live(self):
|
|
@@ -1374,7 +1374,12 @@ class TestCopyPageAction(AdminAPITestCase, TestCase):
|
|
|
1374
1374
|
self.assertEqual(response.status_code, 403)
|
|
1375
1375
|
content = json.loads(response.content.decode("utf-8"))
|
|
1376
1376
|
self.assertEqual(
|
|
1377
|
-
content,
|
|
1377
|
+
content,
|
|
1378
|
+
{
|
|
1379
|
+
"detail": (
|
|
1380
|
+
"You do not have permission to publish a page at the destination"
|
|
1381
|
+
)
|
|
1382
|
+
},
|
|
1378
1383
|
)
|
|
1379
1384
|
|
|
1380
1385
|
def test_respects_page_creation_rules(self):
|
|
@@ -1384,7 +1389,7 @@ class TestCopyPageAction(AdminAPITestCase, TestCase):
|
|
|
1384
1389
|
self.assertEqual(response.status_code, 403)
|
|
1385
1390
|
content = json.loads(response.content.decode("utf-8"))
|
|
1386
1391
|
self.assertEqual(
|
|
1387
|
-
content, {"detail": "You do not have permission to
|
|
1392
|
+
content, {"detail": "You do not have permission to copy this page"}
|
|
1388
1393
|
)
|
|
1389
1394
|
|
|
1390
1395
|
def test_copy_page_slug_in_use(self):
|
|
@@ -1511,7 +1516,7 @@ class TestDeletePageAction(AdminAPITestCase, TestCase):
|
|
|
1511
1516
|
self.assertEqual(response.status_code, 403)
|
|
1512
1517
|
content = json.loads(response.content.decode("utf-8"))
|
|
1513
1518
|
self.assertEqual(
|
|
1514
|
-
content, {"detail": "You do not have permission to
|
|
1519
|
+
content, {"detail": "You do not have permission to delete this page"}
|
|
1515
1520
|
)
|
|
1516
1521
|
|
|
1517
1522
|
# Page is still there
|
|
@@ -1559,7 +1564,7 @@ class TestPublishPageAction(AdminAPITestCase, TestCase):
|
|
|
1559
1564
|
self.assertEqual(response.status_code, 403)
|
|
1560
1565
|
content = json.loads(response.content.decode("utf-8"))
|
|
1561
1566
|
self.assertEqual(
|
|
1562
|
-
content, {"detail": "You do not have permission to
|
|
1567
|
+
content, {"detail": "You do not have permission to publish this page"}
|
|
1563
1568
|
)
|
|
1564
1569
|
|
|
1565
1570
|
def test_publish_alias_page(self):
|
|
@@ -1649,7 +1654,7 @@ class TestUnpublishPageAction(AdminAPITestCase, TestCase):
|
|
|
1649
1654
|
self.assertEqual(response.status_code, 403)
|
|
1650
1655
|
content = json.loads(response.content.decode("utf-8"))
|
|
1651
1656
|
self.assertEqual(
|
|
1652
|
-
content, {"detail": "You do not have permission to
|
|
1657
|
+
content, {"detail": "You do not have permission to unpublish this page"}
|
|
1653
1658
|
)
|
|
1654
1659
|
|
|
1655
1660
|
|
|
@@ -1681,7 +1686,13 @@ class TestMovePageAction(AdminAPITestCase, TestCase):
|
|
|
1681
1686
|
|
|
1682
1687
|
content = json.loads(response.content.decode("utf-8"))
|
|
1683
1688
|
self.assertEqual(
|
|
1684
|
-
content,
|
|
1689
|
+
content,
|
|
1690
|
+
{
|
|
1691
|
+
"detail": (
|
|
1692
|
+
"You do not have permission to move the page to the "
|
|
1693
|
+
"target specified."
|
|
1694
|
+
),
|
|
1695
|
+
},
|
|
1685
1696
|
)
|
|
1686
1697
|
|
|
1687
1698
|
def test_move_page_without_destination_page_id(self):
|
|
@@ -1884,7 +1895,12 @@ class TestCreatePageAliasAction(AdminAPITestCase, TestCase):
|
|
|
1884
1895
|
|
|
1885
1896
|
content = json.loads(response.content.decode("utf-8"))
|
|
1886
1897
|
self.assertEqual(
|
|
1887
|
-
content,
|
|
1898
|
+
content,
|
|
1899
|
+
{
|
|
1900
|
+
"detail": (
|
|
1901
|
+
"You do not have permission to publish a page at the destination"
|
|
1902
|
+
),
|
|
1903
|
+
},
|
|
1888
1904
|
)
|
|
1889
1905
|
|
|
1890
1906
|
|
|
@@ -1941,7 +1957,7 @@ class TestRevertToPageRevisionAction(AdminAPITestCase, TestCase):
|
|
|
1941
1957
|
|
|
1942
1958
|
content = json.loads(response.content.decode("utf-8"))
|
|
1943
1959
|
self.assertEqual(
|
|
1944
|
-
content, {"detail": "You do not have permission to
|
|
1960
|
+
content, {"detail": "You do not have permission to edit this page"}
|
|
1945
1961
|
)
|
|
1946
1962
|
|
|
1947
1963
|
def test_revert_to_page_revision_without_revision_id(self):
|
|
@@ -2260,6 +2260,25 @@ class TestTitleFieldPanel(WagtailTestUtils, TestCase):
|
|
|
2260
2260
|
"focus->w-sync#check blur->w-sync#apply change->w-sync#apply keyup->w-sync#apply",
|
|
2261
2261
|
)
|
|
2262
2262
|
|
|
2263
|
+
def test_form_without_slugfield(self):
|
|
2264
|
+
html = self.get_edit_handler_html(ObjectList([TitleFieldPanel("title")]))
|
|
2265
|
+
|
|
2266
|
+
self.assertIsNotNone(html.find(attrs={"class": "w-panel title"}))
|
|
2267
|
+
|
|
2268
|
+
attrs = html.find("input").attrs
|
|
2269
|
+
self.assertEqual(attrs["data-w-sync-target-value"], "")
|
|
2270
|
+
|
|
2271
|
+
def test_form_with_readonly_slugfield(self):
|
|
2272
|
+
html = self.get_edit_handler_html(
|
|
2273
|
+
ObjectList([TitleFieldPanel("title"), FieldPanel("slug", read_only=True)]),
|
|
2274
|
+
instance=EventPage(),
|
|
2275
|
+
)
|
|
2276
|
+
|
|
2277
|
+
self.assertIsNotNone(html.find(attrs={"class": "w-panel title"}))
|
|
2278
|
+
|
|
2279
|
+
attrs = html.find("input").attrs
|
|
2280
|
+
self.assertEqual(attrs["data-w-sync-target-value"], "")
|
|
2281
|
+
|
|
2263
2282
|
def test_not_using_apply_actions_if_live(self):
|
|
2264
2283
|
"""
|
|
2265
2284
|
If the Page (or any model) has `live = True`, do not apply the actions by default.
|
|
@@ -2412,7 +2412,7 @@ class TestPageWorkflowReport(BasePageWorkflowTests):
|
|
|
2412
2412
|
self.submitter.first_name = "Sebastian"
|
|
2413
2413
|
self.submitter.last_name = "Mitter"
|
|
2414
2414
|
self.submitter.save()
|
|
2415
|
-
self.post("submit")
|
|
2415
|
+
self.post("submit", follow=True)
|
|
2416
2416
|
self.login(user=self.moderator)
|
|
2417
2417
|
|
|
2418
2418
|
def setup_workflow_and_tasks(self):
|
|
@@ -2545,11 +2545,35 @@ class TestPageWorkflowReport(BasePageWorkflowTests):
|
|
|
2545
2545
|
self.assertEqual(response.status_code, 200)
|
|
2546
2546
|
self.assertNotIn("Hello world!", content)
|
|
2547
2547
|
|
|
2548
|
+
def test_workflow_report_deleted(self):
|
|
2549
|
+
self.object.delete()
|
|
2550
|
+
response = self.client.get(reverse("wagtailadmin_reports:workflow"))
|
|
2551
|
+
self.assertEqual(response.status_code, 200)
|
|
2552
|
+
self.assertNotContains(response, "Hello world!")
|
|
2553
|
+
# test_workflow is only rendered in the filter, not the results
|
|
2554
|
+
self.assertContains(response, "test_workflow", count=1)
|
|
2555
|
+
self.assertNotContains(response, "Sebastian Mitter")
|
|
2556
|
+
self.assertNotContains(response, "March 31, 2020")
|
|
2557
|
+
|
|
2558
|
+
response = self.client.get(reverse("wagtailadmin_reports:workflow_tasks"))
|
|
2559
|
+
self.assertEqual(response.status_code, 200)
|
|
2560
|
+
self.assertNotContains(response, "Hello world!")
|
|
2561
|
+
|
|
2548
2562
|
|
|
2549
2563
|
class TestSnippetWorkflowReport(TestPageWorkflowReport, BaseSnippetWorkflowTests):
|
|
2550
2564
|
pass
|
|
2551
2565
|
|
|
2552
2566
|
|
|
2567
|
+
class TestNonLockableSnippetWorkflowReport(
|
|
2568
|
+
TestPageWorkflowReport, BaseSnippetWorkflowTests
|
|
2569
|
+
):
|
|
2570
|
+
# This model does not use LockableMixin, and it also does not have a
|
|
2571
|
+
# GenericRelation to WorkflowState and Revision, but it should not break
|
|
2572
|
+
# the report page.
|
|
2573
|
+
# See https://github.com/wagtail/wagtail/issues/11300 for more details.
|
|
2574
|
+
model = ModeratedModel
|
|
2575
|
+
|
|
2576
|
+
|
|
2553
2577
|
class TestPageNotificationPreferences(BasePageWorkflowTests):
|
|
2554
2578
|
def setUp(self):
|
|
2555
2579
|
super().setUp()
|
|
@@ -13,6 +13,7 @@ from django.utils.timezone import make_aware
|
|
|
13
13
|
from openpyxl import load_workbook
|
|
14
14
|
|
|
15
15
|
from wagtail.admin.admin_url_finder import AdminURLFinder
|
|
16
|
+
from wagtail.log_actions import log
|
|
16
17
|
from wagtail.models import ModelLogEntry
|
|
17
18
|
from wagtail.test.testapp.models import (
|
|
18
19
|
FeatureCompleteToy,
|
|
@@ -777,6 +778,18 @@ class TestBreadcrumbs(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
|
777
778
|
]
|
|
778
779
|
self.assertBreadcrumbsItemsRendered(items, response.content)
|
|
779
780
|
|
|
781
|
+
def test_history_view_pagination(self):
|
|
782
|
+
for i in range(25):
|
|
783
|
+
log(instance=self.object, action="wagtail.edit", user=self.user)
|
|
784
|
+
|
|
785
|
+
history_url = reverse(
|
|
786
|
+
"feature_complete_toy:history",
|
|
787
|
+
args=(quote(self.object.pk),),
|
|
788
|
+
)
|
|
789
|
+
response = self.client.get(history_url)
|
|
790
|
+
self.assertContains(response, "Page 1 of 2")
|
|
791
|
+
self.assertContains(response, f'<a href="{history_url}?p=2">')
|
|
792
|
+
|
|
780
793
|
def test_usage_view(self):
|
|
781
794
|
usage_url = reverse(
|
|
782
795
|
"feature_complete_toy:usage",
|
|
@@ -801,6 +814,20 @@ class TestBreadcrumbs(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
|
801
814
|
]
|
|
802
815
|
self.assertBreadcrumbsItemsRendered(items, response.content)
|
|
803
816
|
|
|
817
|
+
def test_usage_view_pagination(self):
|
|
818
|
+
for i in range(25):
|
|
819
|
+
VariousOnDeleteModel.objects.create(
|
|
820
|
+
text=f"Toybox {i}", cascading_toy=self.object
|
|
821
|
+
)
|
|
822
|
+
|
|
823
|
+
usage_url = reverse(
|
|
824
|
+
"feature_complete_toy:usage",
|
|
825
|
+
args=(quote(self.object.pk),),
|
|
826
|
+
)
|
|
827
|
+
response = self.client.get(usage_url)
|
|
828
|
+
self.assertContains(response, "Page 1 of 2")
|
|
829
|
+
self.assertContains(response, f'<a href="{usage_url}?p=2">')
|
|
830
|
+
|
|
804
831
|
def test_inspect_view(self):
|
|
805
832
|
inspect_url = reverse(
|
|
806
833
|
"feature_complete_toy:inspect",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from datetime import timedelta
|
|
2
2
|
|
|
3
3
|
import django_filters
|
|
4
|
-
from django.contrib.admin.utils import unquote
|
|
4
|
+
from django.contrib.admin.utils import quote, unquote
|
|
5
5
|
from django.core.paginator import Paginator
|
|
6
6
|
from django.shortcuts import get_object_or_404
|
|
7
7
|
from django.urls import reverse
|
|
@@ -57,6 +57,8 @@ class HistoryView(IndexView):
|
|
|
57
57
|
any_permission_required = ["add", "change", "delete"]
|
|
58
58
|
page_title = gettext_lazy("History")
|
|
59
59
|
results_template_name = "wagtailadmin/generic/history_results.html"
|
|
60
|
+
history_url_name = None
|
|
61
|
+
history_results_url_name = None
|
|
60
62
|
header_icon = "history"
|
|
61
63
|
is_searchable = False
|
|
62
64
|
paginate_by = 20
|
|
@@ -97,6 +99,20 @@ class HistoryView(IndexView):
|
|
|
97
99
|
{"url": "", "label": gettext("History")},
|
|
98
100
|
]
|
|
99
101
|
|
|
102
|
+
def get_history_url(self, instance):
|
|
103
|
+
if self.history_url_name:
|
|
104
|
+
return reverse(self.history_url_name, args=(quote(instance.pk),))
|
|
105
|
+
|
|
106
|
+
def get_history_results_url(self, instance):
|
|
107
|
+
if self.history_results_url_name:
|
|
108
|
+
return reverse(self.history_results_url_name, args=(quote(instance.pk),))
|
|
109
|
+
|
|
110
|
+
def get_index_url(self): # used for pagination links
|
|
111
|
+
return self.get_history_url(self.object)
|
|
112
|
+
|
|
113
|
+
def get_index_results_url(self):
|
|
114
|
+
return self.get_history_results_url(self.object)
|
|
115
|
+
|
|
100
116
|
def get_context_data(self, *args, object_list=None, **kwargs):
|
|
101
117
|
context = super().get_context_data(*args, object_list=object_list, **kwargs)
|
|
102
118
|
context["object"] = self.object
|
|
@@ -24,6 +24,7 @@ class UsageView(PermissionCheckedMixin, BaseObjectMixin, BaseListingView):
|
|
|
24
24
|
page_title = gettext_lazy("Usage of")
|
|
25
25
|
index_url_name = None
|
|
26
26
|
edit_url_name = None
|
|
27
|
+
usage_url_name = None
|
|
27
28
|
permission_required = "change"
|
|
28
29
|
|
|
29
30
|
def setup(self, request, *args, **kwargs):
|
|
@@ -40,6 +41,13 @@ class UsageView(PermissionCheckedMixin, BaseObjectMixin, BaseListingView):
|
|
|
40
41
|
return object.get_latest_revision_as_object()
|
|
41
42
|
return object
|
|
42
43
|
|
|
44
|
+
def get_usage_url(self, instance):
|
|
45
|
+
if self.usage_url_name:
|
|
46
|
+
return reverse(self.usage_url_name, args=(quote(instance.pk),))
|
|
47
|
+
|
|
48
|
+
def get_index_url(self): # used for pagination links
|
|
49
|
+
return self.get_usage_url(self.object)
|
|
50
|
+
|
|
43
51
|
def get_page_subtitle(self):
|
|
44
52
|
return get_latest_str(self.object)
|
|
45
53
|
|
|
@@ -187,10 +187,16 @@ class WorkflowView(ReportView):
|
|
|
187
187
|
content_type_id__in=get_editable_content_type_ids(self.request)
|
|
188
188
|
)
|
|
189
189
|
|
|
190
|
-
return
|
|
191
|
-
|
|
190
|
+
return (
|
|
191
|
+
WorkflowState.objects.filter(editable_pages | editable_objects)
|
|
192
|
+
.select_related("workflow", "requested_by")
|
|
193
|
+
.prefetch_related("content_object", "content_object__latest_revision")
|
|
194
|
+
.order_by("-created_at")
|
|
192
195
|
)
|
|
193
196
|
|
|
197
|
+
def decorate_paginated_queryset(self, object_list):
|
|
198
|
+
return [obj for obj in object_list if obj.content_object]
|
|
199
|
+
|
|
194
200
|
|
|
195
201
|
class WorkflowTasksView(ReportView):
|
|
196
202
|
template_name = "wagtailadmin/reports/workflow_tasks.html"
|
|
@@ -248,6 +254,15 @@ class WorkflowTasksView(ReportView):
|
|
|
248
254
|
self.request
|
|
249
255
|
)
|
|
250
256
|
)
|
|
251
|
-
return
|
|
252
|
-
|
|
257
|
+
return (
|
|
258
|
+
TaskState.objects.filter(editable_pages | editable_objects)
|
|
259
|
+
.select_related("workflow_state", "task")
|
|
260
|
+
.prefetch_related(
|
|
261
|
+
"workflow_state__content_object",
|
|
262
|
+
"workflow_state__content_object__latest_revision",
|
|
263
|
+
)
|
|
264
|
+
.order_by("-started_at")
|
|
253
265
|
)
|
|
266
|
+
|
|
267
|
+
def decorate_paginated_queryset(self, object_list):
|
|
268
|
+
return [obj for obj in object_list if obj.workflow_state.content_object]
|
|
@@ -653,8 +653,15 @@ class ElasticsearchAutocompleteQueryCompilerImpl:
|
|
|
653
653
|
if len(fields) == 0:
|
|
654
654
|
# No fields. Return a query that'll match nothing
|
|
655
655
|
return {"bool": {"mustNot": {"match_all": {}}}}
|
|
656
|
-
|
|
657
|
-
|
|
656
|
+
elif isinstance(self.query, PlainText):
|
|
657
|
+
return self._compile_plaintext_query(self.query, fields)
|
|
658
|
+
elif isinstance(self.query, MatchAll):
|
|
659
|
+
return {"match_all": {}}
|
|
660
|
+
else:
|
|
661
|
+
raise NotImplementedError(
|
|
662
|
+
"`%s` is not supported for autocomplete queries."
|
|
663
|
+
% self.query.__class__.__name__
|
|
664
|
+
)
|
|
658
665
|
|
|
659
666
|
|
|
660
667
|
class Elasticsearch5AutocompleteQueryCompiler(
|
|
@@ -70,6 +70,31 @@ class TestElasticsearch5SearchQuery(TestCase):
|
|
|
70
70
|
}
|
|
71
71
|
self.assertDictEqual(query_compiler.get_query(), expected_result)
|
|
72
72
|
|
|
73
|
+
def test_match_all_autocomplete(self):
|
|
74
|
+
# Create a query
|
|
75
|
+
query = self.autocomplete_query_compiler_class(
|
|
76
|
+
models.Book.objects.all(), MATCH_ALL
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
# Check it
|
|
80
|
+
expected_result = {
|
|
81
|
+
"bool": {
|
|
82
|
+
"filter": {"match": {"content_type": "searchtests.Book"}},
|
|
83
|
+
"must": {"match_all": {}},
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
self.assertDictEqual(query.get_query(), expected_result)
|
|
87
|
+
|
|
88
|
+
def test_non_supported_queries_autocomplete(self):
|
|
89
|
+
# Create a query
|
|
90
|
+
query = self.autocomplete_query_compiler_class(
|
|
91
|
+
models.Book.objects.all(), Fuzzy("Hello")
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
# Check it
|
|
95
|
+
with self.assertRaises(NotImplementedError):
|
|
96
|
+
query.get_query()
|
|
97
|
+
|
|
73
98
|
def test_match_all(self):
|
|
74
99
|
# Create a query
|
|
75
100
|
query_compiler = self.query_compiler_class(models.Book.objects.all(), MATCH_ALL)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
wagtail/__init__.py,sha256=
|
|
1
|
+
wagtail/__init__.py,sha256=jmetSduAfAHcC7kBOOD1M45uLzWe4wMk5AUNoUO9Z5g,724
|
|
2
2
|
wagtail/apps.py,sha256=38kXTdHoQzFnpUqDNxFpsqn2dut4V0u9rLOkhqCoYkc,713
|
|
3
3
|
wagtail/compat.py,sha256=L41FhlX4xy5KgTdJ63smtM78mtKf1mxkPeOs8kyOwS0,538
|
|
4
4
|
wagtail/coreutils.py,sha256=ZlmtoHC5YzXmhdKi13QkCSmBryAmS7k8s5jgQjahpEQ,20660
|
|
@@ -334,7 +334,7 @@ wagtail/admin/panels/page_chooser_panel.py,sha256=aOOvkbN0ONy2aeJWcsAc926O1NFttk
|
|
|
334
334
|
wagtail/admin/panels/page_utils.py,sha256=dBvYHofWP7-yWMY2KcmSVsC4-JJWdr9nNM5cQxUb4Mc,2297
|
|
335
335
|
wagtail/admin/panels/publishing_panel.py,sha256=zMUYL1ybwoiv3f1Za7pCOBKbzWHeA7dshTWV8Q3SN0A,2452
|
|
336
336
|
wagtail/admin/panels/signal_handlers.py,sha256=BOpF4PKqvGqz1qarMM2P7uzJaELDF9uYMOieXY2Xh-o,705
|
|
337
|
-
wagtail/admin/panels/title_field_panel.py,sha256=
|
|
337
|
+
wagtail/admin/panels/title_field_panel.py,sha256=md9ZV0IImKNKavALsQjVrO3kijKhHF9HUOknKXB4mEA,4868
|
|
338
338
|
wagtail/admin/rich_text/__init__.py,sha256=HcMHRljUQSC4nomdfxT44cNrTtdFp-OHMOlpzb_Fnhs,965
|
|
339
339
|
wagtail/admin/rich_text/converters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
340
340
|
wagtail/admin/rich_text/converters/contentstate.py,sha256=kdeaIioSf3bbKD7bAoESdQHirXzC6nzJdSAehQAyTWA,4927
|
|
@@ -846,7 +846,7 @@ wagtail/admin/tests/test_compare.py,sha256=NpPtmLNWdArAp91-OIFRozcXjKA1FUV5tgI3r
|
|
|
846
846
|
wagtail/admin/tests/test_contentstate.py,sha256=C8hzm30KP6KJH6Q7CzNojamPl_78aUdqRkq3VybPhGE,73011
|
|
847
847
|
wagtail/admin/tests/test_dbwhitelister.py,sha256=uKlqTviGnlD1dClroq9Y1wOXLIfZWA4LvsfCtYW5S-E,6069
|
|
848
848
|
wagtail/admin/tests/test_dismissibles.py,sha256=JKXt8SucZcAp4IkKNMQU7-qrm8oMu8vDKnyTdTUbAYo,2671
|
|
849
|
-
wagtail/admin/tests/test_edit_handlers.py,sha256=
|
|
849
|
+
wagtail/admin/tests/test_edit_handlers.py,sha256=yURSoqfc5bHJatbPuXVP-dnjY5JXSC_NqTgFcd8KznI,99249
|
|
850
850
|
wagtail/admin/tests/test_filters.py,sha256=PVRp_XbxggZ0IT-ZnZJZF0SZVxAtV39nZcDSSQxtBFU,3843
|
|
851
851
|
wagtail/admin/tests/test_forms.py,sha256=RsIFiDlE5b3Wbm7bJAfvSjElM8qA-Iaxrzqwmiq_kW0,994
|
|
852
852
|
wagtail/admin/tests/test_html_ruleset.py,sha256=QCSL8JGVyHQapCdGSgCFUTlsIgi2p8weugyQo4A-X7k,1743
|
|
@@ -869,12 +869,12 @@ wagtail/admin/tests/test_views.py,sha256=1i8N2Ao6rIbCY9wRXqNQzfSsAojnFxJ1TtI7JYf
|
|
|
869
869
|
wagtail/admin/tests/test_views_generic.py,sha256=FQJLz9aD7OtToCCwtlYs-Bu_0BxSM99R-jGE4ZPnfAM,2934
|
|
870
870
|
wagtail/admin/tests/test_whats_new.py,sha256=Vptrf94ilJephOP3O7s1FKLtjNxFLCne6Bi4c_VlJzw,5570
|
|
871
871
|
wagtail/admin/tests/test_widgets.py,sha256=3NIcu5Ktx6i5kAn8kSdW3HBg-SSVi8BspR-THj8aQ0Y,24656
|
|
872
|
-
wagtail/admin/tests/test_workflows.py,sha256=
|
|
872
|
+
wagtail/admin/tests/test_workflows.py,sha256=f2zd-Baa0ZW3zA-WztgKTAGLkwksUlAQRdA6osnWmdU,145781
|
|
873
873
|
wagtail/admin/tests/tests.py,sha256=GveGPLq49kvtr6J6Qz1-Cv1YHgjPxGk_amOgTeNslaU,22323
|
|
874
874
|
wagtail/admin/tests/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
875
875
|
wagtail/admin/tests/api/test_documents.py,sha256=2dfjTi6Bj3otRQ-ok9f3rwl-HpSmprfcmhWyYPDnXcs,5051
|
|
876
876
|
wagtail/admin/tests/api/test_images.py,sha256=JTVOPWDeI5y1dZfuL1wS_kXuNC2q45QoMpflSTtvreI,9304
|
|
877
|
-
wagtail/admin/tests/api/test_pages.py,sha256=
|
|
877
|
+
wagtail/admin/tests/api/test_pages.py,sha256=30_NuekkimRUJX0Lr6eekP-9Wf69-R_YkKiMt59lpms,71794
|
|
878
878
|
wagtail/admin/tests/api/utils.py,sha256=VW2E7P-Yq-n6rsgvRhwXk3Tuyic8uVIx6xcFZV5yoN4,236
|
|
879
879
|
wagtail/admin/tests/pages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
880
880
|
wagtail/admin/tests/pages/test_content_type_use_view.py,sha256=4ekBbMbIjpvEW7cmXuy2bP2tmI3rUNk1sx6cL7A_EW4,1336
|
|
@@ -908,7 +908,7 @@ wagtail/admin/tests/ui/test_tables.py,sha256=LSZu_E8pD7l4yJz4YjJlZ0vdk1edkHdHejV
|
|
|
908
908
|
wagtail/admin/tests/viewsets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
909
909
|
wagtail/admin/tests/viewsets/test_base_viewset.py,sha256=_6DhpxiinfXr-wjQfh0tcL1skZi1KXVlZLJpxCwazog,1537
|
|
910
910
|
wagtail/admin/tests/viewsets/test_chooser_viewset.py,sha256=fIoBQ3u_J-ZhWvpATq7BLEzCet7_hOl383xGIgFtf7E,2039
|
|
911
|
-
wagtail/admin/tests/viewsets/test_model_viewset.py,sha256=
|
|
911
|
+
wagtail/admin/tests/viewsets/test_model_viewset.py,sha256=xK11mvtyCD7DU9bNzVkIHuC2m1Pn5pAoKbKyWTGhMTI,50082
|
|
912
912
|
wagtail/admin/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
913
913
|
wagtail/admin/ui/components.py,sha256=He-K0puoWcxgH_vyXfO2OoO9iSo-pCTM-aVBqYHSrFs,1074
|
|
914
914
|
wagtail/admin/ui/fields.py,sha256=QQBV9L8w6L5w8E6DG8LKqrlIzz1K5leFSxfM67v6L1Q,1377
|
|
@@ -940,14 +940,14 @@ wagtail/admin/views/bulk_action/registry.py,sha256=e9-rN9TdHUmRwDfTeauvPUjE6p3ip
|
|
|
940
940
|
wagtail/admin/views/generic/__init__.py,sha256=_FnNGhm9fVAblGcipJ0DLyqKZ3syQYG3v4OZK6qOR-4,650
|
|
941
941
|
wagtail/admin/views/generic/base.py,sha256=xm3Z2jnHkTWMWdZKlZ68yjeaIfcTwTPYndI7-uhfAV4,7056
|
|
942
942
|
wagtail/admin/views/generic/chooser.py,sha256=pjOYGcYBHc1ZkZJ4LWcHkoGNQ7U7GdKBsJZ0vyOO4kc,18061
|
|
943
|
-
wagtail/admin/views/generic/history.py,sha256=
|
|
943
|
+
wagtail/admin/views/generic/history.py,sha256=1agfpkggAJb6-2P0tFj0CVphtZ8fynlcHSwLF_NlQ08,10269
|
|
944
944
|
wagtail/admin/views/generic/lock.py,sha256=dvZ613n3itNAhO3zdQzGRewm2kH-dyemx-LSuUC2AHM,1435
|
|
945
945
|
wagtail/admin/views/generic/mixins.py,sha256=Gxt02gof4SRdEGtUkWBygiDK01OsmhL-7nZK00fAbAI,28123
|
|
946
946
|
wagtail/admin/views/generic/models.py,sha256=XthJ6TaXDXvlxWCRMmNXGAGBwlqGfdW60TzmH9h0sJ4,50194
|
|
947
947
|
wagtail/admin/views/generic/multiple_upload.py,sha256=rgf3uXZShyZ_2rnidfk_tnU4YhHcXyPwrIKMKWIk78s,13031
|
|
948
948
|
wagtail/admin/views/generic/permissions.py,sha256=yOZFjz9pteBTnI2KayW-lYOu4mCl-kDDGjN029AptzA,1477
|
|
949
949
|
wagtail/admin/views/generic/preview.py,sha256=9tvUJoz55b0bKY4vvfqnDMNke3TTeSPaEamvrICYR9Q,5655
|
|
950
|
-
wagtail/admin/views/generic/usage.py,sha256=
|
|
950
|
+
wagtail/admin/views/generic/usage.py,sha256=CVdvz47WOr9xfYu5RaZltUPJII5VyG5eMLkQtDQ1S8U,4531
|
|
951
951
|
wagtail/admin/views/generic/workflow.py,sha256=u8mv-rdFeO0UmDaWVzzwtlXRaTZ_ZQzTEl1dwMtW-r8,9429
|
|
952
952
|
wagtail/admin/views/pages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
953
953
|
wagtail/admin/views/pages/convert_alias.py,sha256=hWKn1Uc2w4Z5ciq_ncsznRihiRXLFOgC2mNNFUgI7bM,1858
|
|
@@ -979,7 +979,7 @@ wagtail/admin/views/reports/aging_pages.py,sha256=AgdoEXa5Y8Gvfv6DpCiZV-A6YSF5Vk
|
|
|
979
979
|
wagtail/admin/views/reports/audit_logging.py,sha256=YAcNFGgVhUTp-XX0QZ8vuTKdiI3TLpMctdOAra3f0mY,8350
|
|
980
980
|
wagtail/admin/views/reports/base.py,sha256=ePpmLbRS5wsH3Z_02sC8x97S3p1uoWlIOffBtrw2f1E,1581
|
|
981
981
|
wagtail/admin/views/reports/locked_pages.py,sha256=9CVqHRYODp3Y3gw1IE4Q4M6iizmgXZCzQcD7o-5FtcQ,2206
|
|
982
|
-
wagtail/admin/views/reports/workflows.py,sha256=
|
|
982
|
+
wagtail/admin/views/reports/workflows.py,sha256=25KeVcZvApN4Xhah-fpLdObeFg3M6eHYl9lZSqM7WCQ,8899
|
|
983
983
|
wagtail/admin/viewsets/__init__.py,sha256=k_ZRVEmUEHmj7mVPJSTfJGDlsauTLX6loPPN0aD2v14,1476
|
|
984
984
|
wagtail/admin/viewsets/base.py,sha256=BNEM5XeX7TPetydJ7Dhh3qFRCDrCt8HlgN6e8JE_ws8,4998
|
|
985
985
|
wagtail/admin/viewsets/chooser.py,sha256=t9fzFyilR_5kYfTls4s9N-WYuwwniLZOlvkZ0-R0McQ,9356
|
|
@@ -3176,7 +3176,7 @@ wagtail/search/signal_handlers.py,sha256=Md4dhmwLF7kX7YLG-MsqTLQ6NdfkFIavBJ9n5Os
|
|
|
3176
3176
|
wagtail/search/utils.py,sha256=PnF65FM5Udc7mZ8J2oBMJ15T6vYGL0N69awp_RgEDmc,6210
|
|
3177
3177
|
wagtail/search/backends/__init__.py,sha256=nJEc435WnprL13v7OwcUCyHz0CTXMCMar9xTRqn1rH8,3455
|
|
3178
3178
|
wagtail/search/backends/base.py,sha256=M7lyovOz2Wau_UwjyEk7AYeQOLt6Q3Lm2hUHDUoEVNg,16806
|
|
3179
|
-
wagtail/search/backends/elasticsearch5.py,sha256=
|
|
3179
|
+
wagtail/search/backends/elasticsearch5.py,sha256=lfhUvXUafpmnw0kqdZVr9LBSUMjUuehMkixzj6rYYls,39018
|
|
3180
3180
|
wagtail/search/backends/elasticsearch6.py,sha256=L9B3rh1T9q5rFjtWh8CRgntSmoMbv5CVGTGEQIJmRpM,9048
|
|
3181
3181
|
wagtail/search/backends/elasticsearch7.py,sha256=hpjj_SA5yjTs2lrjTguI1o1XVepXqgO-1_XWwhLiiUk,4864
|
|
3182
3182
|
wagtail/search/backends/elasticsearch8.py,sha256=n3y05d_atzbnkaM4F1BXp3OhayE-J6uzfggYBdw2rBo,3750
|
|
@@ -3309,7 +3309,7 @@ wagtail/search/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
3309
3309
|
wagtail/search/tests/elasticsearch_common_tests.py,sha256=aifEijThsfzK7NYwbvjVdr36fW_ckXMesHtX-tDwPpw,7817
|
|
3310
3310
|
wagtail/search/tests/test_backends.py,sha256=DBOFXu2W6hAtH-KHnOjn7IBXWHfOWkJJW2Ery7eKzSs,40719
|
|
3311
3311
|
wagtail/search/tests/test_db_backend.py,sha256=X_x2yDApntvCRq4pL9UM1Q-DRY5WFCR_aaSnCbkcf4s,2031
|
|
3312
|
-
wagtail/search/tests/test_elasticsearch5_backend.py,sha256=
|
|
3312
|
+
wagtail/search/tests/test_elasticsearch5_backend.py,sha256=rObmzJmZ4-iM7UXUterLfCoT7rIYIGVUGNEUmB1EaME,43702
|
|
3313
3313
|
wagtail/search/tests/test_elasticsearch6_backend.py,sha256=M1QmKDJrTQulbsiEX0AFQDyihoieusZ0UVW17rNDoeo,47213
|
|
3314
3314
|
wagtail/search/tests/test_elasticsearch7_backend.py,sha256=NxjMGh1vUjgmaLn6MqULX-FA4OlGOZ7VvOslOnW_JKs,46344
|
|
3315
3315
|
wagtail/search/tests/test_elasticsearch8_backend.py,sha256=3EKGnVO8ldl8em5rE0xG4b_BXVFvh7QGk719FSXGbzE,482
|
|
@@ -4070,9 +4070,9 @@ wagtail/utils/urlpatterns.py,sha256=RDhVScxdm-RV4HSMjWElyrbEoTPsXu841_SKMgoFKtY,
|
|
|
4070
4070
|
wagtail/utils/utils.py,sha256=UALGn0KOyqi5ZoXOozWX99ZPUsVZP51ET8d7sZ1jlm0,430
|
|
4071
4071
|
wagtail/utils/version.py,sha256=40WGMIy8nSPQJFF01p7c38L444SexH2Cb-bQmR8ztXg,1478
|
|
4072
4072
|
wagtail/utils/widgets.py,sha256=oTpTMcmQ0Y4MugbSKp_Uigl97ftWdHvMfvhrrLyVmBs,1529
|
|
4073
|
-
wagtail-5.2.
|
|
4074
|
-
wagtail-5.2.
|
|
4075
|
-
wagtail-5.2.
|
|
4076
|
-
wagtail-5.2.
|
|
4077
|
-
wagtail-5.2.
|
|
4078
|
-
wagtail-5.2.
|
|
4073
|
+
wagtail-5.2.4.dist-info/LICENSE,sha256=0aiL7_RJ2YkOjscmRI7opwmuURrY6h8MR0B24nrdRQU,1512
|
|
4074
|
+
wagtail-5.2.4.dist-info/METADATA,sha256=1XqOblIzPCZys_AyynwCkFYDcXIxpkcicWerrBMJMB4,3855
|
|
4075
|
+
wagtail-5.2.4.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
|
4076
|
+
wagtail-5.2.4.dist-info/entry_points.txt,sha256=R14Z0xKoufNcDaku0EWDKM-K8J4ap0EImO8C-df8HVM,53
|
|
4077
|
+
wagtail-5.2.4.dist-info/top_level.txt,sha256=zcKgvuRTi0gSgVzJ1qMoERCwhQ_i0n9bkyxza3oh9as,8
|
|
4078
|
+
wagtail-5.2.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|