wagtail 6.0.2__py3-none-any.whl → 6.1rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wagtail/__init__.py +1 -1
- wagtail/admin/checks.py +51 -0
- wagtail/admin/compare.py +1 -1
- wagtail/admin/filters.py +70 -1
- wagtail/admin/forms/account.py +1 -1
- wagtail/admin/forms/collections.py +15 -0
- wagtail/admin/forms/pages.py +49 -0
- wagtail/admin/locale/de/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/de/LC_MESSAGES/django.po +5 -5
- wagtail/admin/locale/en/LC_MESSAGES/django.po +474 -385
- wagtail/admin/locale/en/LC_MESSAGES/djangojs.po +3 -3
- wagtail/admin/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/pt_PT/LC_MESSAGES/django.po +73 -2
- wagtail/admin/locale/ro/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/ro/LC_MESSAGES/django.po +3 -3
- wagtail/admin/panels/comment_panel.py +1 -1
- wagtail/admin/panels/field_panel.py +1 -1
- wagtail/admin/rich_text/converters/editor_html.py +3 -1
- wagtail/admin/rich_text/editors/draftail/__init__.py +28 -2
- wagtail/admin/static/wagtailadmin/css/core.css +1 -1
- wagtail/admin/static/wagtailadmin/css/panels/draftail.css +1 -1
- wagtail/admin/static/wagtailadmin/images/favicon.ico +0 -0
- 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/core.js.LICENSE.txt +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 +1 -1
- 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/telepath.js +1 -1
- wagtail/admin/static/wagtailadmin/js/telepath/widgets.js +1 -1
- wagtail/admin/static/wagtailadmin/js/userbar.js +1 -1
- wagtail/admin/static/wagtailadmin/js/vendor.js +1 -1
- wagtail/admin/static/wagtailadmin/js/vendor.js.LICENSE.txt +4 -4
- wagtail/admin/static/wagtailadmin/js/wagtailadmin.js +1 -1
- wagtail/admin/static/wagtailadmin/js/workflow-action.js +1 -1
- wagtail/admin/staticfiles.py +1 -0
- wagtail/admin/templates/wagtailadmin/base.html +1 -0
- wagtail/admin/templates/wagtailadmin/collection_privacy/set_privacy.html +3 -1
- wagtail/admin/templates/wagtailadmin/collections/index_results.html +10 -0
- wagtail/admin/templates/wagtailadmin/generic/base.html +1 -9
- wagtail/admin/templates/wagtailadmin/generic/form.html +3 -2
- wagtail/admin/templates/wagtailadmin/generic/history/action_cell.html +27 -0
- wagtail/admin/templates/wagtailadmin/home/workflow_objects_to_moderate.html +3 -3
- wagtail/admin/templates/wagtailadmin/icons/keyboard.svg +1 -0
- wagtail/admin/templates/wagtailadmin/page_privacy/set_privacy.html +3 -1
- wagtail/admin/templates/wagtailadmin/pages/_editor_js.html +0 -14
- wagtail/admin/templates/wagtailadmin/pages/action_menu/save_draft.html +3 -1
- wagtail/admin/templates/wagtailadmin/pages/choose_parent.html +17 -0
- wagtail/admin/templates/wagtailadmin/pages/explorable_index.html +8 -0
- wagtail/admin/templates/wagtailadmin/pages/history.html +1 -61
- wagtail/admin/templates/wagtailadmin/pages/index.html +1 -3
- wagtail/admin/templates/wagtailadmin/pages/listing/_locked_indicator.html +2 -2
- wagtail/admin/templates/wagtailadmin/pages/listing/_page_title_column_header.html +25 -27
- wagtail/admin/templates/wagtailadmin/pages/page_listing_header.html +2 -1
- wagtail/admin/templates/wagtailadmin/panels/multi_field_panel_child.html +1 -1
- wagtail/admin/templates/wagtailadmin/panels/publishing/schedule_publishing_panel.html +3 -1
- wagtail/admin/templates/wagtailadmin/panels/tabbed_interface.html +1 -1
- wagtail/admin/templates/wagtailadmin/shared/active_filters.html +2 -1
- wagtail/admin/templates/wagtailadmin/shared/breadcrumbs.html +8 -0
- wagtail/admin/templates/wagtailadmin/shared/forms/single_checkbox.html +1 -1
- wagtail/admin/templates/wagtailadmin/shared/headers/page_edit_header.html +1 -1
- wagtail/admin/templates/wagtailadmin/shared/headers/slim_header.html +21 -9
- wagtail/admin/templates/wagtailadmin/shared/human_readable_date.html +1 -1
- wagtail/admin/templates/wagtailadmin/shared/keyboard_shortcuts_dialog.html +29 -0
- wagtail/admin/templates/wagtailadmin/shared/side_panel_toggle.html +2 -1
- wagtail/admin/templates/wagtailadmin/skeleton.html +2 -1
- wagtail/admin/templates/wagtailadmin/tables/related_objects_cell.html +9 -0
- wagtail/admin/templates/wagtailadmin/tables/title_cell.html +9 -7
- wagtail/admin/templates/wagtailadmin/widgets/draftail_rich_text_area.html +1 -1
- wagtail/admin/templates/wagtailadmin/workflows/create.html +6 -23
- wagtail/admin/templates/wagtailadmin/workflows/create_task.html +6 -15
- wagtail/admin/templates/wagtailadmin/workflows/edit.html +6 -23
- wagtail/admin/templates/wagtailadmin/workflows/edit_task.html +6 -13
- wagtail/admin/templates/wagtailadmin/workflows/includes/task_usage_cell.html +4 -4
- wagtail/admin/templates/wagtailadmin/workflows/includes/workflow_tasks_cell.html +18 -0
- wagtail/admin/templates/wagtailadmin/workflows/includes/workflow_title_cell.html +7 -0
- wagtail/admin/templates/wagtailadmin/workflows/includes/workflow_used_by_cell.html +25 -0
- wagtail/admin/templates/wagtailadmin/workflows/index.html +0 -99
- wagtail/admin/templates/wagtailadmin/workflows/index_results.html +10 -0
- wagtail/admin/templates/wagtailadmin/workflows/task_index.html +0 -30
- wagtail/admin/templates/wagtailadmin/workflows/task_index_results.html +10 -0
- wagtail/admin/templates/wagtailadmin/workflows/usage.html +1 -1
- wagtail/admin/templatetags/wagtailadmin_tags.py +116 -39
- wagtail/admin/tests/pages/test_create_page.py +10 -4
- wagtail/admin/tests/pages/test_custom_listing.py +37 -0
- wagtail/admin/tests/pages/test_edit_page.py +6 -6
- wagtail/admin/tests/pages/test_explorer_view.py +19 -18
- wagtail/admin/tests/pages/test_move_page.py +1 -1
- wagtail/admin/tests/pages/test_page_usage.py +50 -2
- wagtail/admin/tests/pages/test_parent_page_chooser_view.py +119 -0
- wagtail/admin/tests/pages/test_preview.py +18 -4
- wagtail/admin/tests/test_account_management.py +20 -1
- wagtail/admin/tests/test_audit_log.py +172 -5
- wagtail/admin/tests/test_checks.py +92 -0
- wagtail/admin/tests/test_collections_views.py +19 -5
- wagtail/admin/tests/test_compare.py +6 -6
- wagtail/admin/tests/test_dashboard.py +404 -0
- wagtail/admin/tests/test_dbwhitelister.py +4 -5
- wagtail/admin/tests/test_edit_handlers.py +2 -2
- wagtail/admin/tests/test_keyboard_shortcuts.py +84 -0
- wagtail/admin/tests/test_page_chooser.py +31 -18
- wagtail/admin/tests/test_privacy.py +36 -2
- wagtail/admin/tests/test_rich_text.py +168 -23
- wagtail/admin/tests/test_templatetags.py +411 -43
- wagtail/admin/tests/test_views.py +4 -2
- wagtail/admin/tests/test_workflows.py +531 -9
- wagtail/admin/tests/tests.py +3 -1
- wagtail/admin/tests/ui/test_tables.py +48 -1
- wagtail/admin/tests/viewsets/test_model_viewset.py +126 -29
- wagtail/admin/ui/side_panels.py +3 -1
- wagtail/admin/ui/tables/__init__.py +13 -1
- wagtail/admin/ui/tables/pages.py +17 -6
- wagtail/admin/urls/__init__.py +8 -3
- wagtail/admin/urls/pages.py +5 -0
- wagtail/admin/urls/workflows.py +10 -0
- wagtail/admin/views/chooser.py +20 -24
- wagtail/admin/views/collections.py +17 -1
- wagtail/admin/views/generic/base.py +31 -4
- wagtail/admin/views/generic/history.py +220 -51
- wagtail/admin/views/generic/mixins.py +7 -4
- wagtail/admin/views/generic/models.py +54 -38
- wagtail/admin/views/generic/multiple_upload.py +17 -8
- wagtail/admin/views/generic/usage.py +17 -11
- wagtail/admin/views/home.py +15 -12
- wagtail/admin/views/mixins.py +30 -0
- wagtail/admin/views/pages/choose_parent.py +73 -0
- wagtail/admin/views/pages/history.py +54 -66
- wagtail/admin/views/pages/listing.py +187 -106
- wagtail/admin/views/pages/usage.py +6 -1
- wagtail/admin/views/pages/utils.py +70 -1
- wagtail/admin/views/workflows.py +150 -21
- wagtail/admin/viewsets/model.py +2 -2
- wagtail/admin/viewsets/pages.py +77 -0
- wagtail/admin/wagtail_hooks.py +40 -2
- wagtail/admin/widgets/button.py +10 -9
- wagtail/api/v2/filters.py +1 -1
- wagtail/api/v2/tests/test_pages.py +1 -1
- wagtail/blocks/base.py +18 -9
- wagtail/blocks/field_block.py +9 -7
- wagtail/blocks/list_block.py +16 -6
- wagtail/blocks/static_block.py +3 -0
- wagtail/blocks/stream_block.py +58 -23
- wagtail/blocks/struct_block.py +15 -9
- wagtail/contrib/forms/locale/en/LC_MESSAGES/django.po +39 -47
- wagtail/contrib/forms/models.py +5 -5
- wagtail/contrib/forms/templates/wagtailforms/list_submissions.html +44 -33
- wagtail/contrib/forms/templates/wagtailforms/submissions_index.html +2 -63
- wagtail/contrib/forms/tests/test_models.py +26 -0
- wagtail/contrib/forms/urls.py +6 -0
- wagtail/contrib/forms/views.py +52 -49
- wagtail/contrib/redirects/locale/ca/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/ca/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/redirects/locale/en/LC_MESSAGES/django.po +34 -42
- wagtail/contrib/redirects/signal_handlers.py +1 -1
- wagtail/contrib/redirects/templates/wagtailredirects/index.html +1 -36
- wagtail/contrib/redirects/templates/wagtailredirects/index_results.html +18 -0
- wagtail/contrib/redirects/templates/wagtailredirects/redirect_target_cell.html +8 -0
- wagtail/contrib/redirects/tests/test_import_command.py +1 -1
- wagtail/contrib/redirects/tests/test_redirects.py +79 -8
- wagtail/contrib/redirects/urls.py +2 -1
- wagtail/contrib/redirects/views.py +85 -55
- wagtail/contrib/search_promotions/admin_urls.py +2 -1
- wagtail/contrib/search_promotions/locale/en/LC_MESSAGES/django.po +41 -64
- wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/index.html +1 -16
- wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/index_results.html +11 -0
- wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/list.html +0 -51
- wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/results.html +3 -16
- wagtail/contrib/search_promotions/templates/wagtailsearchpromotions/search_promotion_column.html +15 -0
- wagtail/contrib/search_promotions/tests.py +122 -9
- wagtail/contrib/search_promotions/views.py +66 -65
- wagtail/contrib/settings/locale/en/LC_MESSAGES/django.po +3 -3
- wagtail/contrib/settings/registry.py +10 -5
- wagtail/contrib/settings/tests/generic/test_admin.py +9 -0
- wagtail/contrib/settings/tests/site_specific/test_admin.py +10 -1
- wagtail/contrib/settings/tests/site_specific/test_model.py +3 -3
- wagtail/contrib/settings/tests/site_specific/test_templates.py +1 -1
- wagtail/contrib/settings/views.py +3 -1
- wagtail/contrib/simple_translation/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/simple_translation/tests/test_wagtail_hooks.py +2 -2
- wagtail/contrib/styleguide/locale/en/LC_MESSAGES/django.po +7 -7
- wagtail/contrib/table_block/blocks.py +1 -1
- wagtail/contrib/table_block/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/table_block/static/table_block/js/table.js +1 -1
- wagtail/contrib/typed_table_block/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/typed_table_block/static/typed_table_block/js/typed_table_block.js +1 -1
- wagtail/coreutils.py +3 -2
- wagtail/documents/admin_urls.py +2 -2
- wagtail/documents/locale/en/LC_MESSAGES/django.po +22 -22
- wagtail/documents/migrations/0013_delete_uploadeddocument.py +16 -0
- wagtail/documents/models.py +1 -20
- wagtail/documents/rich_text/__init__.py +11 -7
- 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/templates/wagtaildocs/documents/index.html +0 -16
- wagtail/documents/tests/test_admin_views.py +155 -23
- wagtail/documents/tests/test_collection_privacy.py +55 -1
- wagtail/documents/tests/test_rich_text.py +14 -0
- wagtail/documents/views/documents.py +25 -22
- wagtail/documents/views/multiple.py +6 -7
- wagtail/documents/views/serve.py +16 -1
- wagtail/documents/wagtail_hooks.py +20 -15
- wagtail/embeds/blocks.py +5 -0
- wagtail/embeds/locale/en/LC_MESSAGES/django.po +2 -2
- wagtail/embeds/rich_text/__init__.py +1 -1
- wagtail/embeds/tests/test_rich_text.py +14 -0
- wagtail/embeds/wagtail_hooks.py +4 -14
- wagtail/fields.py +3 -48
- wagtail/images/admin_urls.py +2 -2
- wagtail/images/check_files/wagtail.jpg +0 -0
- wagtail/images/check_files/wagtail.png +0 -0
- wagtail/images/fields.py +2 -0
- wagtail/images/image_operations.py +1 -1
- wagtail/images/locale/en/LC_MESSAGES/django.po +33 -45
- wagtail/images/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/pt_PT/LC_MESSAGES/django.po +4 -0
- wagtail/images/migrations/0026_delete_uploadedimage.py +16 -0
- wagtail/images/models.py +49 -43
- wagtail/images/rich_text/__init__.py +18 -8
- 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/image_listing_header.html +6 -0
- wagtail/images/templates/wagtailimages/images/index.html +11 -51
- wagtail/images/tests/test_admin_views.py +119 -62
- wagtail/images/tests/test_image_operations.py +10 -0
- wagtail/images/tests/test_models.py +35 -33
- wagtail/images/tests/test_rich_text.py +14 -0
- wagtail/images/tests/utils.py +1 -1
- wagtail/images/views/images.py +35 -64
- wagtail/images/views/multiple.py +6 -7
- wagtail/images/wagtail_hooks.py +4 -14
- wagtail/locale/en/LC_MESSAGES/django.po +150 -136
- wagtail/locales/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/locales/tests.py +18 -3
- wagtail/locales/views.py +0 -1
- wagtail/management/commands/rebuild_references_index.py +3 -1
- wagtail/migrations/0092_alter_collectionviewrestriction_password_and_more.py +33 -0
- wagtail/migrations/0093_uploadedfile.py +53 -0
- wagtail/models/__init__.py +147 -32
- wagtail/models/i18n.py +1 -1
- wagtail/models/{collections.py → media.py} +33 -2
- wagtail/models/reference_index.py +1 -1
- wagtail/models/view_restrictions.py +10 -3
- wagtail/project_template/project_name/settings/base.py +6 -0
- wagtail/project_template/requirements.txt +1 -1
- wagtail/rich_text/__init__.py +25 -8
- wagtail/rich_text/pages.py +19 -8
- wagtail/rich_text/rewriters.py +140 -68
- wagtail/search/backends/database/mysql/mysql.py +3 -3
- wagtail/search/backends/database/postgres/postgres.py +3 -3
- wagtail/search/backends/database/sqlite/sqlite.py +2 -2
- wagtail/search/backends/elasticsearch7.py +4 -0
- wagtail/search/locale/en/LC_MESSAGES/django.po +3 -3
- wagtail/search/tests/test_postgres_backend.py +50 -0
- wagtail/sites/locale/en/LC_MESSAGES/django.po +8 -8
- wagtail/sites/tests.py +35 -9
- wagtail/sites/views.py +3 -1
- wagtail/snippets/locale/de/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/de/LC_MESSAGES/django.po +5 -6
- wagtail/snippets/locale/en/LC_MESSAGES/django.po +16 -56
- 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 -1
- wagtail/snippets/templates/wagtailsnippets/snippets/action_menu/save.html +3 -1
- wagtail/snippets/templates/wagtailsnippets/snippets/create.html +1 -1
- wagtail/snippets/templates/wagtailsnippets/snippets/edit.html +1 -1
- wagtail/snippets/tests/test_preview.py +13 -2
- wagtail/snippets/tests/test_snippets.py +41 -16
- wagtail/snippets/tests/test_viewset.py +63 -18
- wagtail/snippets/tests/test_workflows.py +12 -0
- wagtail/snippets/views/snippets.py +1 -40
- wagtail/templatetags/wagtailcore_tags.py +1 -1
- wagtail/test/demosite/models.py +1 -1
- wagtail/test/middleware.py +14 -1
- wagtail/test/testapp/fixtures/test.json +20 -0
- wagtail/test/testapp/migrations/0001_squashed_0073_revisablechildmodel_secret_text.py +8 -8
- wagtail/test/testapp/migrations/0023_snippetchoosermodel_full_featured.py +1 -0
- wagtail/test/testapp/migrations/0034_custompermissionmodel.py +44 -0
- wagtail/test/testapp/migrations/0035_modelwithcustommanager.py +30 -0
- wagtail/test/testapp/migrations/0036_complexdefaultstreampage.py +28 -0
- wagtail/test/testapp/models.py +79 -2
- wagtail/test/testapp/templates/tests/custom_docs_password_required.html +10 -0
- wagtail/test/testapp/templates/tests/custom_page_password_required.html +10 -0
- wagtail/test/testapp/views.py +24 -2
- wagtail/test/testapp/wagtail_hooks.py +19 -0
- wagtail/test/utils/wagtail_tests.py +2 -2
- wagtail/tests/test_blocks.py +262 -1
- wagtail/tests/test_migrations.py +1 -1
- wagtail/tests/test_page_model.py +77 -0
- wagtail/tests/test_page_privacy.py +18 -1
- wagtail/tests/test_rich_text.py +95 -5
- wagtail/tests/test_streamfield.py +43 -0
- wagtail/tests/test_utils.py +8 -2
- wagtail/tests/test_views.py +52 -1
- wagtail/tests/test_whitelist.py +7 -7
- wagtail/users/forms.py +3 -1
- wagtail/users/locale/en/LC_MESSAGES/django.po +124 -96
- wagtail/users/migrations/0013_userprofile_density.py +23 -0
- wagtail/users/models.py +14 -3
- wagtail/users/templates/wagtailusers/groups/create.html +1 -7
- wagtail/users/templates/wagtailusers/groups/edit.html +1 -13
- wagtail/users/templates/wagtailusers/groups/includes/formatted_permissions.html +46 -2
- wagtail/users/templates/wagtailusers/groups/includes/group_form_js.html +0 -2
- wagtail/users/templates/wagtailusers/users/create.html +1 -9
- wagtail/users/templates/wagtailusers/users/edit.html +1 -9
- wagtail/users/templates/wagtailusers/users/index.html +2 -5
- wagtail/users/templates/wagtailusers/users/index_results.html +3 -13
- wagtail/users/templates/wagtailusers/users/user_cell.html +9 -0
- wagtail/users/templatetags/wagtailusers_tags.py +107 -20
- wagtail/users/tests/test_admin_views.py +669 -90
- wagtail/users/views/groups.py +58 -61
- wagtail/users/views/users.py +211 -92
- wagtail/users/wagtail_hooks.py +6 -38
- wagtail/users/widgets.py +3 -5
- wagtail/utils/text.py +1 -1
- wagtail/views.py +5 -9
- wagtail/whitelist.py +1 -1
- {wagtail-6.0.2.dist-info → wagtail-6.1rc1.dist-info}/METADATA +4 -5
- {wagtail-6.0.2.dist-info → wagtail-6.1rc1.dist-info}/RECORD +339 -320
- wagtail/admin/static/wagtailadmin/js/page-editor.js +0 -1
- wagtail/admin/static/wagtailadmin/js/vendor/mousetrap.min.js +0 -1
- wagtail/admin/static/wagtailadmin/js/vendor/urlify.js +0 -1
- wagtail/admin/static/wagtailadmin/js/vendor/xregexp.min.js +0 -1
- wagtail/admin/templates/wagtailadmin/collections/index.html +0 -34
- wagtail/admin/templates/wagtailadmin/pages/revisions/_actions.html +0 -22
- wagtail/admin/templates/wagtailadmin/shared/page_breadcrumbs.html +0 -55
- wagtail/admin/tests/pages/test_dashboard.py +0 -172
- wagtail/contrib/redirects/templates/wagtailredirects/results.html +0 -23
- wagtail/documents/templates/wagtaildocs/documents/list.html +0 -2
- wagtail/search/tests/test_postgres_stemming.py +0 -40
- wagtail/sites/templates/wagtailsites/create.html +0 -6
- wagtail/sites/templates/wagtailsites/edit.html +0 -6
- wagtail/snippets/templates/wagtailsnippets/snippets/revisions/_actions.html +0 -36
- wagtail/users/templates/wagtailusers/users/list.html +0 -62
- wagtail/users/urls/users.py +0 -12
- {wagtail-6.0.2.dist-info → wagtail-6.1rc1.dist-info}/LICENSE +0 -0
- {wagtail-6.0.2.dist-info → wagtail-6.1rc1.dist-info}/WHEEL +0 -0
- {wagtail-6.0.2.dist-info → wagtail-6.1rc1.dist-info}/entry_points.txt +0 -0
- {wagtail-6.0.2.dist-info → wagtail-6.1rc1.dist-info}/top_level.txt +0 -0
wagtail/__init__.py
CHANGED
|
@@ -6,7 +6,7 @@ from wagtail.utils.version import get_semver_version, get_version
|
|
|
6
6
|
|
|
7
7
|
# major.minor.patch.release.number
|
|
8
8
|
# release must be one of alpha, beta, rc, or final
|
|
9
|
-
VERSION = (6,
|
|
9
|
+
VERSION = (6, 1, 0, "rc", 1)
|
|
10
10
|
|
|
11
11
|
__version__ = get_version(VERSION)
|
|
12
12
|
|
wagtail/admin/checks.py
CHANGED
|
@@ -235,3 +235,54 @@ def file_overwrite_check(app_configs, **kwargs):
|
|
|
235
235
|
)
|
|
236
236
|
|
|
237
237
|
return errors
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
@register("datetime_format")
|
|
241
|
+
def datetime_format_check(app_configs, **kwargs):
|
|
242
|
+
"""
|
|
243
|
+
If L10N is enabled, check if WAGTAIL_* formats are compatible with Django input formats.
|
|
244
|
+
See https://docs.djangoproject.com/en/stable/topics/i18n/formatting/#creating-custom-format-files
|
|
245
|
+
See https://docs.wagtail.org/en/stable/reference/settings.html#wagtail-date-format-wagtail-datetime-format-wagtail-time-format
|
|
246
|
+
"""
|
|
247
|
+
|
|
248
|
+
from django.conf import settings
|
|
249
|
+
from django.utils import formats, translation
|
|
250
|
+
|
|
251
|
+
errors = []
|
|
252
|
+
|
|
253
|
+
if not getattr(settings, "USE_L10N", False):
|
|
254
|
+
return errors
|
|
255
|
+
|
|
256
|
+
formats.FORMAT_SETTINGS = formats.FORMAT_SETTINGS.union(
|
|
257
|
+
[
|
|
258
|
+
"WAGTAIL_DATE_FORMAT",
|
|
259
|
+
"WAGTAIL_DATETIME_FORMAT",
|
|
260
|
+
"WAGTAIL_TIME_FORMAT",
|
|
261
|
+
]
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
for code, label in settings.LANGUAGES:
|
|
265
|
+
with translation.override(code):
|
|
266
|
+
for wagtail_format, django_formats in [
|
|
267
|
+
("WAGTAIL_DATE_FORMAT", "DATE_INPUT_FORMATS"),
|
|
268
|
+
("WAGTAIL_DATETIME_FORMAT", "DATETIME_INPUT_FORMATS"),
|
|
269
|
+
("WAGTAIL_TIME_FORMAT", "TIME_INPUT_FORMATS"),
|
|
270
|
+
]:
|
|
271
|
+
wagtail_format_value = getattr(settings, wagtail_format, None)
|
|
272
|
+
django_formats_value = getattr(settings, django_formats, None)
|
|
273
|
+
|
|
274
|
+
if wagtail_format_value is None:
|
|
275
|
+
# Skip the iteration if wagtail_format is not present
|
|
276
|
+
continue
|
|
277
|
+
|
|
278
|
+
input_format = formats.get_format_lazy(wagtail_format_value)
|
|
279
|
+
input_formats = formats.get_format_lazy(django_formats_value)
|
|
280
|
+
if str(input_format) not in str(input_formats):
|
|
281
|
+
errors.append(
|
|
282
|
+
Error(
|
|
283
|
+
"Configuration error",
|
|
284
|
+
hint=f"{wagtail_format} {input_format} must be in {django_formats} for language {label} ({code}).",
|
|
285
|
+
)
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
return errors
|
wagtail/admin/compare.py
CHANGED
|
@@ -511,7 +511,7 @@ class ChildRelationComparison:
|
|
|
511
511
|
# Relations don't have a verbose_name
|
|
512
512
|
if self.label:
|
|
513
513
|
# If the panel has a label, we set it instead.
|
|
514
|
-
# See InlinePanel.
|
|
514
|
+
# See InlinePanel.get_comparison for usage
|
|
515
515
|
verbose_name = self.label
|
|
516
516
|
else:
|
|
517
517
|
verbose_name = self.field.name.replace("_", " ")
|
wagtail/admin/filters.py
CHANGED
|
@@ -2,9 +2,11 @@ import django_filters
|
|
|
2
2
|
from django import forms
|
|
3
3
|
from django.conf import settings
|
|
4
4
|
from django.db import models
|
|
5
|
+
from django.utils.functional import cached_property
|
|
5
6
|
from django.utils.translation import gettext_lazy as _
|
|
6
7
|
from django_filters.widgets import SuffixedMultiWidget
|
|
7
8
|
|
|
9
|
+
from wagtail.admin.models import popular_tags_for_model
|
|
8
10
|
from wagtail.admin.utils import get_user_display_name
|
|
9
11
|
from wagtail.admin.widgets import AdminDateInput, BooleanRadioSelect, FilteredSelect
|
|
10
12
|
from wagtail.coreutils import get_content_languages, get_content_type_label
|
|
@@ -16,7 +18,7 @@ class DateRangePickerWidget(SuffixedMultiWidget):
|
|
|
16
18
|
"""
|
|
17
19
|
|
|
18
20
|
template_name = "wagtailadmin/widgets/daterange_input.html"
|
|
19
|
-
suffixes = ["
|
|
21
|
+
suffixes = ["from", "to"]
|
|
20
22
|
|
|
21
23
|
def __init__(self, attrs=None):
|
|
22
24
|
widgets = (
|
|
@@ -191,3 +193,70 @@ class UserModelMultipleChoiceField(django_filters.fields.ModelMultipleChoiceFiel
|
|
|
191
193
|
|
|
192
194
|
class MultipleUserFilter(django_filters.ModelMultipleChoiceFilter):
|
|
193
195
|
field_class = UserModelMultipleChoiceField
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
class CollectionChoiceIterator(django_filters.fields.ModelChoiceIterator):
|
|
199
|
+
@cached_property
|
|
200
|
+
def min_depth(self):
|
|
201
|
+
return self.queryset.get_min_depth()
|
|
202
|
+
|
|
203
|
+
def choice(self, obj):
|
|
204
|
+
return (obj.pk, obj.get_indented_name(self.min_depth, html=True))
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
class CollectionChoiceField(django_filters.fields.ModelChoiceField):
|
|
208
|
+
iterator = CollectionChoiceIterator
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class CollectionFilter(django_filters.ModelChoiceFilter):
|
|
212
|
+
field_class = CollectionChoiceField
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class PopularTagsFilter(django_filters.MultipleChoiceFilter):
|
|
216
|
+
# This uses a MultipleChoiceFilter instead of a ModelMultipleChoiceFilter
|
|
217
|
+
# because the queryset has been sliced, which means ModelMultipleChoiceFilter
|
|
218
|
+
# cannot do further queries to validate the selected tags.
|
|
219
|
+
|
|
220
|
+
def __init__(self, *args, use_subquery=False, **kwargs):
|
|
221
|
+
super().__init__(*args, **kwargs)
|
|
222
|
+
self.use_subquery = use_subquery
|
|
223
|
+
|
|
224
|
+
def filter(self, qs, value):
|
|
225
|
+
filtered = super().filter(qs, value)
|
|
226
|
+
if not self.use_subquery:
|
|
227
|
+
return filtered
|
|
228
|
+
|
|
229
|
+
# Workaround for https://github.com/wagtail/wagtail/issues/6616
|
|
230
|
+
pks = list(filtered.values_list("pk", flat=True))
|
|
231
|
+
return qs.filter(pk__in=pks)
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
class BaseMediaFilterSet(WagtailFilterSet):
|
|
235
|
+
permission_policy = None
|
|
236
|
+
|
|
237
|
+
def __init__(
|
|
238
|
+
self, data=None, queryset=None, *, request=None, prefix=None, is_searching=None
|
|
239
|
+
):
|
|
240
|
+
super().__init__(data, queryset, request=request, prefix=prefix)
|
|
241
|
+
collections_qs = self.permission_policy.collections_user_has_any_permission_for(
|
|
242
|
+
request.user, ["add", "change"]
|
|
243
|
+
)
|
|
244
|
+
# Add collection filter only if there are multiple collections
|
|
245
|
+
if collections_qs.count() > 1:
|
|
246
|
+
self.filters["collection_id"] = CollectionFilter(
|
|
247
|
+
field_name="collection_id",
|
|
248
|
+
label=_("Collection"),
|
|
249
|
+
queryset=collections_qs,
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
popular_tags = popular_tags_for_model(self._meta.model)
|
|
253
|
+
|
|
254
|
+
if popular_tags:
|
|
255
|
+
self.filters["tag"] = PopularTagsFilter(
|
|
256
|
+
label=_("Tag"),
|
|
257
|
+
field_name="tags__name",
|
|
258
|
+
choices=[(tag.name, tag.name) for tag in popular_tags],
|
|
259
|
+
widget=forms.CheckboxSelectMultiple,
|
|
260
|
+
use_subquery=is_searching,
|
|
261
|
+
help_text=_("Filter by up to ten most popular tags."),
|
|
262
|
+
)
|
wagtail/admin/forms/account.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from itertools import groupby
|
|
2
2
|
|
|
3
3
|
from django import forms
|
|
4
|
+
from django.conf import settings
|
|
4
5
|
from django.contrib.auth.models import Group, Permission
|
|
5
6
|
from django.core.exceptions import ValidationError
|
|
6
7
|
from django.db import transaction
|
|
@@ -19,6 +20,20 @@ from .view_restrictions import BaseViewRestrictionForm
|
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
class CollectionViewRestrictionForm(BaseViewRestrictionForm):
|
|
23
|
+
def __init__(self, *args, **kwargs):
|
|
24
|
+
super().__init__(*args, **kwargs)
|
|
25
|
+
|
|
26
|
+
if not getattr(settings, "WAGTAILDOCS_PRIVATE_COLLECTION_OPTIONS", {}).get(
|
|
27
|
+
"SHARED_PASSWORD",
|
|
28
|
+
True,
|
|
29
|
+
):
|
|
30
|
+
self.fields["restriction_type"].choices = [
|
|
31
|
+
choice
|
|
32
|
+
for choice in CollectionViewRestriction.RESTRICTION_CHOICES
|
|
33
|
+
if choice[0] != CollectionViewRestriction.PASSWORD
|
|
34
|
+
]
|
|
35
|
+
del self.fields["password"]
|
|
36
|
+
|
|
22
37
|
class Meta:
|
|
23
38
|
model = CollectionViewRestriction
|
|
24
39
|
fields = ("restriction_type", "password", "groups")
|
wagtail/admin/forms/pages.py
CHANGED
|
@@ -124,6 +124,19 @@ class CopyForm(forms.Form):
|
|
|
124
124
|
|
|
125
125
|
|
|
126
126
|
class PageViewRestrictionForm(BaseViewRestrictionForm):
|
|
127
|
+
def __init__(self, *args, **kwargs):
|
|
128
|
+
super().__init__(*args, **kwargs)
|
|
129
|
+
|
|
130
|
+
if not getattr(settings, "WAGTAIL_PRIVATE_PAGE_OPTIONS", {}).get(
|
|
131
|
+
"SHARED_PASSWORD", True
|
|
132
|
+
):
|
|
133
|
+
self.fields["restriction_type"].choices = [
|
|
134
|
+
choice
|
|
135
|
+
for choice in PageViewRestriction.RESTRICTION_CHOICES
|
|
136
|
+
if choice[0] != PageViewRestriction.PASSWORD
|
|
137
|
+
]
|
|
138
|
+
del self.fields["password"]
|
|
139
|
+
|
|
127
140
|
class Meta:
|
|
128
141
|
model = PageViewRestriction
|
|
129
142
|
fields = ("restriction_type", "password", "groups")
|
|
@@ -215,3 +228,39 @@ class MoveForm(forms.Form):
|
|
|
215
228
|
label=_("New parent page"),
|
|
216
229
|
help_text=_("Select a new parent for this page."),
|
|
217
230
|
)
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
class ParentChooserForm(forms.Form):
|
|
234
|
+
def __init__(self, child_page_type, user, *args, **kwargs):
|
|
235
|
+
self.child_page_type = child_page_type
|
|
236
|
+
self.user = user
|
|
237
|
+
super().__init__(*args, **kwargs)
|
|
238
|
+
self.fields["parent_page"] = forms.ModelChoiceField(
|
|
239
|
+
queryset=Page.objects.all(),
|
|
240
|
+
widget=widgets.AdminPageChooser(
|
|
241
|
+
target_models=self.child_page_type.allowed_parent_page_models(),
|
|
242
|
+
can_choose_root=True,
|
|
243
|
+
user_perms="add_subpage",
|
|
244
|
+
),
|
|
245
|
+
label=_("Parent page"),
|
|
246
|
+
help_text=_("The new page will be a child of this given parent page."),
|
|
247
|
+
)
|
|
248
|
+
|
|
249
|
+
def clean_parent_page(self):
|
|
250
|
+
parent_page = self.cleaned_data["parent_page"].specific_deferred
|
|
251
|
+
if not parent_page.permissions_for_user(self.user).can_add_subpage():
|
|
252
|
+
raise forms.ValidationError(
|
|
253
|
+
_('You do not have permission to create a page under "%(page_title)s".')
|
|
254
|
+
% {"page_title": parent_page.get_admin_display_title()}
|
|
255
|
+
)
|
|
256
|
+
if not self.child_page_type.can_create_at(parent_page):
|
|
257
|
+
raise forms.ValidationError(
|
|
258
|
+
_(
|
|
259
|
+
'You cannot create a page of type "%(page_type)s" under "%(page_title)s".'
|
|
260
|
+
)
|
|
261
|
+
% {
|
|
262
|
+
"page_type": self.child_page_type.get_verbose_name(),
|
|
263
|
+
"page_title": parent_page.get_admin_display_title(),
|
|
264
|
+
}
|
|
265
|
+
)
|
|
266
|
+
return parent_page
|
|
Binary file
|
|
@@ -335,7 +335,7 @@ msgstr "Sie können diesen Workflow nicht mehrfach derselben Seite zuweisen."
|
|
|
335
335
|
msgid ""
|
|
336
336
|
"Snippet '%(content_type)s' already has workflow '%(workflow_name)s' assigned."
|
|
337
337
|
msgstr ""
|
|
338
|
-
"
|
|
338
|
+
"'%(content_type)s'-Objekt wurde bereits Workflow '%(workflow_name)s' "
|
|
339
339
|
"zugewiesen."
|
|
340
340
|
|
|
341
341
|
msgid "Give your workflow a name"
|
|
@@ -404,18 +404,18 @@ msgid "All users in listing selected"
|
|
|
404
404
|
msgstr "Alle Benutzer der Auflistung ausgewählt"
|
|
405
405
|
|
|
406
406
|
msgid "1 snippet selected"
|
|
407
|
-
msgstr "1
|
|
407
|
+
msgstr "1 Element ausgewählt"
|
|
408
408
|
|
|
409
409
|
#, python-format
|
|
410
410
|
msgid "%(objects)s snippets selected"
|
|
411
|
-
msgstr "%(objects)s
|
|
411
|
+
msgstr "%(objects)s Elemente ausgewählt"
|
|
412
412
|
|
|
413
413
|
#, python-format
|
|
414
414
|
msgid "All %(objects)s snippets on this screen selected"
|
|
415
|
-
msgstr "Alle %(objects)s
|
|
415
|
+
msgstr "Alle %(objects)s Elemente auf dem Bildschirm ausgewählt"
|
|
416
416
|
|
|
417
417
|
msgid "All snippets in listing selected"
|
|
418
|
-
msgstr "Alle
|
|
418
|
+
msgstr "Alle Elemente der Auflistung ausgewählt"
|
|
419
419
|
|
|
420
420
|
msgid "1 item selected"
|
|
421
421
|
msgstr "1 Element ausgewählt"
|