wagtail 6.1.2__py3-none-any.whl → 6.2rc1__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_for_translation.py +15 -1
- wagtail/admin/checks.py +20 -30
- wagtail/admin/forms/pages.py +10 -0
- wagtail/admin/icons.py +43 -0
- wagtail/admin/locale/ar/LC_MESSAGES/django.po +2 -2
- wagtail/admin/locale/be/LC_MESSAGES/django.po +7 -7
- wagtail/admin/locale/be/LC_MESSAGES/djangojs.po +3 -3
- wagtail/admin/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/ca/LC_MESSAGES/django.po +51 -50
- wagtail/admin/locale/cs/LC_MESSAGES/django.po +10 -8
- wagtail/admin/locale/de/LC_MESSAGES/django.po +49 -47
- wagtail/admin/locale/dv/LC_MESSAGES/django.po +8 -8
- wagtail/admin/locale/el/LC_MESSAGES/django.po +4 -4
- wagtail/admin/locale/en/LC_MESSAGES/django.po +405 -295
- wagtail/admin/locale/en/LC_MESSAGES/djangojs.po +21 -3
- wagtail/admin/locale/es/LC_MESSAGES/django.po +40 -39
- wagtail/admin/locale/es_419/LC_MESSAGES/django.po +8 -8
- wagtail/admin/locale/et/LC_MESSAGES/django.po +14 -12
- wagtail/admin/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/fa/LC_MESSAGES/django.po +93 -19
- wagtail/admin/locale/fa/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/fa/LC_MESSAGES/djangojs.po +5 -1
- wagtail/admin/locale/fi/LC_MESSAGES/django.po +18 -18
- wagtail/admin/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/fr/LC_MESSAGES/django.po +134 -46
- wagtail/admin/locale/gl/LC_MESSAGES/django.po +55 -54
- wagtail/admin/locale/hr_HR/LC_MESSAGES/django.po +13 -12
- wagtail/admin/locale/hr_HR/LC_MESSAGES/djangojs.po +2 -2
- wagtail/admin/locale/hu/LC_MESSAGES/django.po +45 -42
- wagtail/admin/locale/id_ID/LC_MESSAGES/django.po +6 -6
- wagtail/admin/locale/is_IS/LC_MESSAGES/django.po +53 -51
- wagtail/admin/locale/it/LC_MESSAGES/django.po +56 -55
- wagtail/admin/locale/ja/LC_MESSAGES/django.po +2 -2
- wagtail/admin/locale/ko/LC_MESSAGES/django.po +18 -17
- wagtail/admin/locale/lt/LC_MESSAGES/django.po +4 -4
- wagtail/admin/locale/nb/LC_MESSAGES/django.po +22 -22
- wagtail/admin/locale/nl/LC_MESSAGES/django.po +44 -41
- wagtail/admin/locale/pl/LC_MESSAGES/django.po +49 -47
- wagtail/admin/locale/pl/LC_MESSAGES/djangojs.po +3 -3
- wagtail/admin/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/pt_BR/LC_MESSAGES/django.po +46 -26
- wagtail/admin/locale/pt_PT/LC_MESSAGES/django.po +21 -20
- wagtail/admin/locale/ro/LC_MESSAGES/django.po +51 -50
- wagtail/admin/locale/ru/LC_MESSAGES/django.po +60 -59
- wagtail/admin/locale/ru/LC_MESSAGES/djangojs.po +3 -3
- wagtail/admin/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/sk_SK/LC_MESSAGES/django.po +15 -5
- wagtail/admin/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/sl/LC_MESSAGES/django.po +86 -39
- wagtail/admin/locale/sl/LC_MESSAGES/djangojs.po +2 -2
- wagtail/admin/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/sv/LC_MESSAGES/django.po +117 -41
- 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.po +2 -2
- wagtail/admin/locale/th/LC_MESSAGES/django.po +4 -4
- wagtail/admin/locale/tr/LC_MESSAGES/django.po +4 -4
- wagtail/admin/locale/tr_TR/LC_MESSAGES/django.po +4 -4
- wagtail/admin/locale/uk/LC_MESSAGES/django.po +11 -10
- wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/zh_Hans/LC_MESSAGES/django.po +84 -13
- wagtail/admin/locale/zh_Hant/LC_MESSAGES/django.po +2 -2
- wagtail/admin/menu.py +2 -2
- wagtail/admin/migrations/0004_editingsession.py +57 -0
- wagtail/admin/migrations/0005_editingsession_is_editing.py +18 -0
- wagtail/admin/models.py +36 -3
- wagtail/admin/rich_text/editors/draftail/__init__.py +2 -20
- wagtail/admin/static/wagtailadmin/css/core.css +1 -1
- wagtail/admin/static/wagtailadmin/js/bulk-actions.js +1 -1
- wagtail/admin/static/wagtailadmin/js/chooser-modal.js +1 -1
- wagtail/admin/static/wagtailadmin/js/chooser-widget-telepath.js +1 -1
- wagtail/admin/static/wagtailadmin/js/chooser-widget.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/date-time-chooser.js +1 -1
- wagtail/admin/static/wagtailadmin/js/draftail.js +1 -1
- wagtail/admin/static/wagtailadmin/js/expanding-formset.js +1 -1
- wagtail/admin/static/wagtailadmin/js/filtered-select.js +1 -1
- wagtail/admin/static/wagtailadmin/js/modal-workflow.js +1 -1
- wagtail/admin/static/wagtailadmin/js/page-chooser-modal.js +1 -1
- wagtail/admin/static/wagtailadmin/js/page-chooser-telepath.js +1 -1
- wagtail/admin/static/wagtailadmin/js/page-chooser.js +1 -1
- wagtail/admin/static/wagtailadmin/js/preview-panel.js +2 -1
- wagtail/admin/static/wagtailadmin/js/preview-panel.js.LICENSE.txt +11 -0
- wagtail/admin/static/wagtailadmin/js/privacy-switch.js +1 -1
- wagtail/admin/static/wagtailadmin/js/sidebar.js +1 -1
- wagtail/admin/static/wagtailadmin/js/task-chooser-modal.js +1 -1
- wagtail/admin/static/wagtailadmin/js/task-chooser.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/userbar.js +2 -1
- wagtail/admin/static/wagtailadmin/js/userbar.js.LICENSE.txt +11 -0
- wagtail/admin/static/wagtailadmin/js/vendor.js +1 -1
- wagtail/admin/static/wagtailadmin/js/vendor.js.LICENSE.txt +0 -12
- wagtail/admin/static/wagtailadmin/js/wagtailadmin.js +1 -1
- wagtail/admin/static/wagtailadmin/js/workflow-action.js +1 -1
- wagtail/admin/templates/wagtailadmin/collection_privacy/ancestor_privacy.html +2 -6
- wagtail/admin/templates/wagtailadmin/generic/index_results.html +1 -17
- wagtail/admin/templates/wagtailadmin/generic/listing_results.html +20 -1
- wagtail/admin/templates/wagtailadmin/home/workflow_objects_to_moderate.html +2 -11
- wagtail/admin/templates/wagtailadmin/page_privacy/ancestor_privacy.html +2 -6
- wagtail/admin/templates/wagtailadmin/page_privacy/no_privacy.html +2 -0
- wagtail/admin/templates/wagtailadmin/pages/_editor_js.html +0 -1
- wagtail/admin/templates/wagtailadmin/pages/action_menu/menu.html +1 -1
- wagtail/admin/templates/wagtailadmin/reports/aging_pages_results.html +54 -0
- wagtail/admin/templates/wagtailadmin/reports/base_page_report.html +1 -17
- wagtail/admin/templates/wagtailadmin/reports/base_page_report_results.html +10 -0
- wagtail/admin/templates/wagtailadmin/reports/base_report.html +1 -40
- wagtail/admin/templates/wagtailadmin/reports/base_report_results.html +1 -0
- wagtail/admin/templates/wagtailadmin/reports/listing/_list_page_report.html +21 -27
- wagtail/admin/templates/wagtailadmin/reports/listing/_list_page_types_usage.html +48 -54
- wagtail/admin/templates/wagtailadmin/reports/{locked_pages.html → locked_pages_results.html} +3 -3
- wagtail/admin/templates/wagtailadmin/reports/page_types_usage_results.html +10 -0
- wagtail/admin/templates/wagtailadmin/reports/site_history_results.html +53 -0
- wagtail/admin/templates/wagtailadmin/reports/workflow_results.html +74 -0
- wagtail/admin/templates/wagtailadmin/reports/workflow_tasks_results.html +56 -0
- wagtail/admin/templates/wagtailadmin/shared/_workflow_init.html +8 -44
- wagtail/admin/templates/wagtailadmin/shared/avatar.html +11 -1
- wagtail/admin/templates/wagtailadmin/shared/dialog/dialog.html +5 -4
- wagtail/admin/templates/wagtailadmin/shared/dropdown/dropdown_button.html +2 -1
- wagtail/admin/templates/wagtailadmin/shared/editing_sessions/list.html +132 -0
- wagtail/admin/templates/wagtailadmin/shared/editing_sessions/module.html +44 -0
- wagtail/admin/templates/wagtailadmin/shared/headers/slim_header.html +7 -1
- wagtail/admin/templates/wagtailadmin/shared/page_status_tag_new.html +1 -1
- wagtail/admin/templates/wagtailadmin/shared/side_panels/checks.html +32 -16
- wagtail/admin/templates/wagtailadmin/skeleton.html +1 -1
- wagtail/admin/templates/wagtailadmin/userbar/item_accessibility.html +9 -11
- wagtail/admin/templatetags/wagtailadmin_tags.py +13 -2
- wagtail/admin/tests/formats/en/__init__.py +0 -0
- wagtail/admin/tests/formats/en/formats.py +1 -0
- wagtail/admin/tests/pages/test_create_page.py +47 -0
- wagtail/admin/tests/pages/test_edit_page.py +10 -8
- wagtail/admin/tests/pages/test_parent_page_chooser_view.py +45 -1
- wagtail/admin/tests/test_checks.py +53 -3
- wagtail/admin/tests/test_collections_views.py +62 -1
- wagtail/admin/tests/test_edit_handlers.py +37 -0
- wagtail/admin/tests/test_editing_sessions.py +1336 -0
- wagtail/admin/tests/test_icon_sprite.py +12 -21
- wagtail/admin/tests/test_page_chooser.py +309 -7
- wagtail/admin/tests/test_privacy.py +82 -0
- wagtail/admin/tests/test_reports_views.py +464 -70
- wagtail/admin/tests/test_userbar.py +93 -6
- wagtail/admin/tests/test_workflows.py +223 -33
- wagtail/admin/tests/viewsets/test_model_viewset.py +151 -2
- wagtail/admin/ui/editing_sessions.py +57 -0
- wagtail/admin/urls/__init__.py +9 -15
- wagtail/admin/urls/editing_sessions.py +17 -0
- wagtail/admin/urls/reports.py +33 -1
- wagtail/admin/userbar.py +77 -20
- wagtail/admin/views/chooser.py +49 -22
- wagtail/admin/views/collections.py +0 -11
- wagtail/admin/views/editing_sessions.py +193 -0
- wagtail/admin/views/generic/__init__.py +1 -0
- wagtail/admin/views/generic/base.py +3 -2
- wagtail/admin/views/generic/history.py +9 -3
- wagtail/admin/views/generic/mixins.py +44 -3
- wagtail/admin/views/generic/models.py +46 -72
- wagtail/admin/views/generic/permissions.py +20 -10
- wagtail/admin/views/home.py +2 -31
- wagtail/admin/views/page_privacy.py +20 -5
- wagtail/admin/views/pages/choose_parent.py +62 -0
- wagtail/admin/views/pages/edit.py +28 -0
- wagtail/admin/views/reports/aging_pages.py +6 -10
- wagtail/admin/views/reports/audit_logging.py +13 -42
- wagtail/admin/views/reports/base.py +31 -4
- wagtail/admin/views/reports/locked_pages.py +5 -8
- wagtail/admin/views/reports/page_types_usage.py +6 -10
- wagtail/admin/views/reports/workflows.py +36 -12
- wagtail/admin/viewsets/base.py +8 -3
- wagtail/admin/viewsets/chooser.py +1 -1
- wagtail/admin/viewsets/model.py +26 -1
- wagtail/admin/wagtail_hooks.py +2 -1
- wagtail/api/v2/filters.py +6 -0
- wagtail/api/v2/tests/test_documents.py +1 -1
- wagtail/api/v2/tests/test_images.py +1 -1
- wagtail/api/v2/tests/test_pages.py +11 -1
- wagtail/api/v2/utils.py +2 -2
- wagtail/blocks/base.py +35 -12
- wagtail/blocks/definition_lookup.py +85 -0
- wagtail/blocks/list_block.py +12 -0
- wagtail/blocks/migrations/migrate_operation.py +2 -0
- wagtail/blocks/stream_block.py +19 -0
- wagtail/blocks/struct_block.py +19 -0
- wagtail/contrib/forms/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/forms/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/hr_HR/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/forms/locale/pl/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/forms/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/pt_BR/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/forms/locale/ru/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/forms/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/frontend_cache/backends/__init__.py +5 -0
- wagtail/contrib/frontend_cache/backends/azure.py +179 -0
- wagtail/contrib/frontend_cache/backends/base.py +28 -0
- wagtail/contrib/frontend_cache/backends/cloudflare.py +114 -0
- wagtail/contrib/frontend_cache/backends/cloudfront.py +99 -0
- wagtail/contrib/frontend_cache/backends/http.py +64 -0
- wagtail/contrib/frontend_cache/tests.py +59 -17
- wagtail/contrib/frontend_cache/utils.py +26 -8
- wagtail/contrib/redirects/filters.py +15 -1
- wagtail/contrib/redirects/locale/ar/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/redirects/locale/bg/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/ca/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/cs/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/cy/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/redirects/locale/de/LC_MESSAGES/django.po +5 -4
- wagtail/contrib/redirects/locale/el/LC_MESSAGES/django.po +7 -7
- wagtail/contrib/redirects/locale/en/LC_MESSAGES/django.po +37 -72
- wagtail/contrib/redirects/locale/es/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/redirects/locale/et/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/fa/LC_MESSAGES/django.po +18 -5
- wagtail/contrib/redirects/locale/fi/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/redirects/locale/fr/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/gl/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/hr_HR/LC_MESSAGES/django.po +8 -8
- wagtail/contrib/redirects/locale/hu/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/redirects/locale/id_ID/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/is_IS/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/redirects/locale/it/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/ja/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/redirects/locale/ko/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/lt/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/mn/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/nb/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/nl/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/pl/LC_MESSAGES/django.po +9 -9
- wagtail/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po +5 -5
- wagtail/contrib/redirects/locale/pt_PT/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/ro/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/ru/LC_MESSAGES/django.po +7 -7
- wagtail/contrib/redirects/locale/sk_SK/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/sl/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/redirects/locale/sr/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/redirects/locale/sv/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/tet/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/th/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/tr/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/tr_TR/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/uk/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/zh/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/locale/zh_Hant/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/redirects/models.py +6 -5
- wagtail/contrib/redirects/templates/wagtailredirects/edit.html +1 -38
- wagtail/contrib/redirects/tests/test_redirects.py +141 -1
- wagtail/contrib/redirects/urls.py +1 -2
- wagtail/contrib/redirects/views.py +39 -80
- wagtail/contrib/routable_page/models.py +6 -4
- wagtail/contrib/routable_page/tests.py +11 -0
- wagtail/contrib/search_promotions/locale/ar/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/be/LC_MESSAGES/django.po +7 -7
- wagtail/contrib/search_promotions/locale/ca/LC_MESSAGES/django.po +8 -8
- wagtail/contrib/search_promotions/locale/cs/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/search_promotions/locale/cy/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/de/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/search_promotions/locale/el/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/search_promotions/locale/es/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/search_promotions/locale/et/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/fa/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/fi/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/fr/LC_MESSAGES/django.po +9 -6
- wagtail/contrib/search_promotions/locale/gl/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/search_promotions/locale/hr_HR/LC_MESSAGES/django.po +8 -8
- wagtail/contrib/search_promotions/locale/hu/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/id_ID/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/is_IS/LC_MESSAGES/django.po +8 -8
- wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/search_promotions/locale/ja/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/ko/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/lt/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/search_promotions/locale/nb/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/nl/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/search_promotions/locale/pl/LC_MESSAGES/django.po +9 -9
- wagtail/contrib/search_promotions/locale/pt_BR/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/pt_PT/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/ro/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/ru/LC_MESSAGES/django.po +9 -9
- wagtail/contrib/search_promotions/locale/sk_SK/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/sl/LC_MESSAGES/django.po +62 -8
- wagtail/contrib/search_promotions/locale/sr/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/search_promotions/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/sv/LC_MESSAGES/django.po +9 -6
- wagtail/contrib/search_promotions/locale/th/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/tr/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/tr_TR/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/uk/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/search_promotions/locale/zh_Hans/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/search_promotions/locale/zh_Hant/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/settings/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/settings/locale/en/LC_MESSAGES/django.po +4 -4
- wagtail/contrib/settings/locale/hr_HR/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/settings/locale/pl/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/settings/locale/pt_BR/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/settings/locale/ru/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/settings/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/settings/locale/sk_SK/LC_MESSAGES/django.po +10 -1
- wagtail/contrib/settings/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/settings/locale/sr/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/simple_translation/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/simple_translation/locale/en/LC_MESSAGES/django.po +5 -1
- wagtail/contrib/simple_translation/locale/hr_HR/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/simple_translation/locale/pl/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/simple_translation/locale/pt_BR/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/simple_translation/locale/ru/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/simple_translation/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/simple_translation/models.py +2 -1
- wagtail/contrib/styleguide/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/styleguide/locale/en/LC_MESSAGES/django.po +7 -7
- wagtail/contrib/styleguide/locale/hr_HR/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/styleguide/locale/pl/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/styleguide/locale/ru/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/styleguide/locale/sk_SK/LC_MESSAGES/django.po +5 -1
- wagtail/contrib/styleguide/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/styleguide/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/styleguide/locale/zh_Hans/LC_MESSAGES/django.po +3 -0
- wagtail/contrib/table_block/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/table_block/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/table_block/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/table_block/locale/fr/LC_MESSAGES/django.po +27 -1
- wagtail/contrib/table_block/locale/hr_HR/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/table_block/locale/pl/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/table_block/locale/ru/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/table_block/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/table_block/locale/sl/LC_MESSAGES/django.po +29 -3
- wagtail/contrib/table_block/static/table_block/js/table.js +1 -1
- wagtail/contrib/typed_table_block/blocks.py +19 -0
- wagtail/contrib/typed_table_block/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/typed_table_block/locale/en/LC_MESSAGES/django.po +10 -10
- wagtail/contrib/typed_table_block/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/typed_table_block/locale/fr/LC_MESSAGES/django.po +12 -1
- wagtail/contrib/typed_table_block/locale/pl/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/typed_table_block/locale/pt_BR/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/locale/ru/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/typed_table_block/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/typed_table_block/locale/sl/LC_MESSAGES/django.po +14 -4
- wagtail/contrib/typed_table_block/static/typed_table_block/js/typed_table_block.js +1 -1
- wagtail/contrib/typed_table_block/tests.py +38 -0
- wagtail/coreutils.py +1 -1
- wagtail/documents/__init__.py +1 -1
- wagtail/documents/locale/ar/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/be/LC_MESSAGES/django.po +11 -11
- wagtail/documents/locale/bg/LC_MESSAGES/django.po +4 -4
- wagtail/documents/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/ca/LC_MESSAGES/django.po +12 -11
- wagtail/documents/locale/cs/LC_MESSAGES/django.po +6 -6
- wagtail/documents/locale/de/LC_MESSAGES/django.po +10 -8
- wagtail/documents/locale/el/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/en/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/es/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/et/LC_MESSAGES/django.po +6 -6
- wagtail/documents/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/fa/LC_MESSAGES/django.po +17 -8
- wagtail/documents/locale/fi/LC_MESSAGES/django.po +10 -10
- wagtail/documents/locale/fr/LC_MESSAGES/django.po +6 -6
- wagtail/documents/locale/gl/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/hr_HR/LC_MESSAGES/django.po +14 -14
- wagtail/documents/locale/hu/LC_MESSAGES/django.po +12 -12
- wagtail/documents/locale/id_ID/LC_MESSAGES/django.po +6 -6
- wagtail/documents/locale/is_IS/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/it/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/ja/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/ko/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/lt/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/mi/LC_MESSAGES/django.po +10 -10
- wagtail/documents/locale/mn/LC_MESSAGES/django.po +5 -4
- wagtail/documents/locale/nb/LC_MESSAGES/django.po +6 -6
- wagtail/documents/locale/nl/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/pl/LC_MESSAGES/django.po +11 -11
- wagtail/documents/locale/pt_BR/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/pt_PT/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/ro/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/ru/LC_MESSAGES/django.po +9 -9
- wagtail/documents/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/sk_SK/LC_MESSAGES/django.po +55 -12
- wagtail/documents/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/sl/LC_MESSAGES/django.po +30 -10
- wagtail/documents/locale/sr/LC_MESSAGES/django.po +2 -2
- wagtail/documents/locale/sv/LC_MESSAGES/django.po +6 -6
- wagtail/documents/locale/th/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/tr/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/tr_TR/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/uk/LC_MESSAGES/django.po +8 -8
- wagtail/documents/locale/zh/LC_MESSAGES/django.po +2 -2
- wagtail/documents/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/zh_Hans/LC_MESSAGES/django.po +11 -5
- wagtail/documents/locale/zh_Hant/LC_MESSAGES/django.po +4 -4
- wagtail/documents/models.py +5 -1
- wagtail/documents/static/wagtaildocs/js/document-chooser-modal.js +1 -1
- wagtail/documents/static/wagtaildocs/js/document-chooser-telepath.js +1 -1
- wagtail/documents/static/wagtaildocs/js/document-chooser.js +1 -1
- wagtail/documents/tests/test_models.py +5 -1
- wagtail/embeds/apps.py +2 -0
- wagtail/embeds/embeds.py +12 -14
- wagtail/embeds/finders/__init__.py +2 -0
- wagtail/embeds/finders/facebook.py +17 -33
- wagtail/embeds/finders/instagram.py +19 -16
- wagtail/embeds/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/embeds/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/embeds/locale/hr_HR/LC_MESSAGES/django.po +2 -2
- wagtail/embeds/locale/pl/LC_MESSAGES/django.po +3 -3
- wagtail/embeds/locale/ru/LC_MESSAGES/django.po +3 -3
- wagtail/embeds/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/embeds/signal_handlers.py +13 -0
- wagtail/embeds/tests/test_embeds.py +7 -7
- wagtail/fields.py +58 -14
- wagtail/images/__init__.py +1 -1
- wagtail/images/locale/ar/LC_MESSAGES/django.po +6 -6
- wagtail/images/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/images/locale/ca/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/cs/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/cy/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/de/LC_MESSAGES/django.po +6 -6
- wagtail/images/locale/el/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/en/LC_MESSAGES/django.po +34 -34
- wagtail/images/locale/es/LC_MESSAGES/django.po +10 -10
- wagtail/images/locale/et/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/fa/LC_MESSAGES/django.po +28 -9
- wagtail/images/locale/fi/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/fr/LC_MESSAGES/django.po +6 -6
- wagtail/images/locale/gl/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/hr_HR/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/hu/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/id_ID/LC_MESSAGES/django.po +6 -6
- wagtail/images/locale/is_IS/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/it/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/ja/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/ko/LC_MESSAGES/django.po +6 -6
- wagtail/images/locale/lt/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/nb/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/nl/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/pl/LC_MESSAGES/django.po +11 -11
- wagtail/images/locale/pt_BR/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/pt_PT/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/ro/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/ru/LC_MESSAGES/django.po +11 -11
- wagtail/images/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/sk_SK/LC_MESSAGES/django.po +23 -8
- wagtail/images/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/sl/LC_MESSAGES/django.po +44 -12
- wagtail/images/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/sv/LC_MESSAGES/django.po +20 -8
- wagtail/images/locale/tet/LC_MESSAGES/django.po +4 -4
- wagtail/images/locale/th/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/tr/LC_MESSAGES/django.po +6 -6
- wagtail/images/locale/tr_TR/LC_MESSAGES/django.po +6 -6
- wagtail/images/locale/uk/LC_MESSAGES/django.po +8 -8
- wagtail/images/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/zh_Hans/LC_MESSAGES/django.po +49 -5
- wagtail/images/locale/zh_Hant/LC_MESSAGES/django.po +4 -4
- wagtail/images/models.py +3 -0
- wagtail/images/static/wagtailimages/js/image-chooser-modal.js +1 -1
- wagtail/images/static/wagtailimages/js/image-chooser-telepath.js +1 -1
- wagtail/images/static/wagtailimages/js/image-chooser.js +1 -1
- wagtail/images/templates/wagtailimages/images/edit.html +4 -4
- wagtail/images/tests/test_admin_views.py +58 -2
- wagtail/images/tests/test_image_operations.py +12 -0
- wagtail/images/tests/tests.py +27 -2
- wagtail/images/views/chooser.py +6 -1
- wagtail/images/views/images.py +7 -3
- wagtail/images/views/serve.py +1 -0
- wagtail/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/locale/en/LC_MESSAGES/django.po +84 -80
- wagtail/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/fa/LC_MESSAGES/django.po +3 -0
- wagtail/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/fr/LC_MESSAGES/django.po +23 -4
- wagtail/locale/hr_HR/LC_MESSAGES/django.po +2 -2
- wagtail/locale/pl/LC_MESSAGES/django.po +3 -3
- wagtail/locale/pt_BR/LC_MESSAGES/django.po +1 -1
- wagtail/locale/ru/LC_MESSAGES/django.po +3 -3
- wagtail/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/sv/LC_MESSAGES/django.po +11 -2
- wagtail/locales/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/locales/locale/en/LC_MESSAGES/django.po +2 -2
- wagtail/locales/locale/hr_HR/LC_MESSAGES/django.po +2 -2
- wagtail/locales/locale/pl/LC_MESSAGES/django.po +3 -3
- wagtail/locales/locale/ru/LC_MESSAGES/django.po +3 -3
- wagtail/locales/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/locales/tests.py +16 -0
- wagtail/locales/wagtail_hooks.py +0 -9
- wagtail/migrations/0094_alter_page_locale.py +19 -0
- wagtail/models/__init__.py +11 -5
- wagtail/models/i18n.py +6 -1
- wagtail/project_template/requirements.txt +1 -1
- wagtail/search/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/search/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/search/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/search/locale/fa/LC_MESSAGES/django.po +24 -0
- wagtail/search/locale/hr_HR/LC_MESSAGES/django.po +2 -2
- wagtail/search/locale/pl/LC_MESSAGES/django.po +3 -3
- wagtail/search/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- wagtail/search/locale/pt_BR/LC_MESSAGES/django.po +2 -2
- wagtail/search/locale/ru/LC_MESSAGES/django.po +3 -3
- wagtail/search/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/search/tests/test_queries.py +24 -0
- wagtail/search/utils.py +6 -12
- wagtail/signals.py +4 -0
- wagtail/sites/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/sites/locale/en/LC_MESSAGES/django.po +2 -2
- wagtail/sites/locale/hr_HR/LC_MESSAGES/django.po +2 -2
- wagtail/sites/locale/pl/LC_MESSAGES/django.po +3 -3
- wagtail/sites/locale/ru/LC_MESSAGES/django.po +3 -3
- wagtail/sites/locale/sl/LC_MESSAGES/django.po +2 -2
- wagtail/sites/locale/sr/LC_MESSAGES/django.po +2 -2
- wagtail/sites/tests.py +15 -0
- wagtail/sites/wagtail_hooks.py +0 -9
- wagtail/snippets/locale/be/LC_MESSAGES/django.po +3 -3
- wagtail/snippets/locale/ca/LC_MESSAGES/django.po +6 -6
- wagtail/snippets/locale/de/LC_MESSAGES/django.po +5 -5
- wagtail/snippets/locale/en/LC_MESSAGES/django.po +9 -9
- wagtail/snippets/locale/es/LC_MESSAGES/django.po +6 -6
- wagtail/snippets/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/fa/LC_MESSAGES/django.po +17 -1
- wagtail/snippets/locale/fr/LC_MESSAGES/django.po +5 -5
- wagtail/snippets/locale/gl/LC_MESSAGES/django.po +6 -6
- wagtail/snippets/locale/hr_HR/LC_MESSAGES/django.po +8 -8
- wagtail/snippets/locale/hu/LC_MESSAGES/django.po +7 -7
- wagtail/snippets/locale/is_IS/LC_MESSAGES/django.po +5 -5
- wagtail/snippets/locale/it/LC_MESSAGES/django.po +5 -5
- wagtail/snippets/locale/ko/LC_MESSAGES/django.po +6 -6
- wagtail/snippets/locale/nb/LC_MESSAGES/django.po +6 -6
- wagtail/snippets/locale/nl/LC_MESSAGES/django.po +8 -8
- wagtail/snippets/locale/pl/LC_MESSAGES/django.po +9 -9
- wagtail/snippets/locale/pt_BR/LC_MESSAGES/django.po +1 -1
- wagtail/snippets/locale/ro/LC_MESSAGES/django.po +6 -6
- wagtail/snippets/locale/ru/LC_MESSAGES/django.po +8 -8
- wagtail/snippets/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/sk_SK/LC_MESSAGES/django.po +3 -0
- wagtail/snippets/locale/sl/LC_MESSAGES/django.po +8 -8
- wagtail/snippets/locale/sr/LC_MESSAGES/django.po +2 -2
- wagtail/snippets/locale/sv/LC_MESSAGES/django.po +6 -6
- wagtail/snippets/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/zh_Hans/LC_MESSAGES/django.po +40 -1
- wagtail/snippets/permissions.py +5 -3
- 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/menu.html +1 -1
- wagtail/snippets/tests/test_snippets.py +78 -12
- wagtail/snippets/tests/test_viewset.py +22 -0
- wagtail/snippets/views/snippets.py +19 -14
- wagtail/snippets/wagtail_hooks.py +2 -10
- wagtail/templatetags/wagtailcore_tags.py +3 -0
- wagtail/test/dummy_external_storage.py +1 -1
- wagtail/test/i18n/migrations/0003_alter_clusterabletestmodel_locale_and_more.py +40 -0
- wagtail/test/routablepage/models.py +4 -0
- wagtail/test/snippets/migrations/0012_alter_translatablesnippet_locale.py +20 -0
- wagtail/test/testapp/migrations/0038_sociallink.py +52 -0
- wagtail/test/testapp/migrations/0039_alter_eventcategory_locale_and_more.py +45 -0
- wagtail/test/testapp/models.py +24 -0
- wagtail/test/testapp/views.py +1 -0
- wagtail/test/testapp/wagtail_hooks.py +9 -0
- wagtail/test/urls_multilang.py +6 -1
- wagtail/test/urls_multilang_non_root.py +11 -0
- wagtail/tests/streamfield_migrations/test_migrations.py +53 -12
- wagtail/tests/test_audit_log.py +72 -2
- wagtail/tests/test_blocks.py +103 -0
- wagtail/tests/test_signals.py +49 -2
- wagtail/tests/test_streamfield.py +153 -0
- wagtail/tests/test_utils.py +42 -1
- wagtail/tests/tests.py +5 -0
- wagtail/users/apps.py +1 -0
- wagtail/users/forms.py +7 -0
- wagtail/users/locale/ar/LC_MESSAGES/django.po +4 -4
- wagtail/users/locale/be/LC_MESSAGES/django.po +9 -9
- wagtail/users/locale/ca/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/cs/LC_MESSAGES/django.po +6 -6
- wagtail/users/locale/cy/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/de/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/el/LC_MESSAGES/django.po +4 -4
- wagtail/users/locale/en/LC_MESSAGES/django.po +55 -50
- wagtail/users/locale/es/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/et/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/fa/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/fa/LC_MESSAGES/django.po +69 -7
- wagtail/users/locale/fi/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/fr/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/fr/LC_MESSAGES/django.po +52 -11
- wagtail/users/locale/gl/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/hr_HR/LC_MESSAGES/django.po +10 -10
- wagtail/users/locale/hu/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/id_ID/LC_MESSAGES/django.po +4 -4
- wagtail/users/locale/is_IS/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/it/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/ja/LC_MESSAGES/django.po +4 -4
- wagtail/users/locale/ko/LC_MESSAGES/django.po +4 -4
- wagtail/users/locale/lt/LC_MESSAGES/django.po +4 -4
- wagtail/users/locale/lv/LC_MESSAGES/django.po +4 -4
- wagtail/users/locale/mn/LC_MESSAGES/django.po +5 -4
- wagtail/users/locale/nb/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/nl/LC_MESSAGES/django.po +6 -6
- wagtail/users/locale/pl/LC_MESSAGES/django.po +9 -9
- wagtail/users/locale/pt_BR/LC_MESSAGES/django.po +9 -9
- wagtail/users/locale/pt_PT/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/ro/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/ru/LC_MESSAGES/django.po +11 -11
- wagtail/users/locale/sk_SK/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/sk_SK/LC_MESSAGES/django.po +12 -5
- wagtail/users/locale/sl/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/sl/LC_MESSAGES/django.po +56 -12
- wagtail/users/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/sv/LC_MESSAGES/django.po +49 -10
- wagtail/users/locale/tet/LC_MESSAGES/django.po +4 -4
- wagtail/users/locale/th/LC_MESSAGES/django.po +4 -4
- wagtail/users/locale/tr/LC_MESSAGES/django.po +4 -4
- wagtail/users/locale/tr_TR/LC_MESSAGES/django.po +4 -4
- wagtail/users/locale/uk/LC_MESSAGES/django.po +8 -8
- wagtail/users/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/zh_Hans/LC_MESSAGES/django.po +49 -5
- wagtail/users/locale/zh_Hant/LC_MESSAGES/django.po +2 -2
- wagtail/users/models.py +1 -0
- wagtail/users/templates/wagtailusers/groups/includes/formatted_permissions.html +3 -2
- wagtail/users/templatetags/wagtailusers_tags.py +9 -0
- wagtail/users/tests/__init__.py +7 -1
- wagtail/users/tests/test_admin_views.py +117 -32
- wagtail/users/views/groups.py +4 -0
- wagtail/users/views/users.py +58 -14
- wagtail/users/wagtail_hooks.py +7 -123
- wagtail/utils/utils.py +27 -0
- wagtail/utils/version.py +5 -2
- wagtail-6.2rc1.dist-info/METADATA +78 -0
- {wagtail-6.1.2.dist-info → wagtail-6.2rc1.dist-info}/RECORD +634 -607
- {wagtail-6.1.2.dist-info → wagtail-6.2rc1.dist-info}/WHEEL +1 -1
- wagtail/admin/templates/wagtailadmin/reports/aging_pages.html +0 -58
- wagtail/admin/templates/wagtailadmin/reports/page_types_usage.html +0 -18
- wagtail/admin/templates/wagtailadmin/reports/site_history.html +0 -57
- wagtail/admin/templates/wagtailadmin/reports/workflow.html +0 -81
- wagtail/admin/templates/wagtailadmin/reports/workflow_tasks.html +0 -63
- wagtail/contrib/frontend_cache/backends.py +0 -400
- wagtail/contrib/redirects/templates/wagtailredirects/list.html +0 -43
- wagtail/contrib/redirects/templates/wagtailredirects/reports/redirects_report.html +0 -14
- wagtail/contrib/redirects/tests/test_reports_view.py +0 -82
- wagtail-6.1.2.dist-info/METADATA +0 -78
- {wagtail-6.1.2.dist-info → wagtail-6.2rc1.dist-info}/LICENSE +0 -0
- {wagtail-6.1.2.dist-info → wagtail-6.2rc1.dist-info}/entry_points.txt +0 -0
- {wagtail-6.1.2.dist-info → wagtail-6.2rc1.dist-info}/top_level.txt +0 -0
|
@@ -189,11 +189,11 @@ msgstr ""
|
|
|
189
189
|
|
|
190
190
|
#, python-format
|
|
191
191
|
msgid ""
|
|
192
|
-
"No redirects have been created. Why not <a
|
|
193
|
-
"
|
|
192
|
+
"No redirects have been created. Why not <a "
|
|
193
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
194
194
|
msgstr ""
|
|
195
|
-
"Er zijn nog geen doorverwijzingen aangemaakt. Waarom <a
|
|
196
|
-
"
|
|
195
|
+
"Er zijn nog geen doorverwijzingen aangemaakt. Waarom <a "
|
|
196
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">voeg je er niet een toe</a>?"
|
|
197
197
|
|
|
198
198
|
msgid "Site"
|
|
199
199
|
msgstr "Site"
|
|
@@ -25,9 +25,9 @@ msgstr ""
|
|
|
25
25
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
26
26
|
"Content-Transfer-Encoding: 8bit\n"
|
|
27
27
|
"Language: pl\n"
|
|
28
|
-
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) &&
|
|
29
|
-
"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 &&
|
|
30
|
-
"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
|
28
|
+
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && "
|
|
29
|
+
"(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && "
|
|
30
|
+
"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
|
31
31
|
|
|
32
32
|
msgid "Wagtail redirects"
|
|
33
33
|
msgstr "Przekierowania Wagtail"
|
|
@@ -189,16 +189,16 @@ msgstr "Kontynuuj"
|
|
|
189
189
|
#, python-format
|
|
190
190
|
msgid "Sorry, no redirects match \"<em>%(query_string)s</em>\""
|
|
191
191
|
msgstr ""
|
|
192
|
-
"Przepraszamy, żadne przekierowanie nie pasuje do \"<em>%(query_string)s</
|
|
193
|
-
"
|
|
192
|
+
"Przepraszamy, żadne przekierowanie nie pasuje do \"<em>%(query_string)s</"
|
|
193
|
+
"em>\""
|
|
194
194
|
|
|
195
195
|
#, python-format
|
|
196
196
|
msgid ""
|
|
197
|
-
"No redirects have been created. Why not <a
|
|
198
|
-
"
|
|
197
|
+
"No redirects have been created. Why not <a "
|
|
198
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
199
199
|
msgstr ""
|
|
200
|
-
"Nie zostały stworzone żadne przekierowania. Czemu nie <a
|
|
201
|
-
"
|
|
200
|
+
"Nie zostały stworzone żadne przekierowania. Czemu nie <a "
|
|
201
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">dodać jakiegoś</a>?"
|
|
202
202
|
|
|
203
203
|
msgid "Site"
|
|
204
204
|
msgstr "Serwis"
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
# Iuri L. Machado, 2021-2022
|
|
12
12
|
# João Luiz Lorencetti <me@dirtycoder.net>, 2016
|
|
13
13
|
# Luiz Boaretto <lboaretto@gmail.com>, 2018
|
|
14
|
-
# Rodrigo de Almeida Sottomaior Macedo <sottomaiormacedotec@
|
|
14
|
+
# Rodrigo de Almeida Sottomaior Macedo <sottomaiormacedotec@sottomaiormacedo.tech>, 2022
|
|
15
15
|
# Thiago Cangussu <cangussu.thg@gmail.com>, 2014
|
|
16
16
|
# Thiago Cangussu <cng.thg@gmail.com>, 2014
|
|
17
17
|
msgid ""
|
|
@@ -196,11 +196,11 @@ msgstr ""
|
|
|
196
196
|
|
|
197
197
|
#, python-format
|
|
198
198
|
msgid ""
|
|
199
|
-
"No redirects have been created. Why not <a
|
|
200
|
-
"
|
|
199
|
+
"No redirects have been created. Why not <a "
|
|
200
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
201
201
|
msgstr ""
|
|
202
|
-
"Não há redirecionamentos criados. Por que não foi <a
|
|
203
|
-
"
|
|
202
|
+
"Não há redirecionamentos criados. Por que não foi <a "
|
|
203
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">adicionado</a>?"
|
|
204
204
|
|
|
205
205
|
msgid "Site"
|
|
206
206
|
msgstr "Site"
|
|
@@ -179,11 +179,11 @@ msgstr ""
|
|
|
179
179
|
|
|
180
180
|
#, python-format
|
|
181
181
|
msgid ""
|
|
182
|
-
"No redirects have been created. Why not <a
|
|
183
|
-
"
|
|
182
|
+
"No redirects have been created. Why not <a "
|
|
183
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
184
184
|
msgstr ""
|
|
185
|
-
"Ainda não foi criado nenhum redirecionamento. Que tal <a
|
|
186
|
-
"
|
|
185
|
+
"Ainda não foi criado nenhum redirecionamento. Que tal <a "
|
|
186
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">adicionar um</a>?"
|
|
187
187
|
|
|
188
188
|
msgid "Site"
|
|
189
189
|
msgstr "Site"
|
|
@@ -187,11 +187,11 @@ msgstr ""
|
|
|
187
187
|
|
|
188
188
|
#, python-format
|
|
189
189
|
msgid ""
|
|
190
|
-
"No redirects have been created. Why not <a
|
|
191
|
-
"
|
|
190
|
+
"No redirects have been created. Why not <a "
|
|
191
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
192
192
|
msgstr ""
|
|
193
|
-
"Nu a fost creată nici o redirecție. De ce să nu <a
|
|
194
|
-
"
|
|
193
|
+
"Nu a fost creată nici o redirecție. De ce să nu <a "
|
|
194
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">adăugați una</a>?"
|
|
195
195
|
|
|
196
196
|
msgid "Site"
|
|
197
197
|
msgstr "Sait"
|
|
@@ -24,9 +24,9 @@ msgstr ""
|
|
|
24
24
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
25
25
|
"Content-Transfer-Encoding: 8bit\n"
|
|
26
26
|
"Language: ru\n"
|
|
27
|
-
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 &&
|
|
28
|
-
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) ||
|
|
29
|
-
"%100>=11 && n%100<=14)? 2 : 3);\n"
|
|
27
|
+
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
|
28
|
+
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
|
|
29
|
+
"(n%100>=11 && n%100<=14)? 2 : 3);\n"
|
|
30
30
|
|
|
31
31
|
msgid "Wagtail redirects"
|
|
32
32
|
msgstr "Перенаправления Wagtail"
|
|
@@ -192,11 +192,11 @@ msgstr ""
|
|
|
192
192
|
|
|
193
193
|
#, python-format
|
|
194
194
|
msgid ""
|
|
195
|
-
"No redirects have been created. Why not <a
|
|
196
|
-
"
|
|
195
|
+
"No redirects have been created. Why not <a "
|
|
196
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
197
197
|
msgstr ""
|
|
198
|
-
"Перенаправления еще не созданы. Почему бы не <a
|
|
199
|
-
"
|
|
198
|
+
"Перенаправления еще не созданы. Почему бы не <a "
|
|
199
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">добавить одно</a>?"
|
|
200
200
|
|
|
201
201
|
msgid "Site"
|
|
202
202
|
msgstr "Сайт"
|
|
@@ -114,11 +114,11 @@ msgstr ""
|
|
|
114
114
|
|
|
115
115
|
#, python-format
|
|
116
116
|
msgid ""
|
|
117
|
-
"No redirects have been created. Why not <a
|
|
118
|
-
"
|
|
117
|
+
"No redirects have been created. Why not <a "
|
|
118
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
119
119
|
msgstr ""
|
|
120
|
-
"Zatiaľ neboli vytvorené žiadne presmerovania. Prečo nevytvoriť <a
|
|
121
|
-
"
|
|
120
|
+
"Zatiaľ neboli vytvorené žiadne presmerovania. Prečo nevytvoriť <a "
|
|
121
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">jedno presmerovanie teraz</a>?"
|
|
122
122
|
|
|
123
123
|
msgid "Site"
|
|
124
124
|
msgstr "Stránka"
|
|
@@ -21,8 +21,8 @@ msgstr ""
|
|
|
21
21
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
22
22
|
"Content-Transfer-Encoding: 8bit\n"
|
|
23
23
|
"Language: sl\n"
|
|
24
|
-
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 ||
|
|
25
|
-
"%100==4 ? 2 : 3);\n"
|
|
24
|
+
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
|
|
25
|
+
"n%100==4 ? 2 : 3);\n"
|
|
26
26
|
|
|
27
27
|
msgid "Wagtail redirects"
|
|
28
28
|
msgstr "Wagtail preusmeritve"
|
|
@@ -188,11 +188,11 @@ msgstr ""
|
|
|
188
188
|
|
|
189
189
|
#, python-format
|
|
190
190
|
msgid ""
|
|
191
|
-
"No redirects have been created. Why not <a
|
|
192
|
-
"
|
|
191
|
+
"No redirects have been created. Why not <a "
|
|
192
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
193
193
|
msgstr ""
|
|
194
|
-
"Dodana ni še nobena preusmeritev. Zakaj je nebi <a
|
|
195
|
-
"
|
|
194
|
+
"Dodana ni še nobena preusmeritev. Zakaj je nebi <a "
|
|
195
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">dodali</a>?"
|
|
196
196
|
|
|
197
197
|
msgid "Site"
|
|
198
198
|
msgstr "Spletno mesto"
|
|
@@ -16,8 +16,8 @@ msgstr ""
|
|
|
16
16
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
17
17
|
"Content-Transfer-Encoding: 8bit\n"
|
|
18
18
|
"Language: sr\n"
|
|
19
|
-
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 &&
|
|
20
|
-
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
|
19
|
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
|
20
|
+
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
|
21
21
|
|
|
22
22
|
msgid "Site"
|
|
23
23
|
msgstr "Sajt"
|
|
@@ -186,11 +186,11 @@ msgstr "Ledsen, inga omdirigeringar matchar \"<em>%(query_string)s</em>\""
|
|
|
186
186
|
|
|
187
187
|
#, python-format
|
|
188
188
|
msgid ""
|
|
189
|
-
"No redirects have been created. Why not <a
|
|
190
|
-
"
|
|
189
|
+
"No redirects have been created. Why not <a "
|
|
190
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
191
191
|
msgstr ""
|
|
192
|
-
"Inga omdirigeringar har skapats. Varför inte <a
|
|
193
|
-
"
|
|
192
|
+
"Inga omdirigeringar har skapats. Varför inte <a "
|
|
193
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">skapa en</a>?"
|
|
194
194
|
|
|
195
195
|
msgid "Site"
|
|
196
196
|
msgstr "Sajt"
|
|
@@ -110,11 +110,11 @@ msgstr "Diskulpa, laiha dalan hanesan \"<em>%(query_string)s</em>\""
|
|
|
110
110
|
|
|
111
111
|
#, python-format
|
|
112
112
|
msgid ""
|
|
113
|
-
"No redirects have been created. Why not <a
|
|
114
|
-
"
|
|
113
|
+
"No redirects have been created. Why not <a "
|
|
114
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
115
115
|
msgstr ""
|
|
116
|
-
"Laiha dalan ne'ebe mak kria ona. Tamba sa <a
|
|
117
|
-
"
|
|
116
|
+
"Laiha dalan ne'ebe mak kria ona. Tamba sa <a "
|
|
117
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">hatama ida</a>?"
|
|
118
118
|
|
|
119
119
|
msgid "Site"
|
|
120
120
|
msgstr "situs"
|
|
@@ -109,11 +109,11 @@ msgstr "ขออภัย,ไม่มีการเปลี่ยนทิ
|
|
|
109
109
|
|
|
110
110
|
#, python-format
|
|
111
111
|
msgid ""
|
|
112
|
-
"No redirects have been created. Why not <a
|
|
113
|
-
"
|
|
112
|
+
"No redirects have been created. Why not <a "
|
|
113
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
114
114
|
msgstr ""
|
|
115
|
-
"ไม่มีการกำคุณไม่หนดทิศทางถูกสร้างขึ้น ทำไมคุณไม่<a
|
|
116
|
-
"
|
|
115
|
+
"ไม่มีการกำคุณไม่หนดทิศทางถูกสร้างขึ้น ทำไมคุณไม่<a "
|
|
116
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">เพิ่มหนึ่งอัน</a>?"
|
|
117
117
|
|
|
118
118
|
msgid "Site"
|
|
119
119
|
msgstr "เว็บไซด์"
|
|
@@ -114,11 +114,11 @@ msgstr "Üzgünüm, \"<em>%(query_string)s</em>\" ile eşleşen yönlendirme yok
|
|
|
114
114
|
|
|
115
115
|
#, python-format
|
|
116
116
|
msgid ""
|
|
117
|
-
"No redirects have been created. Why not <a
|
|
118
|
-
"
|
|
117
|
+
"No redirects have been created. Why not <a "
|
|
118
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
119
119
|
msgstr ""
|
|
120
|
-
"Hiç yönedirme oluşturulmadı. Neden <a
|
|
121
|
-
"
|
|
120
|
+
"Hiç yönedirme oluşturulmadı. Neden <a "
|
|
121
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">bir tane eklemiyorsunuz</a>?"
|
|
122
122
|
|
|
123
123
|
msgid "Site"
|
|
124
124
|
msgstr "Site"
|
|
@@ -116,11 +116,11 @@ msgstr "Üzgünüm, \"<em>%(query_string)s</em>\" ile eşleşen yönlendirme yok
|
|
|
116
116
|
|
|
117
117
|
#, python-format
|
|
118
118
|
msgid ""
|
|
119
|
-
"No redirects have been created. Why not <a
|
|
120
|
-
"
|
|
119
|
+
"No redirects have been created. Why not <a "
|
|
120
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
121
121
|
msgstr ""
|
|
122
|
-
"Hiç yönedirme oluşturulmadı. Neden <a
|
|
123
|
-
"
|
|
122
|
+
"Hiç yönedirme oluşturulmadı. Neden <a "
|
|
123
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">bir tane eklemiyorsunuz</a>?"
|
|
124
124
|
|
|
125
125
|
msgid "Site"
|
|
126
126
|
msgstr "Site"
|
|
@@ -169,11 +169,11 @@ msgstr ""
|
|
|
169
169
|
|
|
170
170
|
#, python-format
|
|
171
171
|
msgid ""
|
|
172
|
-
"No redirects have been created. Why not <a
|
|
173
|
-
"
|
|
172
|
+
"No redirects have been created. Why not <a "
|
|
173
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
174
174
|
msgstr ""
|
|
175
|
-
"Ще немає жодного перенаправлення. Чому б не <a
|
|
176
|
-
"
|
|
175
|
+
"Ще немає жодного перенаправлення. Чому б не <a "
|
|
176
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">створити якесь</a>?"
|
|
177
177
|
|
|
178
178
|
msgid "Site"
|
|
179
179
|
msgstr "Сайт"
|
|
@@ -62,11 +62,11 @@ msgstr "到"
|
|
|
62
62
|
|
|
63
63
|
#, python-format
|
|
64
64
|
msgid ""
|
|
65
|
-
"No redirects have been created. Why not <a
|
|
66
|
-
"
|
|
65
|
+
"No redirects have been created. Why not <a "
|
|
66
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
67
67
|
msgstr ""
|
|
68
|
-
"没有任何已保存的转向。为什么不 <a
|
|
69
|
-
"
|
|
68
|
+
"没有任何已保存的转向。为什么不 <a "
|
|
69
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">添加一个</a>?"
|
|
70
70
|
|
|
71
71
|
msgid "The redirect could not be saved due to errors."
|
|
72
72
|
msgstr "由于多个错误,转向设置无法保存。"
|
|
@@ -173,11 +173,11 @@ msgstr "对不起,没有重定向符合\"<em>%(query_string)s</em>\""
|
|
|
173
173
|
|
|
174
174
|
#, python-format
|
|
175
175
|
msgid ""
|
|
176
|
-
"No redirects have been created. Why not <a
|
|
177
|
-
"
|
|
176
|
+
"No redirects have been created. Why not <a "
|
|
177
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
178
178
|
msgstr ""
|
|
179
|
-
"还没有创建过重定向呢。为何不 <a
|
|
180
|
-
"\">创建一个</a>?"
|
|
179
|
+
"还没有创建过重定向呢。为何不 <a "
|
|
180
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">创建一个</a>?"
|
|
181
181
|
|
|
182
182
|
msgid "Site"
|
|
183
183
|
msgstr "站点"
|
|
@@ -129,11 +129,11 @@ msgstr "對不起,沒有重定向符合\"<em>%(query_string)s</em>\""
|
|
|
129
129
|
|
|
130
130
|
#, python-format
|
|
131
131
|
msgid ""
|
|
132
|
-
"No redirects have been created. Why not <a
|
|
133
|
-
"
|
|
132
|
+
"No redirects have been created. Why not <a "
|
|
133
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">add one</a>?"
|
|
134
134
|
msgstr ""
|
|
135
|
-
"還沒有創建過重定向呢。為何不 <a
|
|
136
|
-
"\">創建一個</a>?"
|
|
135
|
+
"還沒有創建過重定向呢。為何不 <a "
|
|
136
|
+
"href=\"%(wagtailredirects_add_redirect_url)s\">創建一個</a>?"
|
|
137
137
|
|
|
138
138
|
msgid "Site"
|
|
139
139
|
msgstr "站點"
|
|
@@ -2,6 +2,7 @@ from urllib.parse import urlparse
|
|
|
2
2
|
|
|
3
3
|
from django.db import models
|
|
4
4
|
from django.urls import Resolver404
|
|
5
|
+
from django.utils.functional import cached_property
|
|
5
6
|
from django.utils.translation import gettext_lazy as _
|
|
6
7
|
|
|
7
8
|
from wagtail.models import Page
|
|
@@ -63,10 +64,10 @@ class Redirect(models.Model):
|
|
|
63
64
|
def __str__(self):
|
|
64
65
|
return self.title
|
|
65
66
|
|
|
66
|
-
@
|
|
67
|
+
@cached_property
|
|
67
68
|
def link(self):
|
|
68
69
|
if self.redirect_page:
|
|
69
|
-
page = self.redirect_page.
|
|
70
|
+
page = self.redirect_page.specific_deferred
|
|
70
71
|
base_url = page.url
|
|
71
72
|
if not self.redirect_page_route_path:
|
|
72
73
|
return base_url
|
|
@@ -145,7 +146,7 @@ class Redirect(models.Model):
|
|
|
145
146
|
url_parsed = urlparse(url)
|
|
146
147
|
|
|
147
148
|
# Path must start with / but not end with /
|
|
148
|
-
path = url_parsed
|
|
149
|
+
path = url_parsed.path
|
|
149
150
|
if not path.startswith("/"):
|
|
150
151
|
path = "/" + path
|
|
151
152
|
|
|
@@ -153,12 +154,12 @@ class Redirect(models.Model):
|
|
|
153
154
|
path = path[:-1]
|
|
154
155
|
|
|
155
156
|
# Parameters must be sorted alphabetically
|
|
156
|
-
parameters = url_parsed
|
|
157
|
+
parameters = url_parsed.params
|
|
157
158
|
parameters_components = parameters.split(";")
|
|
158
159
|
parameters = ";".join(sorted(parameters_components))
|
|
159
160
|
|
|
160
161
|
# Query string components must be sorted alphabetically
|
|
161
|
-
query_string = url_parsed
|
|
162
|
+
query_string = url_parsed.query
|
|
162
163
|
query_string_components = query_string.split("&")
|
|
163
164
|
query_string = "&".join(sorted(query_string_components))
|
|
164
165
|
|
|
@@ -1,38 +1 @@
|
|
|
1
|
-
{% extends "wagtailadmin/
|
|
2
|
-
{% load i18n wagtailadmin_tags %}
|
|
3
|
-
{% block titletag %}{% blocktrans trimmed with title=redirect.title %}Editing {{ title }}{% endblocktrans %}{% endblock %}
|
|
4
|
-
{% block content %}
|
|
5
|
-
{% trans "Editing" as editing_str %}
|
|
6
|
-
{% include "wagtailadmin/shared/header.html" with title=editing_str subtitle=redirect.title icon="redirect" %}
|
|
7
|
-
|
|
8
|
-
{% include "wagtailadmin/shared/non_field_errors.html" %}
|
|
9
|
-
|
|
10
|
-
<form action="{% url 'wagtailredirects:edit' redirect.id %}" method="POST" class="nice-padding" novalidate>
|
|
11
|
-
{% csrf_token %}
|
|
12
|
-
|
|
13
|
-
<ul class="fields">
|
|
14
|
-
{% for field in form.visible_fields %}
|
|
15
|
-
<li>{% formattedfield field %}</li>
|
|
16
|
-
{% endfor %}
|
|
17
|
-
|
|
18
|
-
<li>
|
|
19
|
-
<input type="submit" value="{% trans 'Save' %}" class="button" />
|
|
20
|
-
{% if user_can_delete %}
|
|
21
|
-
<a href="{% url 'wagtailredirects:delete' redirect.id %}" class="button no">{% trans "Delete redirect" %}</a>
|
|
22
|
-
{% endif %}
|
|
23
|
-
</li>
|
|
24
|
-
</ul>
|
|
25
|
-
</form>
|
|
26
|
-
|
|
27
|
-
{% endblock %}
|
|
28
|
-
|
|
29
|
-
{% block extra_js %}
|
|
30
|
-
{{ block.super }}
|
|
31
|
-
{% include "wagtailadmin/pages/_editor_js.html" %}
|
|
32
|
-
{{ form.media.js }}
|
|
33
|
-
{% endblock %}
|
|
34
|
-
|
|
35
|
-
{% block extra_css %}
|
|
36
|
-
{{ block.super }}
|
|
37
|
-
{{ form.media.css }}
|
|
38
|
-
{% endblock %}
|
|
1
|
+
{% extends "wagtailadmin/generic/edit.html" %}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
from io import BytesIO
|
|
2
|
+
|
|
1
3
|
from django.conf import settings
|
|
4
|
+
from django.contrib.auth.models import Permission
|
|
2
5
|
from django.test import TestCase, override_settings
|
|
3
6
|
from django.urls import reverse
|
|
7
|
+
from openpyxl.reader.excel import load_workbook
|
|
4
8
|
|
|
5
9
|
from wagtail.admin.admin_url_finder import AdminURLFinder
|
|
6
10
|
from wagtail.contrib.redirects import models
|
|
@@ -592,7 +596,14 @@ class TestRedirects(TestCase):
|
|
|
592
596
|
self.assertIs(redirect.is_permanent, True)
|
|
593
597
|
|
|
594
598
|
|
|
599
|
+
@override_settings(
|
|
600
|
+
CACHES={"default": {"BACKEND": "django.core.cache.backends.locmem.LocMemCache"}}
|
|
601
|
+
)
|
|
595
602
|
class TestRedirectsIndexView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
603
|
+
@classmethod
|
|
604
|
+
def setUpTestData(cls):
|
|
605
|
+
cls.site = Site.objects.first()
|
|
606
|
+
|
|
596
607
|
def setUp(self):
|
|
597
608
|
self.login()
|
|
598
609
|
|
|
@@ -607,6 +618,7 @@ class TestRedirectsIndexView(AdminTemplateTestUtils, WagtailTestUtils, TestCase)
|
|
|
607
618
|
[{"url": "", "label": "Redirects"}],
|
|
608
619
|
response.content,
|
|
609
620
|
)
|
|
621
|
+
self.assertContains(response, "No redirects have been created")
|
|
610
622
|
|
|
611
623
|
def test_search(self):
|
|
612
624
|
models.Redirect.objects.create(
|
|
@@ -692,6 +704,94 @@ class TestRedirectsIndexView(AdminTemplateTestUtils, WagtailTestUtils, TestCase)
|
|
|
692
704
|
(ordering,),
|
|
693
705
|
)
|
|
694
706
|
|
|
707
|
+
def test_filtering_by_type(self):
|
|
708
|
+
temp_redirect = models.Redirect.add_redirect("/from", "/to", False)
|
|
709
|
+
perm_redirect = models.Redirect.add_redirect("/cat", "/dog", True)
|
|
710
|
+
|
|
711
|
+
response = self.get(params={"is_permanent": "True"})
|
|
712
|
+
|
|
713
|
+
self.assertContains(response, perm_redirect.old_path)
|
|
714
|
+
self.assertNotContains(response, temp_redirect.old_path)
|
|
715
|
+
|
|
716
|
+
def test_filtering_by_site(self):
|
|
717
|
+
site_redirect = models.Redirect.add_redirect("/cat", "/dog")
|
|
718
|
+
site_redirect.site = self.site
|
|
719
|
+
site_redirect.save()
|
|
720
|
+
nosite_redirect = models.Redirect.add_redirect("/from", "/to")
|
|
721
|
+
|
|
722
|
+
response = self.get(params={"site": self.site.pk})
|
|
723
|
+
|
|
724
|
+
self.assertContains(response, site_redirect.old_path)
|
|
725
|
+
self.assertNotContains(response, nosite_redirect.old_path)
|
|
726
|
+
|
|
727
|
+
def test_csv_export(self):
|
|
728
|
+
models.Redirect.add_redirect("/from", "/to", False)
|
|
729
|
+
|
|
730
|
+
# Session, User, UserProfile, Redirects
|
|
731
|
+
with self.assertNumQueries(4):
|
|
732
|
+
response = self.get(params={"export": "csv"})
|
|
733
|
+
|
|
734
|
+
csv_data = response.getvalue().decode().split("\n")
|
|
735
|
+
|
|
736
|
+
self.assertEqual(response.status_code, 200)
|
|
737
|
+
csv_header = csv_data[0]
|
|
738
|
+
csv_entries = csv_data[1:]
|
|
739
|
+
csv_entries = csv_entries[:-1] # Drop empty last line
|
|
740
|
+
|
|
741
|
+
self.assertEqual(csv_header, "From,To,Type,Site\r")
|
|
742
|
+
self.assertEqual(len(csv_entries), 1)
|
|
743
|
+
self.assertEqual(csv_entries[0], "/from,/to,temporary,\r")
|
|
744
|
+
|
|
745
|
+
def test_xlsx_export(self):
|
|
746
|
+
models.Redirect.add_redirect("/from", "/to", True)
|
|
747
|
+
|
|
748
|
+
# Session, User, UserProfile, Redirects
|
|
749
|
+
with self.assertNumQueries(4):
|
|
750
|
+
response = self.get(params={"export": "xlsx"})
|
|
751
|
+
workbook_data = response.getvalue()
|
|
752
|
+
|
|
753
|
+
self.assertEqual(response.status_code, 200)
|
|
754
|
+
|
|
755
|
+
worksheet = load_workbook(filename=BytesIO(workbook_data))["Sheet1"]
|
|
756
|
+
cell_array = [[cell.value for cell in row] for row in worksheet.rows]
|
|
757
|
+
|
|
758
|
+
self.assertEqual(cell_array[0], ["From", "To", "Type", "Site"])
|
|
759
|
+
self.assertEqual(len(cell_array), 2)
|
|
760
|
+
self.assertEqual(cell_array[1], ["/from", "/to", "permanent", None])
|
|
761
|
+
|
|
762
|
+
def test_num_queries_in_export(self):
|
|
763
|
+
page = Page.objects.get(id=2)
|
|
764
|
+
for i in range(3):
|
|
765
|
+
models.Redirect.add_redirect(f"/from{i}", "/to", False)
|
|
766
|
+
models.Redirect.add_redirect(f"/from-site{i}", "/to", False, site=self.site)
|
|
767
|
+
models.Redirect.add_redirect(f"/to-page{i}", page, False)
|
|
768
|
+
|
|
769
|
+
response = self.get(params={"export": "csv"})
|
|
770
|
+
csv_data = response.getvalue().decode().strip().split("\n")
|
|
771
|
+
# Session, User, UserProfile, Redirects
|
|
772
|
+
with self.assertNumQueries(4):
|
|
773
|
+
response = self.get(params={"export": "csv"})
|
|
774
|
+
csv_data = response.getvalue().decode().strip().split("\n")
|
|
775
|
+
|
|
776
|
+
self.assertEqual(len(csv_data), 10)
|
|
777
|
+
|
|
778
|
+
def test_redirect_page_filter_only_includes_relevant_pages(self):
|
|
779
|
+
"""
|
|
780
|
+
The redirect_page filter should only include pages referenced by Redirect objects.
|
|
781
|
+
"""
|
|
782
|
+
response = self.get()
|
|
783
|
+
request = response.context["request"]
|
|
784
|
+
qs = response.context["filters"].filters["redirect_page"].queryset(request)
|
|
785
|
+
self.assertQuerySetEqual(qs, Page.objects.none())
|
|
786
|
+
|
|
787
|
+
page = Page.objects.get(id=2)
|
|
788
|
+
models.Redirect.add_redirect("/to-page", page, False)
|
|
789
|
+
|
|
790
|
+
response = self.get()
|
|
791
|
+
request = response.context["request"]
|
|
792
|
+
qs = response.context["filters"].filters["redirect_page"].queryset(request)
|
|
793
|
+
self.assertQuerySetEqual(qs, Page.objects.filter(pk=2))
|
|
794
|
+
|
|
695
795
|
|
|
696
796
|
class TestRedirectsAddView(WagtailTestUtils, TestCase):
|
|
697
797
|
fixtures = ["test.json"]
|
|
@@ -849,7 +949,7 @@ class TestRedirectsAddView(WagtailTestUtils, TestCase):
|
|
|
849
949
|
self.assertIsNone(redirects.first().site)
|
|
850
950
|
|
|
851
951
|
|
|
852
|
-
class TestRedirectsEditView(WagtailTestUtils, TestCase):
|
|
952
|
+
class TestRedirectsEditView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
853
953
|
def setUp(self):
|
|
854
954
|
# Create a redirect to edit
|
|
855
955
|
self.redirect = models.Redirect(
|
|
@@ -876,6 +976,13 @@ class TestRedirectsEditView(WagtailTestUtils, TestCase):
|
|
|
876
976
|
response = self.get()
|
|
877
977
|
self.assertEqual(response.status_code, 200)
|
|
878
978
|
self.assertTemplateUsed(response, "wagtailredirects/edit.html")
|
|
979
|
+
self.assertBreadcrumbsItemsRendered(
|
|
980
|
+
[
|
|
981
|
+
{"url": reverse("wagtailredirects:index"), "label": "Redirects"},
|
|
982
|
+
{"url": "", "label": "/test"},
|
|
983
|
+
],
|
|
984
|
+
response.content,
|
|
985
|
+
)
|
|
879
986
|
|
|
880
987
|
url_finder = AdminURLFinder(self.user)
|
|
881
988
|
expected_url = "/admin/redirects/%d/" % self.redirect.id
|
|
@@ -957,6 +1064,39 @@ class TestRedirectsEditView(WagtailTestUtils, TestCase):
|
|
|
957
1064
|
# Should not redirect to index
|
|
958
1065
|
self.assertEqual(response.status_code, 200)
|
|
959
1066
|
|
|
1067
|
+
def test_get_with_no_permission(self, redirect_id=None):
|
|
1068
|
+
self.user.is_superuser = False
|
|
1069
|
+
self.user.save()
|
|
1070
|
+
# Only basic access_admin permission is given
|
|
1071
|
+
self.user.user_permissions.add(
|
|
1072
|
+
Permission.objects.get(
|
|
1073
|
+
content_type__app_label="wagtailadmin",
|
|
1074
|
+
codename="access_admin",
|
|
1075
|
+
)
|
|
1076
|
+
)
|
|
1077
|
+
|
|
1078
|
+
response = self.get()
|
|
1079
|
+
self.assertEqual(response.status_code, 302)
|
|
1080
|
+
self.assertRedirects(response, reverse("wagtailadmin_home"))
|
|
1081
|
+
|
|
1082
|
+
def test_get_with_edit_permission_only(self):
|
|
1083
|
+
self.user.is_superuser = False
|
|
1084
|
+
self.user.save()
|
|
1085
|
+
self.user.user_permissions.add(
|
|
1086
|
+
Permission.objects.get(
|
|
1087
|
+
content_type__app_label="wagtailadmin",
|
|
1088
|
+
codename="access_admin",
|
|
1089
|
+
),
|
|
1090
|
+
Permission.objects.get(
|
|
1091
|
+
content_type__app_label="wagtailredirects",
|
|
1092
|
+
codename="change_redirect",
|
|
1093
|
+
),
|
|
1094
|
+
)
|
|
1095
|
+
|
|
1096
|
+
response = self.get()
|
|
1097
|
+
self.assertEqual(response.status_code, 200)
|
|
1098
|
+
self.assertTemplateUsed(response, "wagtailredirects/edit.html")
|
|
1099
|
+
|
|
960
1100
|
|
|
961
1101
|
class TestRedirectsDeleteView(WagtailTestUtils, TestCase):
|
|
962
1102
|
def setUp(self):
|
|
@@ -7,9 +7,8 @@ urlpatterns = [
|
|
|
7
7
|
path("", views.IndexView.as_view(), name="index"),
|
|
8
8
|
path("results/", views.IndexView.as_view(results_only=True), name="index_results"),
|
|
9
9
|
path("add/", views.add, name="add"),
|
|
10
|
-
path("<int:redirect_id>/", views.
|
|
10
|
+
path("<int:redirect_id>/", views.EditView.as_view(), name="edit"),
|
|
11
11
|
path("<int:redirect_id>/delete/", views.delete, name="delete"),
|
|
12
12
|
path("import/", views.start_import, name="start_import"),
|
|
13
13
|
path("import/process/", views.process_import, name="process_import"),
|
|
14
|
-
path("report", views.RedirectsReportView.as_view(), name="report"),
|
|
15
14
|
]
|