wagtail 6.4.1__py3-none-any.whl → 7.0__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/actions/copy_page.py +4 -4
- wagtail/admin/action_menu.py +3 -0
- wagtail/admin/active_filters.py +218 -0
- wagtail/admin/auth.py +3 -39
- wagtail/admin/forms/choosers.py +8 -7
- wagtail/admin/forms/models.py +46 -1
- wagtail/admin/forms/pages.py +9 -0
- wagtail/admin/locale/ar/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/ar/LC_MESSAGES/django.po +30 -12
- wagtail/admin/locale/ar/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/ar/LC_MESSAGES/djangojs.po +5 -1
- wagtail/admin/locale/az_AZ/LC_MESSAGES/django.po +1 -1
- wagtail/admin/locale/be/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/be/LC_MESSAGES/django.po +27 -13
- wagtail/admin/locale/be/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/be/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/bg/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/bg/LC_MESSAGES/django.po +3 -3
- wagtail/admin/locale/bn/LC_MESSAGES/django.po +1 -1
- wagtail/admin/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/ca/LC_MESSAGES/django.po +76 -22
- wagtail/admin/locale/ca/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/ca/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/cs/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/cs/LC_MESSAGES/django.po +30 -19
- wagtail/admin/locale/cs/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/cs/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/cy/LC_MESSAGES/django.po +1 -1
- wagtail/admin/locale/cy/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/cy/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/da/LC_MESSAGES/django.po +4 -4
- wagtail/admin/locale/de/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/de/LC_MESSAGES/django.po +79 -24
- wagtail/admin/locale/de/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/de/LC_MESSAGES/djangojs.po +5 -1
- wagtail/admin/locale/dv/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/dv/LC_MESSAGES/django.po +7 -18
- wagtail/admin/locale/dv/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/dv/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/el/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/el/LC_MESSAGES/django.po +9 -8
- wagtail/admin/locale/el/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/el/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/en/LC_MESSAGES/django.po +386 -319
- wagtail/admin/locale/en/LC_MESSAGES/djangojs.po +11 -7
- wagtail/admin/locale/es/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/es/LC_MESSAGES/django.po +32 -22
- wagtail/admin/locale/es/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/es/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/es_419/LC_MESSAGES/django.po +2 -1
- wagtail/admin/locale/es_VE/LC_MESSAGES/django.po +2 -1
- wagtail/admin/locale/et/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/et/LC_MESSAGES/django.po +30 -19
- wagtail/admin/locale/et/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/et/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/eu/LC_MESSAGES/django.po +1 -1
- wagtail/admin/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/fa/LC_MESSAGES/django.po +10 -9
- wagtail/admin/locale/fa/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/fa/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/fi/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/fi/LC_MESSAGES/django.po +30 -21
- wagtail/admin/locale/fi/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/fi/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/fr/LC_MESSAGES/django.po +80 -24
- wagtail/admin/locale/fr/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/fr/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/gl/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/gl/LC_MESSAGES/django.po +75 -22
- wagtail/admin/locale/gl/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/gl/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/he_IL/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/he_IL/LC_MESSAGES/django.po +5 -5
- wagtail/admin/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/hr_HR/LC_MESSAGES/django.po +30 -19
- wagtail/admin/locale/hr_HR/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/hr_HR/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/ht/LC_MESSAGES/django.po +1 -1
- wagtail/admin/locale/hu/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/hu/LC_MESSAGES/django.po +350 -25
- wagtail/admin/locale/hu/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/hu/LC_MESSAGES/djangojs.po +8 -0
- wagtail/admin/locale/id_ID/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/id_ID/LC_MESSAGES/django.po +11 -11
- wagtail/admin/locale/is_IS/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/is_IS/LC_MESSAGES/django.po +30 -29
- wagtail/admin/locale/is_IS/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/is_IS/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/it/LC_MESSAGES/django.po +30 -29
- wagtail/admin/locale/it/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/it/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/ja/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/ja/LC_MESSAGES/django.po +14 -15
- wagtail/admin/locale/ja/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/ja/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/ka/LC_MESSAGES/django.po +1 -1
- wagtail/admin/locale/ko/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/ko/LC_MESSAGES/django.po +92 -19
- wagtail/admin/locale/ko/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/ko/LC_MESSAGES/djangojs.po +16 -0
- wagtail/admin/locale/lt/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/lt/LC_MESSAGES/django.po +30 -15
- wagtail/admin/locale/lt/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/lt/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/lv/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/lv/LC_MESSAGES/django.po +10 -9
- wagtail/admin/locale/lv/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/lv/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/mi/LC_MESSAGES/django.po +1 -1
- wagtail/admin/locale/mi/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/mi/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/mn/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/mn/LC_MESSAGES/django.po +12 -11
- wagtail/admin/locale/my/LC_MESSAGES/django.po +1 -1
- wagtail/admin/locale/nb/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/nb/LC_MESSAGES/django.po +31 -15
- wagtail/admin/locale/nb/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/nb/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/nl/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/nl/LC_MESSAGES/django.po +47 -25
- wagtail/admin/locale/nl/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/nl/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/pl/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/pl/LC_MESSAGES/django.po +30 -22
- wagtail/admin/locale/pl/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/pl/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/pt_BR/LC_MESSAGES/django.po +33 -28
- wagtail/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/pt_BR/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/pt_PT/LC_MESSAGES/django.po +31 -18
- wagtail/admin/locale/pt_PT/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/pt_PT/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/ro/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/ro/LC_MESSAGES/django.po +30 -28
- wagtail/admin/locale/ro/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/ro/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/ru/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/ru/LC_MESSAGES/django.po +34 -29
- wagtail/admin/locale/ru/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/ru/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/sk_SK/LC_MESSAGES/django.po +6 -6
- wagtail/admin/locale/sk_SK/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/sk_SK/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/sl/LC_MESSAGES/django.po +31 -27
- wagtail/admin/locale/sl/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/sl/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/sv/LC_MESSAGES/django.po +30 -18
- wagtail/admin/locale/sv/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/sv/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/tet/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/tet/LC_MESSAGES/django.po +5 -5
- wagtail/admin/locale/tet/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/tet/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/th/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/th/LC_MESSAGES/django.po +10 -17
- wagtail/admin/locale/tr/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/tr/LC_MESSAGES/django.po +28 -13
- wagtail/admin/locale/tr/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/tr/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/tr_TR/LC_MESSAGES/django.po +28 -13
- wagtail/admin/locale/tr_TR/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/tr_TR/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/ug/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/ug/LC_MESSAGES/django.po +12 -29
- wagtail/admin/locale/ug/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/ug/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/locale/uk/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/uk/LC_MESSAGES/django.po +30 -26
- wagtail/admin/locale/uk/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/uk/LC_MESSAGES/djangojs.po +6 -3
- wagtail/admin/locale/vi/LC_MESSAGES/django.po +2 -1
- wagtail/admin/locale/zh/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/zh/LC_MESSAGES/django.po +2 -2
- wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.po +33 -18
- wagtail/admin/locale/zh_Hans/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/zh_Hans/LC_MESSAGES/djangojs.po +5 -2
- wagtail/admin/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/zh_Hant/LC_MESSAGES/django.po +11 -14
- wagtail/admin/locale/zh_Hant/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/zh_Hant/LC_MESSAGES/djangojs.po +3 -0
- wagtail/admin/localization.py +42 -1
- wagtail/admin/menu.py +1 -10
- wagtail/admin/paginator.py +95 -0
- wagtail/admin/panels/field_panel.py +27 -6
- wagtail/admin/panels/inline_panel.py +28 -11
- wagtail/admin/panels/multiple_chooser_panel.py +3 -3
- wagtail/admin/rich_text/converters/html_to_contentstate.py +6 -6
- wagtail/admin/search.py +1 -10
- wagtail/admin/static/wagtailadmin/css/core.css +1 -1
- wagtail/admin/static/wagtailadmin/css/panels/draftail.css +1 -1
- wagtail/admin/static/wagtailadmin/js/bulk-actions.js +1 -1
- wagtail/admin/static/wagtailadmin/js/comments.js +1 -1
- wagtail/admin/static/wagtailadmin/js/core.js +1 -1
- wagtail/admin/static/wagtailadmin/js/draftail.js +1 -1
- wagtail/admin/static/wagtailadmin/js/sidebar.js +1 -1
- wagtail/admin/static/wagtailadmin/js/telepath/blocks.js +1 -1
- wagtail/admin/static/wagtailadmin/js/telepath/widgets.js +1 -1
- wagtail/admin/static/wagtailadmin/js/vendor.js +1 -1
- wagtail/admin/static/wagtailadmin/js/vendor.js.LICENSE.txt +32 -11
- wagtail/admin/static/wagtailadmin/js/workflow-action.js +1 -1
- wagtail/admin/templates/wagtailadmin/admin_base.html +1 -0
- wagtail/admin/templates/wagtailadmin/generic/index.html +7 -2
- wagtail/admin/templates/wagtailadmin/pages/_editor_js.html +2 -3
- wagtail/admin/templates/wagtailadmin/pages/action_menu/publish.html +2 -2
- wagtail/admin/templates/wagtailadmin/pages/bulk_actions/confirm_bulk_move.html +0 -1
- wagtail/admin/templates/wagtailadmin/pages/move_choose_destination.html +0 -1
- wagtail/admin/templates/wagtailadmin/panels/publishing/schedule_publishing_panel.html +1 -1
- wagtail/admin/templates/wagtailadmin/shared/active_filters.html +8 -1
- wagtail/admin/templates/wagtailadmin/shared/pagination_nav.html +25 -13
- wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/privacy.html +1 -2
- wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/workflow.html +1 -1
- wagtail/admin/templates/wagtailadmin/skeleton.html +2 -1
- wagtail/admin/templates/wagtailadmin/tables/locale_cell.html +4 -0
- wagtail/admin/templates/wagtailadmin/userbar/base.html +10 -8
- wagtail/admin/templatetags/wagtailadmin_tags.py +57 -132
- wagtail/admin/tests/pages/test_bulk_actions/test_bulk_move.py +31 -0
- wagtail/admin/tests/pages/test_create_page.py +627 -0
- wagtail/admin/tests/pages/test_edit_page.py +102 -18
- wagtail/admin/tests/pages/test_explorer_view.py +55 -26
- wagtail/admin/tests/pages/test_page_search.py +10 -0
- wagtail/admin/tests/pages/test_page_usage.py +2 -1
- wagtail/admin/tests/pages/test_preview.py +176 -36
- wagtail/admin/tests/pages/test_revisions.py +4 -7
- wagtail/admin/tests/test_account_management.py +1 -1
- wagtail/admin/tests/test_admin_search.py +1 -0
- wagtail/admin/tests/test_buttons_hooks.py +9 -145
- wagtail/admin/tests/test_collections_views.py +60 -0
- wagtail/admin/tests/test_contentstate.py +1 -1
- wagtail/admin/tests/test_dashboard.py +25 -0
- wagtail/admin/tests/test_edit_handlers.py +64 -0
- wagtail/admin/tests/test_forms.py +38 -0
- wagtail/admin/tests/test_keyboard_shortcuts.py +141 -5
- wagtail/admin/tests/test_page_chooser.py +2 -2
- wagtail/admin/tests/test_paginator.py +86 -0
- wagtail/admin/tests/test_privacy.py +12 -1
- wagtail/admin/tests/test_reports_views.py +8 -43
- wagtail/admin/tests/test_rich_text.py +14 -0
- wagtail/admin/tests/test_templatetags.py +50 -36
- wagtail/admin/tests/test_userbar.py +79 -15
- wagtail/admin/tests/test_views.py +16 -1
- wagtail/admin/tests/test_widgets.py +47 -8
- wagtail/admin/tests/test_workflows.py +119 -6
- wagtail/admin/tests/tests.py +16 -15
- wagtail/admin/tests/ui/test_sidebar.py +0 -27
- wagtail/admin/tests/viewsets/test_chooser_viewset.py +38 -4
- wagtail/admin/tests/viewsets/test_model_viewset.py +1 -37
- wagtail/admin/ui/side_panels.py +14 -16
- wagtail/admin/ui/sidebar.py +5 -37
- wagtail/admin/ui/tables/__init__.py +34 -2
- wagtail/admin/ui/tables/pages.py +9 -0
- wagtail/admin/urls/__init__.py +2 -2
- wagtail/admin/urls/pages.py +3 -1
- wagtail/admin/userbar.py +3 -5
- wagtail/admin/utils.py +43 -4
- wagtail/admin/views/generic/base.py +16 -115
- wagtail/admin/views/generic/chooser.py +25 -8
- wagtail/admin/views/generic/mixins.py +45 -11
- wagtail/admin/views/generic/models.py +15 -30
- wagtail/admin/views/generic/preview.py +9 -3
- wagtail/admin/views/generic/workflow.py +11 -1
- wagtail/admin/views/i18n.py +14 -0
- wagtail/admin/views/pages/bulk_actions/move.py +1 -1
- wagtail/admin/views/pages/create.py +68 -6
- wagtail/admin/views/pages/edit.py +33 -14
- wagtail/admin/views/pages/listing.py +3 -2
- wagtail/admin/views/pages/move.py +43 -29
- wagtail/admin/views/pages/preview.py +15 -2
- wagtail/admin/views/pages/search.py +3 -0
- wagtail/admin/views/reports/base.py +0 -22
- wagtail/admin/views/reports/page_types_usage.py +2 -1
- wagtail/admin/views/tags.py +3 -1
- wagtail/admin/views/workflows.py +0 -3
- wagtail/admin/viewsets/model.py +5 -48
- wagtail/admin/wagtail_hooks.py +16 -17
- wagtail/admin/widgets/button.py +3 -33
- wagtail/admin/widgets/tags.py +31 -3
- wagtail/api/v2/views.py +4 -4
- wagtail/blocks/base.py +18 -15
- wagtail/blocks/field_block.py +2 -1
- wagtail/blocks/stream_block.py +15 -11
- wagtail/compat.py +17 -1
- wagtail/contrib/forms/forms.py +64 -31
- wagtail/contrib/forms/locale/af/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/ar/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/ar/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/locale/az_AZ/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/be/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/be/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/locale/bg/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/bn/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/ca/LC_MESSAGES/django.po +15 -6
- wagtail/contrib/forms/locale/cs/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/cs/LC_MESSAGES/django.po +2 -9
- wagtail/contrib/forms/locale/cy/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/cy/LC_MESSAGES/django.po +2 -7
- wagtail/contrib/forms/locale/da/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/de/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/de/LC_MESSAGES/django.po +3 -10
- wagtail/contrib/forms/locale/dv/LC_MESSAGES/django.po +2 -1
- wagtail/contrib/forms/locale/el/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/el/LC_MESSAGES/django.po +1 -9
- wagtail/contrib/forms/locale/en/LC_MESSAGES/django.po +13 -6
- wagtail/contrib/forms/locale/es/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/es/LC_MESSAGES/django.po +1 -9
- wagtail/contrib/forms/locale/es_419/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/et/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/et/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/locale/eu/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/fa/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/locale/fi/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/fi/LC_MESSAGES/django.po +1 -9
- wagtail/contrib/forms/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/fr/LC_MESSAGES/django.po +8 -6
- wagtail/contrib/forms/locale/gl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/gl/LC_MESSAGES/django.po +17 -6
- wagtail/contrib/forms/locale/he_IL/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/hr_HR/LC_MESSAGES/django.po +1 -9
- wagtail/contrib/forms/locale/ht/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/hu/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/hu/LC_MESSAGES/django.po +1 -9
- wagtail/contrib/forms/locale/hy/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/id_ID/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/id_ID/LC_MESSAGES/django.po +1 -9
- wagtail/contrib/forms/locale/is_IS/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/is_IS/LC_MESSAGES/django.po +1 -9
- wagtail/contrib/forms/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/it/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/locale/ja/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/ja/LC_MESSAGES/django.po +1 -9
- wagtail/contrib/forms/locale/ka/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/ko/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/ko/LC_MESSAGES/django.po +1 -9
- wagtail/contrib/forms/locale/lt/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/lt/LC_MESSAGES/django.po +1 -8
- wagtail/contrib/forms/locale/lv/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/mi/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/mn/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/mn/LC_MESSAGES/django.po +3 -2
- wagtail/contrib/forms/locale/my/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/my/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/locale/nb/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/nb/LC_MESSAGES/django.po +1 -8
- wagtail/contrib/forms/locale/nl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/nl/LC_MESSAGES/django.po +2 -10
- wagtail/contrib/forms/locale/pl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/pl/LC_MESSAGES/django.po +2 -8
- wagtail/contrib/forms/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/pt_BR/LC_MESSAGES/django.po +2 -8
- wagtail/contrib/forms/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/pt_PT/LC_MESSAGES/django.po +1 -8
- wagtail/contrib/forms/locale/ro/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/ro/LC_MESSAGES/django.po +2 -8
- wagtail/contrib/forms/locale/ru/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/ru/LC_MESSAGES/django.po +2 -7
- wagtail/contrib/forms/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/sk_SK/LC_MESSAGES/django.po +1 -8
- wagtail/contrib/forms/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/sl/LC_MESSAGES/django.po +2 -8
- wagtail/contrib/forms/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/sv/LC_MESSAGES/django.po +1 -9
- wagtail/contrib/forms/locale/tet/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/tet/LC_MESSAGES/django.po +1 -9
- wagtail/contrib/forms/locale/th/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/th/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/locale/tr/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/tr/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/tr_TR/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/locale/ug/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/ug/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/locale/uk/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/uk/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/locale/vi/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/zh/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/zh_Hans/LC_MESSAGES/django.po +2 -8
- wagtail/contrib/forms/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/zh_Hant/LC_MESSAGES/django.po +1 -7
- wagtail/contrib/forms/tests/test_forms.py +62 -0
- wagtail/contrib/forms/tests/test_views.py +161 -5
- wagtail/contrib/frontend_cache/backends/cloudfront.py +1 -29
- wagtail/contrib/frontend_cache/tests.py +112 -52
- wagtail/contrib/frontend_cache/utils.py +109 -17
- wagtail/contrib/redirects/forms.py +3 -2
- wagtail/contrib/redirects/locale/ar/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/be/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/bg/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/bn/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/ca/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/redirects/locale/cs/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/cy/LC_MESSAGES/django.po +2 -1
- wagtail/contrib/redirects/locale/da/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/de/LC_MESSAGES/django.po +2 -1
- wagtail/contrib/redirects/locale/dv/LC_MESSAGES/django.po +2 -1
- wagtail/contrib/redirects/locale/el/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/en/LC_MESSAGES/django.po +8 -8
- wagtail/contrib/redirects/locale/en_IN/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/es/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/es_419/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/es_VE/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/et/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/eu/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/fa/LC_MESSAGES/django.po +3 -2
- wagtail/contrib/redirects/locale/fi/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/fi/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/redirects/locale/fr/LC_MESSAGES/django.po +3 -1
- wagtail/contrib/redirects/locale/gl/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/he_IL/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/hi/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/hr_HR/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/ht/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/hu/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/hy/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/id_ID/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/is_IS/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/it/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/ja/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/ka/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/ko/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/ko/LC_MESSAGES/django.po +18 -2
- wagtail/contrib/redirects/locale/lt/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/lv/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/mi/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/mn/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/my/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/nb/LC_MESSAGES/django.po +2 -1
- wagtail/contrib/redirects/locale/nl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/nl/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/redirects/locale/pl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/pl/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po +3 -2
- wagtail/contrib/redirects/locale/pt_PT/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/ro/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/ro/LC_MESSAGES/django.po +3 -2
- wagtail/contrib/redirects/locale/ru/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/ru/LC_MESSAGES/django.po +3 -2
- wagtail/contrib/redirects/locale/sk_SK/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/redirects/locale/sr/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/sv/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/redirects/locale/ta/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/tet/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/th/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/tr/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/tr_TR/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/ug/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/uk/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/uk/LC_MESSAGES/django.po +3 -2
- wagtail/contrib/redirects/locale/vi/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/zh/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/redirects/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/redirects/tmp_storages.py +1 -0
- wagtail/contrib/routable_page/tests.py +3 -3
- wagtail/contrib/search_promotions/forms.py +3 -2
- wagtail/contrib/search_promotions/locale/af/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/search_promotions/locale/ar/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/ar/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/az_AZ/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/search_promotions/locale/be/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/be/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/bg/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/bg/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/bn/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/search_promotions/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/ca/LC_MESSAGES/django.po +3 -6
- wagtail/contrib/search_promotions/locale/cs/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/cs/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/cy/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/cy/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/da/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/search_promotions/locale/de/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/de/LC_MESSAGES/django.po +3 -6
- wagtail/contrib/search_promotions/locale/dv/LC_MESSAGES/django.po +2 -1
- wagtail/contrib/search_promotions/locale/el/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/el/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/en/LC_MESSAGES/django.po +19 -23
- wagtail/contrib/search_promotions/locale/es/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/es/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/es_419/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/search_promotions/locale/et/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/et/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/eu/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/search_promotions/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/fa/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/fi/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/fi/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.po +3 -6
- wagtail/contrib/search_promotions/locale/gl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/gl/LC_MESSAGES/django.po +3 -6
- wagtail/contrib/search_promotions/locale/he_IL/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/search_promotions/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/hr_HR/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/ht/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/ht/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/hu/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/hu/LC_MESSAGES/django.po +11 -5
- wagtail/contrib/search_promotions/locale/id_ID/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/id_ID/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/is_IS/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/is_IS/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/ja/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/ja/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/ka/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/search_promotions/locale/ko/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/ko/LC_MESSAGES/django.po +5 -4
- wagtail/contrib/search_promotions/locale/lt/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/lt/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/lv/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/lv/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/mi/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/mi/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/mn/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/mn/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/my/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/my/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/nb/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/nb/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/nl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/nl/LC_MESSAGES/django.po +3 -6
- wagtail/contrib/search_promotions/locale/pl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/pl/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/pt_BR/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/pt_PT/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/ro/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/ro/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/ru/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/ru/LC_MESSAGES/django.po +3 -6
- wagtail/contrib/search_promotions/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/sk_SK/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/sl/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/sv/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/tet/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/tet/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/th/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/th/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/tr/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/tr/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/tr_TR/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/ug/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/ug/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/uk/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/uk/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/vi/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/vi/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/zh/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/zh/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/zh_Hans/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/locale/zh_Hant/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/zh_Hant/LC_MESSAGES/django.po +1 -4
- wagtail/contrib/search_promotions/models.py +1 -7
- wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/queries/chooser/results.html +1 -1
- wagtail/contrib/search_promotions/tests.py +4 -5
- wagtail/contrib/search_promotions/views/settings.py +1 -2
- wagtail/contrib/settings/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/settings/registry.py +1 -11
- wagtail/contrib/simple_translation/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/simple_translation/locale/hu/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/simple_translation/locale/hu/LC_MESSAGES/django.po +5 -2
- wagtail/contrib/styleguide/locale/af/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/ar/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/az_AZ/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/be/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/styleguide/locale/be/LC_MESSAGES/django.po +3 -2
- wagtail/contrib/styleguide/locale/bg/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/bn/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/ca/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/cs/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/cy/LC_MESSAGES/django.po +2 -1
- wagtail/contrib/styleguide/locale/da/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/de/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/dv/LC_MESSAGES/django.po +2 -1
- wagtail/contrib/styleguide/locale/el/LC_MESSAGES/django.po +2 -1
- wagtail/contrib/styleguide/locale/en/LC_MESSAGES/django.po +7 -7
- wagtail/contrib/styleguide/locale/en_IN/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/es/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/es_419/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/es_VE/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/et/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/fa/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/fi/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/fr/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/gl/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/he_IL/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/hi/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/hr_HR/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/ht/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/hu/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/id_ID/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/is_IS/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/it/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/ja/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/ka/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/ko/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/lt/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/lv/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/mi/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/mn/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/my/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/nb/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/nl/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/pl/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/pt_BR/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/pt_PT/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/ro/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/ru/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/styleguide/locale/sl/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/sv/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/ta/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/tet/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/th/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/tr/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/tr_TR/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/ug/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/uk/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/vi/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/zh/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/styleguide/views.py +2 -1
- wagtail/contrib/table_block/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/blocks.py +5 -0
- wagtail/contrib/typed_table_block/locale/ar/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/be/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/ca/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/cy/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/de/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/dv/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/el/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/en/LC_MESSAGES/django.po +10 -10
- wagtail/contrib/typed_table_block/locale/es/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/fa/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/fi/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/fr/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/gl/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/hu/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/is_IS/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/it/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/ko/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/lt/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/nl/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/pl/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/pt_BR/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/pt_PT/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/ro/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/ru/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/sl/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/sv/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/th/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/ug/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/uk/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/zh/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/tests.py +27 -0
- wagtail/coreutils.py +0 -19
- wagtail/documents/locale/af/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/ar/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/ar/LC_MESSAGES/django.po +3 -2
- wagtail/documents/locale/az_AZ/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/be/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/bg/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/bn/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/ca/LC_MESSAGES/django.po +2 -2
- wagtail/documents/locale/cs/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/cy/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/da/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/de/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/de/LC_MESSAGES/django.po +3 -3
- wagtail/documents/locale/dv/LC_MESSAGES/django.po +2 -1
- wagtail/documents/locale/el/LC_MESSAGES/django.po +2 -1
- wagtail/documents/locale/en/LC_MESSAGES/django.po +4 -4
- wagtail/documents/locale/es/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/es/LC_MESSAGES/django.po +3 -2
- wagtail/documents/locale/es_419/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/et/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/eu/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/fa/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/fi/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/fi/LC_MESSAGES/django.po +2 -2
- wagtail/documents/locale/fr/LC_MESSAGES/django.po +2 -1
- wagtail/documents/locale/gl/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/he_IL/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/hr_HR/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/ht/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/hu/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/hu/LC_MESSAGES/django.po +18 -3
- wagtail/documents/locale/id_ID/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/is_IS/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/it/LC_MESSAGES/django.po +2 -2
- wagtail/documents/locale/ja/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/ka/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/ko/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/ko/LC_MESSAGES/django.po +14 -2
- wagtail/documents/locale/lt/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/lv/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/mi/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/mn/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/my/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/nb/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/nb/LC_MESSAGES/django.po +3 -2
- wagtail/documents/locale/nl/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/nl/LC_MESSAGES/django.po +2 -2
- wagtail/documents/locale/pl/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/pl/LC_MESSAGES/django.po +2 -2
- wagtail/documents/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/pt_BR/LC_MESSAGES/django.po +2 -2
- wagtail/documents/locale/pt_PT/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/ro/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/ro/LC_MESSAGES/django.po +2 -2
- wagtail/documents/locale/ru/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/ru/LC_MESSAGES/django.po +5 -2
- wagtail/documents/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/sk_SK/LC_MESSAGES/django.po +2 -2
- wagtail/documents/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/documents/locale/sv/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/tet/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/th/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/tr/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/tr_TR/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/ug/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/uk/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/vi/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/zh/LC_MESSAGES/django.po +1 -1
- wagtail/documents/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/zh_Hans/LC_MESSAGES/django.po +3 -2
- wagtail/documents/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
- wagtail/documents/rich_text/contentstate.py +1 -0
- wagtail/documents/rich_text/editor_html.py +1 -0
- wagtail/documents/tests/test_collection_privacy.py +1 -1
- wagtail/documents/tests/test_serializers.py +0 -1
- wagtail/documents/views/serve.py +0 -15
- wagtail/documents/wagtail_hooks.py +2 -17
- wagtail/embeds/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/embeds/rich_text/contentstate.py +1 -0
- wagtail/embeds/rich_text/editor_html.py +1 -0
- wagtail/embeds/wagtail_hooks.py +1 -1
- wagtail/images/formats.py +0 -11
- wagtail/images/locale/ar/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/az_AZ/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/be/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/bg/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/bn/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/ca/LC_MESSAGES/django.po +2 -2
- wagtail/images/locale/cs/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/cs/LC_MESSAGES/django.po +3 -2
- wagtail/images/locale/cy/LC_MESSAGES/django.po +2 -1
- wagtail/images/locale/da/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/de/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/de/LC_MESSAGES/django.po +3 -2
- wagtail/images/locale/dv/LC_MESSAGES/django.po +2 -1
- wagtail/images/locale/el/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/en/LC_MESSAGES/django.po +4 -4
- wagtail/images/locale/es/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/es_419/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/et/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/eu/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/fa/LC_MESSAGES/django.po +3 -2
- wagtail/images/locale/fi/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/fi/LC_MESSAGES/django.po +2 -2
- wagtail/images/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/fr/LC_MESSAGES/django.po +3 -2
- wagtail/images/locale/gl/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/gl/LC_MESSAGES/django.po +2 -2
- wagtail/images/locale/he_IL/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/hr_HR/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/ht/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/hu/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/hu/LC_MESSAGES/django.po +23 -3
- wagtail/images/locale/id_ID/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/is_IS/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/it/LC_MESSAGES/django.po +2 -2
- wagtail/images/locale/ja/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/ka/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/ko/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/ko/LC_MESSAGES/django.po +31 -2
- wagtail/images/locale/lt/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/lv/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/mi/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/mn/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/mn/LC_MESSAGES/django.po +3 -2
- wagtail/images/locale/my/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/nb/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/nb/LC_MESSAGES/django.po +3 -2
- wagtail/images/locale/nl/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/nl/LC_MESSAGES/django.po +4 -5
- wagtail/images/locale/pl/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/pl/LC_MESSAGES/django.po +2 -2
- wagtail/images/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/pt_BR/LC_MESSAGES/django.po +2 -2
- wagtail/images/locale/pt_PT/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/ro/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/ro/LC_MESSAGES/django.po +3 -2
- wagtail/images/locale/ru/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/ru/LC_MESSAGES/django.po +5 -2
- wagtail/images/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/sk_SK/LC_MESSAGES/django.po +2 -2
- wagtail/images/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/images/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/sv/LC_MESSAGES/django.po +2 -2
- wagtail/images/locale/tet/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/th/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/tr/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/tr_TR/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/ug/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/uk/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/uk/LC_MESSAGES/django.po +5 -4
- wagtail/images/locale/vi/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/zh/LC_MESSAGES/django.po +1 -1
- wagtail/images/locale/zh_Hans/LC_MESSAGES/django.po +2 -1
- wagtail/images/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
- wagtail/images/management/commands/wagtail_update_image_renditions.py +1 -1
- wagtail/images/models.py +23 -7
- wagtail/images/tests/test_admin_views.py +1 -1
- wagtail/images/tests/test_models.py +39 -3
- wagtail/images/tests/tests.py +0 -6
- wagtail/images/wagtail_hooks.py +2 -2
- wagtail/locale/af/LC_MESSAGES/django.po +1 -1
- wagtail/locale/ar/LC_MESSAGES/django.po +50 -50
- wagtail/locale/az_AZ/LC_MESSAGES/django.po +1 -1
- wagtail/locale/be/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/be/LC_MESSAGES/django.po +52 -51
- wagtail/locale/bg/LC_MESSAGES/django.po +4 -4
- wagtail/locale/bn/LC_MESSAGES/django.po +1 -1
- wagtail/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/ca/LC_MESSAGES/django.po +234 -234
- wagtail/locale/cs/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/cs/LC_MESSAGES/django.po +172 -172
- wagtail/locale/cy/LC_MESSAGES/django.po +12 -12
- wagtail/locale/da/LC_MESSAGES/django.po +7 -7
- wagtail/locale/de/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/de/LC_MESSAGES/django.po +237 -236
- wagtail/locale/dv/LC_MESSAGES/django.po +216 -215
- wagtail/locale/el/LC_MESSAGES/django.po +76 -75
- wagtail/locale/en/LC_MESSAGES/django.po +339 -339
- wagtail/locale/es/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/es/LC_MESSAGES/django.po +192 -192
- wagtail/locale/es_419/LC_MESSAGES/django.po +1 -1
- wagtail/locale/et/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/et/LC_MESSAGES/django.po +173 -173
- wagtail/locale/eu/LC_MESSAGES/django.po +1 -1
- wagtail/locale/fa/LC_MESSAGES/django.po +50 -50
- wagtail/locale/fi/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/fi/LC_MESSAGES/django.po +187 -187
- wagtail/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/fr/LC_MESSAGES/django.po +236 -235
- wagtail/locale/gl/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/gl/LC_MESSAGES/django.po +235 -235
- wagtail/locale/he_IL/LC_MESSAGES/django.po +9 -9
- wagtail/locale/hr_HR/LC_MESSAGES/django.po +184 -184
- wagtail/locale/hu/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/hu/LC_MESSAGES/django.po +251 -229
- wagtail/locale/id_ID/LC_MESSAGES/django.po +49 -49
- wagtail/locale/is_IS/LC_MESSAGES/django.po +232 -232
- wagtail/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/it/LC_MESSAGES/django.po +224 -224
- wagtail/locale/ja/LC_MESSAGES/django.po +110 -110
- wagtail/locale/ka/LC_MESSAGES/django.po +4 -4
- wagtail/locale/ko/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/ko/LC_MESSAGES/django.po +88 -53
- wagtail/locale/lt/LC_MESSAGES/django.po +53 -53
- wagtail/locale/lv/LC_MESSAGES/django.po +22 -22
- wagtail/locale/mi/LC_MESSAGES/django.po +167 -167
- wagtail/locale/mn/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/mn/LC_MESSAGES/django.po +51 -50
- wagtail/locale/my/LC_MESSAGES/django.po +6 -6
- wagtail/locale/nb/LC_MESSAGES/django.po +50 -50
- wagtail/locale/nl/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/nl/LC_MESSAGES/django.po +233 -233
- wagtail/locale/pl/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/pl/LC_MESSAGES/django.po +232 -232
- wagtail/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/pt_BR/LC_MESSAGES/django.po +202 -202
- wagtail/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/pt_PT/LC_MESSAGES/django.po +180 -178
- wagtail/locale/ro/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/ro/LC_MESSAGES/django.po +233 -232
- wagtail/locale/ru/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/ru/LC_MESSAGES/django.po +237 -234
- wagtail/locale/sk_SK/LC_MESSAGES/django.po +47 -47
- wagtail/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/sl/LC_MESSAGES/django.po +233 -233
- wagtail/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/sv/LC_MESSAGES/django.po +207 -207
- wagtail/locale/tet/LC_MESSAGES/django.po +37 -37
- wagtail/locale/th/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/th/LC_MESSAGES/django.po +54 -53
- wagtail/locale/tr/LC_MESSAGES/django.po +50 -50
- wagtail/locale/tr_TR/LC_MESSAGES/django.po +50 -50
- wagtail/locale/ug/LC_MESSAGES/django.po +232 -232
- wagtail/locale/uk/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/uk/LC_MESSAGES/django.po +185 -185
- wagtail/locale/vi/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/vi/LC_MESSAGES/django.po +20 -19
- wagtail/locale/zh/LC_MESSAGES/django.po +4 -4
- wagtail/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/zh_Hans/LC_MESSAGES/django.po +189 -189
- wagtail/locale/zh_Hant/LC_MESSAGES/django.po +161 -161
- wagtail/locales/locale/ar/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/be/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/bg/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/locales/locale/ca/LC_MESSAGES/django.po +13 -3
- wagtail/locales/locale/cs/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/cy/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/da/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/de/LC_MESSAGES/django.mo +0 -0
- wagtail/locales/locale/de/LC_MESSAGES/django.po +13 -2
- wagtail/locales/locale/dv/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/el/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/en/LC_MESSAGES/django.po +26 -14
- wagtail/locales/locale/es/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/et/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/fa/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/fi/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/locales/locale/fr/LC_MESSAGES/django.po +14 -2
- wagtail/locales/locale/gl/LC_MESSAGES/django.mo +0 -0
- wagtail/locales/locale/gl/LC_MESSAGES/django.po +13 -3
- wagtail/locales/locale/he_IL/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/hr_HR/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/hu/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/id_ID/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/is_IS/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/it/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/ja/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/ko/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/lt/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/lv/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/mi/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/mn/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/my/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/nb/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/nl/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/pl/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/pt_BR/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/pt_PT/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/ro/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/ru/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/sk_SK/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/sl/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/sv/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/tet/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/th/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/tr/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/tr_TR/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/ug/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/uk/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/vi/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/zh/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/zh_Hans/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
- wagtail/locales/tests.py +32 -1
- wagtail/locales/views.py +39 -7
- wagtail/models/__init__.py +67 -5002
- wagtail/models/audit_log.py +1 -1
- wagtail/models/content_types.py +11 -0
- wagtail/models/draft_state.py +197 -0
- wagtail/models/locking.py +82 -0
- wagtail/models/orderable.py +10 -0
- wagtail/models/pages.py +2755 -0
- wagtail/models/preview.py +281 -0
- wagtail/models/reference_index.py +1 -1
- wagtail/models/revisions.py +433 -0
- wagtail/models/view_restrictions.py +3 -3
- wagtail/models/workflows.py +1348 -0
- wagtail/project_template/home/apps.py +6 -0
- wagtail/project_template/manage.py-tpl +22 -0
- wagtail/project_template/project_name/settings/base.py +1 -0
- wagtail/project_template/requirements.txt +2 -2
- wagtail/search/backends/base.py +4 -0
- wagtail/search/backends/database/mysql/query.py +8 -4
- wagtail/search/backends/elasticsearch7.py +17 -7
- wagtail/search/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/search/tests/elasticsearch_common_tests.py +43 -0
- wagtail/search/tests/test_backends.py +43 -13
- wagtail/search/tests/test_mysql_backend.py +22 -0
- wagtail/search/tests/test_page_search.py +2 -1
- wagtail/search/tests/test_queries.py +2 -2
- wagtail/sites/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/snippets/action_menu.py +9 -30
- wagtail/snippets/locale/af/LC_MESSAGES/django.po +1 -1
- wagtail/snippets/locale/ar/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/az_AZ/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/be/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/be/LC_MESSAGES/django.po +6 -5
- wagtail/snippets/locale/bg/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/bn/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/ca/LC_MESSAGES/django.po +11 -5
- wagtail/snippets/locale/cs/LC_MESSAGES/django.po +5 -4
- wagtail/snippets/locale/cy/LC_MESSAGES/django.po +5 -4
- wagtail/snippets/locale/da/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/de/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/de/LC_MESSAGES/django.po +13 -6
- wagtail/snippets/locale/dv/LC_MESSAGES/django.po +5 -4
- wagtail/snippets/locale/el/LC_MESSAGES/django.po +5 -4
- wagtail/snippets/locale/en/LC_MESSAGES/django.po +31 -23
- wagtail/snippets/locale/en_IN/LC_MESSAGES/django.po +1 -1
- wagtail/snippets/locale/es/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/es/LC_MESSAGES/django.po +6 -5
- wagtail/snippets/locale/es_419/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/es_VE/LC_MESSAGES/django.po +1 -1
- wagtail/snippets/locale/et/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/eu/LC_MESSAGES/django.po +1 -1
- wagtail/snippets/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/fa/LC_MESSAGES/django.po +6 -5
- wagtail/snippets/locale/fi/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/fi/LC_MESSAGES/django.po +6 -5
- wagtail/snippets/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/fr/LC_MESSAGES/django.po +13 -6
- wagtail/snippets/locale/gl/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/gl/LC_MESSAGES/django.po +11 -5
- wagtail/snippets/locale/he_IL/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/hi/LC_MESSAGES/django.po +1 -1
- wagtail/snippets/locale/hr_HR/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/ht/LC_MESSAGES/django.po +1 -1
- wagtail/snippets/locale/hu/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/id_ID/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/is_IS/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/is_IS/LC_MESSAGES/django.po +5 -6
- wagtail/snippets/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/it/LC_MESSAGES/django.po +5 -5
- wagtail/snippets/locale/ja/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/ja/LC_MESSAGES/django.po +6 -5
- wagtail/snippets/locale/ka/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/ko/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/lt/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/lv/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/mi/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/mn/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/my/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/nb/LC_MESSAGES/django.po +5 -4
- wagtail/snippets/locale/nl/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/nl/LC_MESSAGES/django.po +12 -5
- wagtail/snippets/locale/pl/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/pl/LC_MESSAGES/django.po +5 -5
- wagtail/snippets/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/pt_BR/LC_MESSAGES/django.po +7 -5
- wagtail/snippets/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/pt_PT/LC_MESSAGES/django.po +7 -5
- wagtail/snippets/locale/ro/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/ro/LC_MESSAGES/django.po +6 -5
- wagtail/snippets/locale/ru/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/ru/LC_MESSAGES/django.po +6 -5
- wagtail/snippets/locale/sk_SK/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/sl/LC_MESSAGES/django.po +5 -5
- wagtail/snippets/locale/sr/LC_MESSAGES/django.po +1 -1
- wagtail/snippets/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/sv/LC_MESSAGES/django.po +5 -5
- wagtail/snippets/locale/ta/LC_MESSAGES/django.po +1 -1
- wagtail/snippets/locale/tet/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/th/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/th/LC_MESSAGES/django.po +6 -5
- wagtail/snippets/locale/tr/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/tr_TR/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/ug/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/uk/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/uk/LC_MESSAGES/django.po +6 -6
- wagtail/snippets/locale/vi/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/zh/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/zh_Hans/LC_MESSAGES/django.po +6 -5
- wagtail/snippets/locale/zh_Hant/LC_MESSAGES/django.po +4 -4
- wagtail/snippets/permissions.py +6 -4
- wagtail/snippets/static/wagtailsnippets/js/snippet-chooser-telepath.js +1 -1
- wagtail/snippets/static/wagtailsnippets/js/snippet-chooser.js +1 -1
- wagtail/snippets/templates/wagtailsnippets/snippets/action_menu/publish.html +3 -5
- wagtail/snippets/tests/test_preview.py +62 -38
- wagtail/snippets/tests/test_snippets.py +313 -130
- wagtail/snippets/tests/test_viewset.py +69 -6
- wagtail/snippets/tests/test_workflows.py +0 -4
- wagtail/snippets/views/snippets.py +29 -53
- wagtail/snippets/wagtail_hooks.py +3 -7
- wagtail/test/apps.py +5 -0
- wagtail/test/context_processors.py +19 -0
- wagtail/test/customuser/forms.py +19 -0
- wagtail/test/customuser/viewsets.py +12 -0
- wagtail/test/settings.py +8 -9
- wagtail/test/testapp/migrations/0046_alter_custom_rendition_to_unique_constraint.py +24 -0
- wagtail/test/testapp/migrations/{0046_advertwithcustomuuidprimarykey_page.py → 0047_advertwithcustomuuidprimarykey_page.py} +1 -1
- wagtail/test/testapp/migrations/0048_requireddatepage.py +36 -0
- wagtail/test/testapp/migrations/0049_promotionalpage.py +35 -0
- wagtail/test/testapp/migrations/0050_headcountrelatedmodelusingpk_related_page.py +25 -0
- wagtail/test/testapp/migrations/0051_userapprovaltaskstate_userapprovaltask.py +59 -0
- wagtail/test/testapp/models.py +183 -26
- wagtail/test/testapp/templates/tests/workflows/approve_with_style.html +6 -0
- wagtail/test/testapp/views.py +7 -1
- wagtail/test/testapp/wagtail_hooks.py +6 -0
- wagtail/test/utils/form_data.py +1 -0
- wagtail/tests/test_blocks.py +0 -18
- wagtail/tests/test_management_commands.py +1 -1
- wagtail/tests/test_page_model.py +27 -0
- wagtail/tests/test_page_privacy.py +1 -1
- wagtail/tests/test_reference_index.py +26 -0
- wagtail/tests/test_streamfield.py +136 -0
- wagtail/tests/test_utils.py +1 -23
- wagtail/users/forms.py +3 -17
- wagtail/users/locale/ar/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/be/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/be/LC_MESSAGES/django.po +3 -2
- wagtail/users/locale/bg/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/bn/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/ca/LC_MESSAGES/django.po +2 -2
- wagtail/users/locale/cs/LC_MESSAGES/django.po +2 -1
- wagtail/users/locale/cy/LC_MESSAGES/django.po +2 -1
- wagtail/users/locale/da/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/de/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/de/LC_MESSAGES/django.po +3 -3
- wagtail/users/locale/dv/LC_MESSAGES/django.po +2 -1
- wagtail/users/locale/el/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/en/LC_MESSAGES/django.po +71 -71
- wagtail/users/locale/es/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/es_419/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/et/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/eu/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/fa/LC_MESSAGES/django.po +3 -2
- wagtail/users/locale/fi/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/fi/LC_MESSAGES/django.po +2 -2
- wagtail/users/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/fr/LC_MESSAGES/django.po +4 -2
- wagtail/users/locale/gl/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/gl/LC_MESSAGES/django.po +2 -2
- wagtail/users/locale/he_IL/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/hr_HR/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/hr_HR/LC_MESSAGES/django.po +2 -2
- wagtail/users/locale/hu/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/hu/LC_MESSAGES/django.po +45 -3
- wagtail/users/locale/hy/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/id_ID/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/is_IS/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/it/LC_MESSAGES/django.po +2 -2
- wagtail/users/locale/ja/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/ka/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/ko/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/ko/LC_MESSAGES/django.po +47 -2
- wagtail/users/locale/lt/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/lv/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/mi/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/mn/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/mn/LC_MESSAGES/django.po +3 -2
- wagtail/users/locale/my/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/nb/LC_MESSAGES/django.po +2 -1
- wagtail/users/locale/nl/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/nl/LC_MESSAGES/django.po +3 -2
- wagtail/users/locale/pl/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/pl/LC_MESSAGES/django.po +2 -2
- wagtail/users/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/pt_BR/LC_MESSAGES/django.po +3 -2
- wagtail/users/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/pt_PT/LC_MESSAGES/django.po +3 -2
- wagtail/users/locale/ro/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/ro/LC_MESSAGES/django.po +3 -2
- wagtail/users/locale/ru/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/ru/LC_MESSAGES/django.po +4 -2
- wagtail/users/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/sk_SK/LC_MESSAGES/django.po +2 -2
- wagtail/users/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/users/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/sv/LC_MESSAGES/django.po +2 -2
- wagtail/users/locale/tet/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/th/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/th/LC_MESSAGES/django.po +3 -2
- wagtail/users/locale/tr/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/tr_TR/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/ug/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/uk/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/uk/LC_MESSAGES/django.po +3 -2
- wagtail/users/locale/vi/LC_MESSAGES/django.po +2 -1
- wagtail/users/locale/zh/LC_MESSAGES/django.po +1 -1
- wagtail/users/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/zh_Hans/LC_MESSAGES/django.po +3 -2
- wagtail/users/locale/zh_Hant/LC_MESSAGES/django.po +1 -1
- wagtail/users/models.py +7 -1
- wagtail/users/templatetags/wagtailusers_tags.py +0 -29
- wagtail/users/tests/__init__.py +0 -6
- wagtail/users/tests/test_admin_views.py +285 -611
- wagtail/users/views/groups.py +1 -28
- wagtail/users/views/users.py +3 -45
- wagtail/utils/deprecation.py +3 -3
- wagtail/whitelist.py +1 -0
- wagtail/workflows.py +2 -2
- wagtail-7.0.dist-info/METADATA +224 -0
- {wagtail-6.4.1.dist-info → wagtail-7.0.dist-info}/RECORD +1230 -1210
- {wagtail-6.4.1.dist-info → wagtail-7.0.dist-info}/WHEEL +1 -1
- wagtail/admin/templates/wagtailadmin/shared/ajax_pagination_nav.html +0 -25
- wagtail/project_template/manage.py +0 -10
- wagtail/utils/setup.py +0 -90
- wagtail/utils/widgets.py +0 -46
- wagtail-6.4.1.dist-info/METADATA +0 -77
- {wagtail-6.4.1.dist-info → wagtail-7.0.dist-info}/entry_points.txt +0 -0
- {wagtail-6.4.1.dist-info → wagtail-7.0.dist-info/licenses}/LICENSE +0 -0
- {wagtail-6.4.1.dist-info → wagtail-7.0.dist-info}/top_level.txt +0 -0
|
@@ -22,9 +22,9 @@ msgid ""
|
|
|
22
22
|
msgstr ""
|
|
23
23
|
"Project-Id-Version: Wagtail\n"
|
|
24
24
|
"Report-Msgid-Bugs-To: \n"
|
|
25
|
-
"POT-Creation-Date: 2025-
|
|
25
|
+
"POT-Creation-Date: 2025-04-25 23:08+0100\n"
|
|
26
26
|
"PO-Revision-Date: 2014-09-11 15:42+0000\n"
|
|
27
|
-
"Last-Translator:
|
|
27
|
+
"Last-Translator: 祝沙军 <zhushajun@gmail.com>, 2017\n"
|
|
28
28
|
"Language-Team: Chinese (China) (http://app.transifex.com/torchbox/wagtail/"
|
|
29
29
|
"language/zh_CN/)\n"
|
|
30
30
|
"MIME-Version: 1.0\n"
|
|
@@ -42,12 +42,6 @@ msgstr "起始日起"
|
|
|
42
42
|
msgid "Date to"
|
|
43
43
|
msgstr "结束日期"
|
|
44
44
|
|
|
45
|
-
#, python-format
|
|
46
|
-
msgid ""
|
|
47
|
-
"There is another field with the label %(label_name)s, please change one of "
|
|
48
|
-
"them."
|
|
49
|
-
msgstr "%(label_name)s 标签被其它字段使用,请更换一个标签。"
|
|
50
|
-
|
|
51
45
|
msgid "Single line text"
|
|
52
46
|
msgstr "单行文本"
|
|
53
47
|
|
|
Binary file
|
|
@@ -11,7 +11,7 @@ msgid ""
|
|
|
11
11
|
msgstr ""
|
|
12
12
|
"Project-Id-Version: Wagtail\n"
|
|
13
13
|
"Report-Msgid-Bugs-To: \n"
|
|
14
|
-
"POT-Creation-Date: 2025-
|
|
14
|
+
"POT-Creation-Date: 2025-04-25 23:08+0100\n"
|
|
15
15
|
"PO-Revision-Date: 2014-09-11 15:42+0000\n"
|
|
16
16
|
"Last-Translator: Ocin Leung, 2020\n"
|
|
17
17
|
"Language-Team: Chinese Traditional (http://app.transifex.com/torchbox/"
|
|
@@ -31,12 +31,6 @@ msgstr "起始日期"
|
|
|
31
31
|
msgid "Date to"
|
|
32
32
|
msgstr "結束日期"
|
|
33
33
|
|
|
34
|
-
#, python-format
|
|
35
|
-
msgid ""
|
|
36
|
-
"There is another field with the label %(label_name)s, please change one of "
|
|
37
|
-
"them."
|
|
38
|
-
msgstr "%(label_name)s 標簽被其它欄位使用,請更換一個標簽。"
|
|
39
|
-
|
|
40
34
|
msgid "Single line text"
|
|
41
35
|
msgstr "單行文本"
|
|
42
36
|
|
|
@@ -6,6 +6,7 @@ from wagtail.contrib.forms.utils import get_field_clean_name
|
|
|
6
6
|
from wagtail.models import Page
|
|
7
7
|
from wagtail.test.testapp.models import (
|
|
8
8
|
ExtendedFormField,
|
|
9
|
+
FormBuilderWithCustomWidget,
|
|
9
10
|
FormField,
|
|
10
11
|
FormPage,
|
|
11
12
|
FormPageWithCustomFormBuilder,
|
|
@@ -304,6 +305,67 @@ class TestFormBuilder(TestCase):
|
|
|
304
305
|
form_class.base_fields["choose_the_correct_answer"].initial,
|
|
305
306
|
)
|
|
306
307
|
|
|
308
|
+
def test_custom_widget(self):
|
|
309
|
+
"""
|
|
310
|
+
All builtin field types should be able to receive a custom widget
|
|
311
|
+
"""
|
|
312
|
+
self.form_page.form_builder = FormBuilderWithCustomWidget
|
|
313
|
+
form = self.form_page.get_form(auto_id=None)
|
|
314
|
+
for fieldname, expected_render in [
|
|
315
|
+
(
|
|
316
|
+
"your_name",
|
|
317
|
+
'<input type="text" name="your_name" maxlength="255" class="custom">',
|
|
318
|
+
),
|
|
319
|
+
("your_message", '<input type="text" name="your_message" class="custom">'),
|
|
320
|
+
(
|
|
321
|
+
"your_birthday",
|
|
322
|
+
'<input type="text" name="your_birthday" class="custom">',
|
|
323
|
+
),
|
|
324
|
+
(
|
|
325
|
+
"your_birthtime",
|
|
326
|
+
'<input type="text" name="your_birthtime" class="custom">',
|
|
327
|
+
),
|
|
328
|
+
(
|
|
329
|
+
"your_email",
|
|
330
|
+
'<input type="text" name="your_email" maxlength="320" class="custom">',
|
|
331
|
+
),
|
|
332
|
+
(
|
|
333
|
+
"your_homepage",
|
|
334
|
+
'<input type="text" name="your_homepage" class="custom">',
|
|
335
|
+
),
|
|
336
|
+
(
|
|
337
|
+
"your_favourite_number",
|
|
338
|
+
'<input type="text" name="your_favourite_number" class="custom">',
|
|
339
|
+
),
|
|
340
|
+
(
|
|
341
|
+
"your_favourite_text_editors",
|
|
342
|
+
'<input type="text" name="your_favourite_text_editors" class="custom">',
|
|
343
|
+
),
|
|
344
|
+
(
|
|
345
|
+
"your_favourite_python_ides",
|
|
346
|
+
'<input type="text" name="your_favourite_python_ides" class="custom">',
|
|
347
|
+
),
|
|
348
|
+
(
|
|
349
|
+
"u03a5our_favourite_u03a1ython_ixd0e",
|
|
350
|
+
'<input type="text" name="u03a5our_favourite_u03a1ython_ixd0e" class="custom">',
|
|
351
|
+
),
|
|
352
|
+
(
|
|
353
|
+
"your_choices",
|
|
354
|
+
'<input type="text" name="your_choices" value="[\'\']" class="custom">',
|
|
355
|
+
),
|
|
356
|
+
(
|
|
357
|
+
"i_agree_to_the_terms_of_use",
|
|
358
|
+
'<input type="text" name="i_agree_to_the_terms_of_use" class="custom">',
|
|
359
|
+
),
|
|
360
|
+
(
|
|
361
|
+
"a_hidden_field",
|
|
362
|
+
'<input type="text" name="a_hidden_field" class="custom">',
|
|
363
|
+
),
|
|
364
|
+
]:
|
|
365
|
+
with self.subTest(field=fieldname):
|
|
366
|
+
form.fields[fieldname].required = False # makes testing easier
|
|
367
|
+
self.assertHTMLEqual(form[fieldname].as_widget(), expected_render)
|
|
368
|
+
|
|
307
369
|
|
|
308
370
|
class TestCustomFormBuilder(TestCase):
|
|
309
371
|
def setUp(self):
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import datetime
|
|
2
|
+
import html
|
|
2
3
|
from io import BytesIO
|
|
3
4
|
|
|
4
5
|
from django.conf import settings
|
|
@@ -1851,9 +1852,13 @@ class TestDuplicateFormFieldLabels(WagtailTestUtils, TestCase):
|
|
|
1851
1852
|
|
|
1852
1853
|
self.assertEqual(response.status_code, 200)
|
|
1853
1854
|
|
|
1855
|
+
expected_validation_error_msg = html.escape(
|
|
1856
|
+
"Field name 'foo' conflicts with another field. Please change the label."
|
|
1857
|
+
)
|
|
1858
|
+
|
|
1854
1859
|
self.assertContains(
|
|
1855
1860
|
response,
|
|
1856
|
-
|
|
1861
|
+
expected_validation_error_msg,
|
|
1857
1862
|
)
|
|
1858
1863
|
|
|
1859
1864
|
def test_adding_duplicate_form_labels_as_cleaned_name(self):
|
|
@@ -1889,9 +1894,14 @@ class TestDuplicateFormFieldLabels(WagtailTestUtils, TestCase):
|
|
|
1889
1894
|
|
|
1890
1895
|
self.assertEqual(response.status_code, 200)
|
|
1891
1896
|
|
|
1897
|
+
expected_validation_error_msg = html.escape(
|
|
1898
|
+
"Field name 'low_earth_orbit' conflicts with another field. "
|
|
1899
|
+
"Please change the label."
|
|
1900
|
+
)
|
|
1901
|
+
|
|
1892
1902
|
self.assertContains(
|
|
1893
1903
|
response,
|
|
1894
|
-
|
|
1904
|
+
expected_validation_error_msg,
|
|
1895
1905
|
)
|
|
1896
1906
|
|
|
1897
1907
|
def test_adding_duplicate_form_labels_using_override_clean_name(self):
|
|
@@ -1928,9 +1938,14 @@ class TestDuplicateFormFieldLabels(WagtailTestUtils, TestCase):
|
|
|
1928
1938
|
|
|
1929
1939
|
self.assertEqual(response.status_code, 200)
|
|
1930
1940
|
|
|
1941
|
+
expected_validation_error_msg = html.escape(
|
|
1942
|
+
"Field name 'test duplicate' conflicts with another field. "
|
|
1943
|
+
"Please change the label."
|
|
1944
|
+
)
|
|
1945
|
+
|
|
1931
1946
|
self.assertContains(
|
|
1932
1947
|
response,
|
|
1933
|
-
|
|
1948
|
+
expected_validation_error_msg,
|
|
1934
1949
|
)
|
|
1935
1950
|
|
|
1936
1951
|
def test_rename_existing_field_and_add_new_field_with_clashing_clean_name(
|
|
@@ -1968,9 +1983,15 @@ class TestDuplicateFormFieldLabels(WagtailTestUtils, TestCase):
|
|
|
1968
1983
|
)
|
|
1969
1984
|
|
|
1970
1985
|
self.assertEqual(response.status_code, 200)
|
|
1986
|
+
|
|
1987
|
+
expected_validation_error_msg = html.escape(
|
|
1988
|
+
"Field name 'test_field' conflicts with another field. "
|
|
1989
|
+
"Please change the label."
|
|
1990
|
+
)
|
|
1991
|
+
|
|
1971
1992
|
self.assertContains(
|
|
1972
1993
|
response,
|
|
1973
|
-
|
|
1994
|
+
expected_validation_error_msg,
|
|
1974
1995
|
)
|
|
1975
1996
|
|
|
1976
1997
|
def test_adding_duplicate_form_labels_with_custom_related_name(self):
|
|
@@ -2014,11 +2035,146 @@ class TestDuplicateFormFieldLabels(WagtailTestUtils, TestCase):
|
|
|
2014
2035
|
|
|
2015
2036
|
self.assertEqual(response.status_code, 200)
|
|
2016
2037
|
|
|
2038
|
+
expected_validation_error_msg = html.escape(
|
|
2039
|
+
"Field name 'chocolate' conflicts with another field. "
|
|
2040
|
+
"Please change the label."
|
|
2041
|
+
)
|
|
2042
|
+
|
|
2017
2043
|
self.assertContains(
|
|
2018
2044
|
response,
|
|
2019
|
-
|
|
2045
|
+
expected_validation_error_msg,
|
|
2046
|
+
)
|
|
2047
|
+
|
|
2048
|
+
def test_validation_errors_are_added_to_all_duplicate_fields(self):
|
|
2049
|
+
"""
|
|
2050
|
+
Ensure all forms with duplicate labels have the correct validation error added.
|
|
2051
|
+
"""
|
|
2052
|
+
|
|
2053
|
+
form_page = FormPage(
|
|
2054
|
+
title="Form page!",
|
|
2055
|
+
form_fields=[FormField(label="Test field", field_type="singleline")],
|
|
2056
|
+
)
|
|
2057
|
+
self.root_page.add_child(instance=form_page)
|
|
2058
|
+
|
|
2059
|
+
post_data = {
|
|
2060
|
+
"title": "Form page!",
|
|
2061
|
+
"slug": "form-page",
|
|
2062
|
+
"form_fields-TOTAL_FORMS": "5",
|
|
2063
|
+
"form_fields-INITIAL_FORMS": "1",
|
|
2064
|
+
"form_fields-MIN_NUM_FORMS": "0",
|
|
2065
|
+
"form_fields-MAX_NUM_FORMS": "1000",
|
|
2066
|
+
# Duplicate field labels
|
|
2067
|
+
"form_fields-0-id": form_page.form_fields.first().pk,
|
|
2068
|
+
"form_fields-0-label": "Test field",
|
|
2069
|
+
"form_fields-0-field_type": "singleline",
|
|
2070
|
+
"form_fields-1-id": "",
|
|
2071
|
+
"form_fields-1-label": "Test field",
|
|
2072
|
+
"form_fields-1-field_type": "singleline",
|
|
2073
|
+
"form_fields-2-id": "",
|
|
2074
|
+
"form_fields-2-label": "Test field",
|
|
2075
|
+
"form_fields-2-field_type": "singleline",
|
|
2076
|
+
"form_fields-3-id": "",
|
|
2077
|
+
"form_fields-3-label": "duplicate 2",
|
|
2078
|
+
"form_fields-3-field_type": "singleline",
|
|
2079
|
+
"form_fields-4-id": "",
|
|
2080
|
+
"form_fields-4-label": "duplicate 2",
|
|
2081
|
+
"form_fields-4-field_type": "singleline",
|
|
2082
|
+
}
|
|
2083
|
+
|
|
2084
|
+
response = self.client.post(
|
|
2085
|
+
reverse("wagtailadmin_pages:edit", args=[form_page.pk]), post_data
|
|
2020
2086
|
)
|
|
2021
2087
|
|
|
2088
|
+
self.assertEqual(response.status_code, 200)
|
|
2089
|
+
|
|
2090
|
+
form = response.context["form"]
|
|
2091
|
+
formset = form.formsets["form_fields"]
|
|
2092
|
+
|
|
2093
|
+
# Expected validation error messages
|
|
2094
|
+
expected_error_text_field_0 = (
|
|
2095
|
+
"The name 'test_field' is already assigned to this field and cannot be "
|
|
2096
|
+
"changed. Please enter a different label for the conflicting field."
|
|
2097
|
+
)
|
|
2098
|
+
expected_error_text_fields_1_2 = (
|
|
2099
|
+
"Field name 'test_field' conflicts with another field. Please "
|
|
2100
|
+
"change the label."
|
|
2101
|
+
)
|
|
2102
|
+
expected_error_text_fields_3_4 = (
|
|
2103
|
+
"Field name 'duplicate_2' conflicts with another field. Please "
|
|
2104
|
+
"change the label."
|
|
2105
|
+
)
|
|
2106
|
+
|
|
2107
|
+
# Check validation errors for form 0
|
|
2108
|
+
self.assertIn("label", formset.forms[0].errors)
|
|
2109
|
+
self.assertEqual(
|
|
2110
|
+
formset.forms[0].errors["label"][0],
|
|
2111
|
+
expected_error_text_field_0,
|
|
2112
|
+
)
|
|
2113
|
+
|
|
2114
|
+
# Check validation errors for forms 1 and 2
|
|
2115
|
+
for i in [1, 2]:
|
|
2116
|
+
with self.subTest(
|
|
2117
|
+
form_index=i,
|
|
2118
|
+
):
|
|
2119
|
+
self.assertIn("label", formset.forms[i].errors)
|
|
2120
|
+
self.assertEqual(
|
|
2121
|
+
formset.forms[i].errors["label"][0],
|
|
2122
|
+
expected_error_text_fields_1_2,
|
|
2123
|
+
)
|
|
2124
|
+
|
|
2125
|
+
# Check validation errors for forms 3 and 4
|
|
2126
|
+
for i in [3, 4]:
|
|
2127
|
+
with self.subTest(
|
|
2128
|
+
form_index=i,
|
|
2129
|
+
):
|
|
2130
|
+
self.assertIn("label", formset.forms[i].errors)
|
|
2131
|
+
self.assertEqual(
|
|
2132
|
+
formset.forms[i].errors["label"][0],
|
|
2133
|
+
expected_error_text_fields_3_4,
|
|
2134
|
+
)
|
|
2135
|
+
|
|
2136
|
+
def test_deletion_of_duplicate_formset_form_field_allows_page_publish(self):
|
|
2137
|
+
"""
|
|
2138
|
+
Test that deleting a duplicate formset form field allows the page to be
|
|
2139
|
+
published.
|
|
2140
|
+
"""
|
|
2141
|
+
form_page = FormPage(
|
|
2142
|
+
title="Form page!",
|
|
2143
|
+
form_fields=[FormField(label="Test field", field_type="singleline")],
|
|
2144
|
+
live=False,
|
|
2145
|
+
)
|
|
2146
|
+
self.root_page.add_child(instance=form_page)
|
|
2147
|
+
self.assertFalse(form_page.live)
|
|
2148
|
+
|
|
2149
|
+
post_data = {
|
|
2150
|
+
"title": "Form page!",
|
|
2151
|
+
"slug": "form-page",
|
|
2152
|
+
"action-publish": "action-publish",
|
|
2153
|
+
"form_fields-TOTAL_FORMS": "2",
|
|
2154
|
+
"form_fields-INITIAL_FORMS": "1",
|
|
2155
|
+
"form_fields-MIN_NUM_FORMS": "0",
|
|
2156
|
+
"form_fields-MAX_NUM_FORMS": "1000",
|
|
2157
|
+
"form_fields-0-id": form_page.form_fields.first().pk,
|
|
2158
|
+
"form_fields-0-label": "Test field",
|
|
2159
|
+
"form_fields-0-field_type": "singleline",
|
|
2160
|
+
# Add a duplicate field but mark it for deletion
|
|
2161
|
+
"form_fields-1-id": "",
|
|
2162
|
+
"form_fields-1-label": "Test field",
|
|
2163
|
+
"form_fields-1-field_type": "singleline",
|
|
2164
|
+
"form_fields-1-DELETE": "on",
|
|
2165
|
+
}
|
|
2166
|
+
|
|
2167
|
+
response = self.client.post(
|
|
2168
|
+
reverse("wagtailadmin_pages:edit", args=[form_page.pk]), post_data
|
|
2169
|
+
)
|
|
2170
|
+
|
|
2171
|
+
# Response should redirect to parent page list view
|
|
2172
|
+
self.assertEqual(response.status_code, 302)
|
|
2173
|
+
|
|
2174
|
+
form_page.refresh_from_db()
|
|
2175
|
+
|
|
2176
|
+
self.assertTrue(form_page.live)
|
|
2177
|
+
|
|
2022
2178
|
|
|
2023
2179
|
class TestPreview(WagtailTestUtils, TestCase):
|
|
2024
2180
|
post_data = {
|
|
@@ -2,12 +2,9 @@ import logging
|
|
|
2
2
|
import uuid
|
|
3
3
|
from collections import defaultdict
|
|
4
4
|
from urllib.parse import urlparse
|
|
5
|
-
from warnings import warn
|
|
6
5
|
|
|
7
6
|
from django.core.exceptions import ImproperlyConfigured
|
|
8
7
|
|
|
9
|
-
from wagtail.utils.deprecation import RemovedInWagtail70Warning
|
|
10
|
-
|
|
11
8
|
from .base import BaseBackend
|
|
12
9
|
|
|
13
10
|
logger = logging.getLogger("wagtail.frontendcache")
|
|
@@ -36,37 +33,12 @@ class CloudfrontBackend(BaseBackend):
|
|
|
36
33
|
"The setting 'WAGTAILFRONTENDCACHE' requires the object 'DISTRIBUTION_ID'."
|
|
37
34
|
)
|
|
38
35
|
|
|
39
|
-
# Add known hostnames for hostname validation (if not already defined)
|
|
40
|
-
# RemovedInWagtail70Warning
|
|
41
|
-
if isinstance(self.cloudfront_distribution_id, dict):
|
|
42
|
-
if "HOSTNAMES" in params:
|
|
43
|
-
self.hostnames.extend(self.cloudfront_distribution_id.keys())
|
|
44
|
-
else:
|
|
45
|
-
self.hostnames = list(self.cloudfront_distribution_id.keys())
|
|
46
|
-
|
|
47
36
|
def purge_batch(self, urls):
|
|
48
37
|
paths_by_distribution_id = defaultdict(set)
|
|
49
38
|
|
|
50
39
|
for url in urls:
|
|
51
40
|
url_parsed = urlparse(url)
|
|
52
|
-
distribution_id =
|
|
53
|
-
|
|
54
|
-
if isinstance(self.cloudfront_distribution_id, dict):
|
|
55
|
-
warn(
|
|
56
|
-
"Using a `DISTRIBUTION_ID` mapping is deprecated - use `HOSTNAMES` in combination with multiple backends instead.",
|
|
57
|
-
category=RemovedInWagtail70Warning,
|
|
58
|
-
)
|
|
59
|
-
host = url_parsed.hostname
|
|
60
|
-
if host in self.cloudfront_distribution_id:
|
|
61
|
-
distribution_id = self.cloudfront_distribution_id.get(host)
|
|
62
|
-
else:
|
|
63
|
-
logger.warning(
|
|
64
|
-
"Couldn't purge '%s' from CloudFront. Hostname '%s' not found in the DISTRIBUTION_ID mapping",
|
|
65
|
-
url,
|
|
66
|
-
host,
|
|
67
|
-
)
|
|
68
|
-
else:
|
|
69
|
-
distribution_id = self.cloudfront_distribution_id
|
|
41
|
+
distribution_id = self.cloudfront_distribution_id
|
|
70
42
|
|
|
71
43
|
if distribution_id:
|
|
72
44
|
paths_by_distribution_id[distribution_id].add(url_parsed.path)
|
|
@@ -18,8 +18,7 @@ from wagtail.contrib.frontend_cache.backends import (
|
|
|
18
18
|
)
|
|
19
19
|
from wagtail.contrib.frontend_cache.utils import get_backends
|
|
20
20
|
from wagtail.models import Page
|
|
21
|
-
from wagtail.test.testapp.models import EventIndex
|
|
22
|
-
from wagtail.utils.deprecation import RemovedInWagtail70Warning
|
|
21
|
+
from wagtail.test.testapp.models import EventIndex, EventPage
|
|
23
22
|
|
|
24
23
|
from .utils import (
|
|
25
24
|
PurgeBatch,
|
|
@@ -29,6 +28,16 @@ from .utils import (
|
|
|
29
28
|
purge_urls_from_cache,
|
|
30
29
|
)
|
|
31
30
|
|
|
31
|
+
EVENTPAGE_URLS = {
|
|
32
|
+
"http://localhost/events/final-event/",
|
|
33
|
+
"http://localhost/events/christmas/",
|
|
34
|
+
"http://localhost/events/saint-patrick/",
|
|
35
|
+
"http://localhost/events/tentative-unpublished-event/",
|
|
36
|
+
"http://localhost/events/someone-elses-event/",
|
|
37
|
+
"http://localhost/events/tentative-unpublished-event/",
|
|
38
|
+
"http://localhost/secret-plans/steal-underpants/",
|
|
39
|
+
}
|
|
40
|
+
|
|
32
41
|
|
|
33
42
|
class TestBackendConfiguration(SimpleTestCase):
|
|
34
43
|
def test_default(self):
|
|
@@ -331,45 +340,6 @@ class TestBackendConfiguration(SimpleTestCase):
|
|
|
331
340
|
}
|
|
332
341
|
)
|
|
333
342
|
|
|
334
|
-
@mock.patch(
|
|
335
|
-
"wagtail.contrib.frontend_cache.backends.cloudfront.CloudfrontBackend._create_invalidation"
|
|
336
|
-
)
|
|
337
|
-
def test_cloudfront_distribution_id_mapping(self, _create_invalidation):
|
|
338
|
-
backends = get_backends(
|
|
339
|
-
backend_settings={
|
|
340
|
-
"cloudfront": {
|
|
341
|
-
"BACKEND": "wagtail.contrib.frontend_cache.backends.CloudfrontBackend",
|
|
342
|
-
"DISTRIBUTION_ID": {
|
|
343
|
-
"www.wagtail.org": "frontend",
|
|
344
|
-
},
|
|
345
|
-
},
|
|
346
|
-
}
|
|
347
|
-
)
|
|
348
|
-
with self.assertWarnsMessage(
|
|
349
|
-
RemovedInWagtail70Warning,
|
|
350
|
-
"Using a `DISTRIBUTION_ID` mapping is deprecated - use `HOSTNAMES` in combination with multiple backends instead.",
|
|
351
|
-
):
|
|
352
|
-
backends.get("cloudfront").purge(
|
|
353
|
-
"http://www.wagtail.org/home/events/christmas/"
|
|
354
|
-
)
|
|
355
|
-
|
|
356
|
-
with self.assertWarnsMessage(
|
|
357
|
-
RemovedInWagtail70Warning,
|
|
358
|
-
"Using a `DISTRIBUTION_ID` mapping is deprecated - use `HOSTNAMES` in combination with multiple backends instead.",
|
|
359
|
-
):
|
|
360
|
-
backends.get("cloudfront").purge("http://torchbox.com/blog/")
|
|
361
|
-
|
|
362
|
-
_create_invalidation.assert_called_once_with(
|
|
363
|
-
"frontend", ["/home/events/christmas/"]
|
|
364
|
-
)
|
|
365
|
-
|
|
366
|
-
self.assertTrue(
|
|
367
|
-
backends.get("cloudfront").invalidates_hostname("www.wagtail.org")
|
|
368
|
-
)
|
|
369
|
-
self.assertFalse(
|
|
370
|
-
backends.get("cloudfront").invalidates_hostname("torchbox.com")
|
|
371
|
-
)
|
|
372
|
-
|
|
373
343
|
def test_multiple(self):
|
|
374
344
|
backends = get_backends(
|
|
375
345
|
backend_settings={
|
|
@@ -438,7 +408,12 @@ class MockCloudflareBackend(CloudflareBackend):
|
|
|
438
408
|
"varnish": {
|
|
439
409
|
"BACKEND": "wagtail.contrib.frontend_cache.tests.MockBackend",
|
|
440
410
|
},
|
|
441
|
-
}
|
|
411
|
+
},
|
|
412
|
+
CACHES={
|
|
413
|
+
"default": {
|
|
414
|
+
"BACKEND": "django.core.cache.backends.dummy.DummyCache",
|
|
415
|
+
}
|
|
416
|
+
},
|
|
442
417
|
)
|
|
443
418
|
class TestCachePurgingFunctions(TestCase):
|
|
444
419
|
fixtures = ["test.json"]
|
|
@@ -457,26 +432,74 @@ class TestCachePurgingFunctions(TestCase):
|
|
|
457
432
|
self.assertEqual(PURGED_URLS, {"http://localhost/foo", "http://localhost/bar"})
|
|
458
433
|
|
|
459
434
|
def test_purge_page_from_cache(self):
|
|
435
|
+
page = EventIndex.objects.get(url_path="/home/events/")
|
|
460
436
|
with self.captureOnCommitCallbacks(execute=True):
|
|
461
|
-
|
|
462
|
-
|
|
437
|
+
with self.assertNumQueries(1):
|
|
438
|
+
# Because no cache object is provided, a query is needed to
|
|
439
|
+
# fetch site root paths in order to derive page urls
|
|
440
|
+
purge_page_from_cache(page)
|
|
463
441
|
self.assertEqual(
|
|
464
|
-
PURGED_URLS,
|
|
442
|
+
PURGED_URLS,
|
|
443
|
+
{"http://localhost/events/", "http://localhost/events/past/"},
|
|
465
444
|
)
|
|
466
445
|
|
|
467
|
-
def
|
|
446
|
+
def test_purge_page_from_cache_with_shared_cache_object(self):
|
|
447
|
+
page = EventIndex.objects.get(url_path="/home/events/")
|
|
448
|
+
|
|
449
|
+
# Ensure site root paths are already cached, which should result in
|
|
450
|
+
# zero additional queries being incurred by this test
|
|
451
|
+
page._get_relevant_site_root_paths()
|
|
452
|
+
|
|
468
453
|
with self.captureOnCommitCallbacks(execute=True):
|
|
469
|
-
|
|
454
|
+
# Because site root paths are already available via the cache_object,
|
|
455
|
+
# no further queries should be needed to derive page urls
|
|
456
|
+
with self.assertNumQueries(0):
|
|
457
|
+
purge_page_from_cache(page, cache_object=page)
|
|
458
|
+
|
|
470
459
|
self.assertEqual(
|
|
471
|
-
PURGED_URLS,
|
|
460
|
+
PURGED_URLS,
|
|
461
|
+
{"http://localhost/events/", "http://localhost/events/past/"},
|
|
472
462
|
)
|
|
473
463
|
|
|
474
|
-
def
|
|
464
|
+
def test_purge_pages_from_cache(self):
|
|
465
|
+
pages = list(Page.objects.all().type(EventPage))
|
|
475
466
|
with self.captureOnCommitCallbacks(execute=True):
|
|
476
|
-
|
|
477
|
-
|
|
467
|
+
with self.assertNumQueries(1):
|
|
468
|
+
# Because no cache object is provided, a query is needed to
|
|
469
|
+
# fetch site root paths in order to derive page urls
|
|
470
|
+
purge_pages_from_cache(pages)
|
|
471
|
+
self.assertEqual(PURGED_URLS, EVENTPAGE_URLS)
|
|
472
|
+
|
|
473
|
+
def test_purge_pages_from_cache_with_shared_cache_object(self):
|
|
474
|
+
pages = list(Page.objects.all().type(EventPage))
|
|
475
|
+
|
|
476
|
+
# Use the first page as the cache object for the operation
|
|
477
|
+
cache_object = pages[0]
|
|
478
|
+
|
|
479
|
+
# Ensure site root paths are already cached, which should result in
|
|
480
|
+
# zero additional queries being incurred by this test
|
|
481
|
+
cache_object._get_relevant_site_root_paths()
|
|
482
|
+
|
|
483
|
+
with self.captureOnCommitCallbacks(execute=True):
|
|
484
|
+
# Because site root paths are already available via the cache_object,
|
|
485
|
+
# no further queries should be needed to derive page urls
|
|
486
|
+
with self.assertNumQueries(0):
|
|
487
|
+
purge_pages_from_cache(pages, cache_object=cache_object)
|
|
488
|
+
|
|
489
|
+
self.assertEqual(PURGED_URLS, EVENTPAGE_URLS)
|
|
490
|
+
|
|
491
|
+
def test_purge_batch(self):
|
|
492
|
+
page = EventIndex.objects.get(url_path="/home/events/")
|
|
493
|
+
batch = PurgeBatch()
|
|
494
|
+
|
|
495
|
+
# Because no cache object is provided, a query is needed to
|
|
496
|
+
# fetch site root paths in order to derive page urls
|
|
497
|
+
with self.assertNumQueries(1):
|
|
478
498
|
batch.add_page(page)
|
|
479
|
-
|
|
499
|
+
|
|
500
|
+
batch.add_url("http://localhost/foo")
|
|
501
|
+
|
|
502
|
+
with self.captureOnCommitCallbacks(execute=True):
|
|
480
503
|
batch.purge()
|
|
481
504
|
|
|
482
505
|
self.assertEqual(
|
|
@@ -488,6 +511,43 @@ class TestCachePurgingFunctions(TestCase):
|
|
|
488
511
|
},
|
|
489
512
|
)
|
|
490
513
|
|
|
514
|
+
def test_purge_batch_with_multiple_pages(self):
|
|
515
|
+
pages = list(Page.objects.all().type(EventPage))
|
|
516
|
+
batch = PurgeBatch()
|
|
517
|
+
|
|
518
|
+
# Because the batch has no cache object, a query is needed to
|
|
519
|
+
# fetch site root paths in order to derive page urls
|
|
520
|
+
with self.assertNumQueries(1):
|
|
521
|
+
batch.add_pages(pages)
|
|
522
|
+
|
|
523
|
+
with self.captureOnCommitCallbacks(execute=True):
|
|
524
|
+
batch.purge()
|
|
525
|
+
|
|
526
|
+
self.assertEqual(PURGED_URLS, EVENTPAGE_URLS)
|
|
527
|
+
|
|
528
|
+
def test_multiple_purge_batches_with_shared_cache_object(self):
|
|
529
|
+
pages = list(Page.objects.all().type(EventPage))
|
|
530
|
+
|
|
531
|
+
# Use the first page as the cache object for the batch
|
|
532
|
+
cache_object = pages[0]
|
|
533
|
+
|
|
534
|
+
# Ensure site root paths are already cached, which should result in
|
|
535
|
+
# zero additional queries being incurred by this test
|
|
536
|
+
cache_object._get_relevant_site_root_paths()
|
|
537
|
+
|
|
538
|
+
batch = PurgeBatch(cache_object=cache_object)
|
|
539
|
+
|
|
540
|
+
with self.assertNumQueries(0):
|
|
541
|
+
# Because site root paths are already available via the cache_object,
|
|
542
|
+
# no queries should be needed to derive page urls
|
|
543
|
+
batch.add_pages(pages)
|
|
544
|
+
|
|
545
|
+
with self.captureOnCommitCallbacks(execute=True):
|
|
546
|
+
batch.purge()
|
|
547
|
+
|
|
548
|
+
self.assertEqual(PURGED_URLS, EVENTPAGE_URLS)
|
|
549
|
+
PURGED_URLS.clear()
|
|
550
|
+
|
|
491
551
|
@override_settings(
|
|
492
552
|
WAGTAILFRONTENDCACHE={
|
|
493
553
|
"varnish": {
|