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
|
@@ -2,15 +2,7 @@
|
|
|
2
2
|
{% load wagtailadmin_tags wagtailimages_tags %}
|
|
3
3
|
{% load i18n %}
|
|
4
4
|
|
|
5
|
-
{% block
|
|
6
|
-
{% include "wagtailadmin/shared/header.html" with title=page_title icon=header_icon merged=1 only %}
|
|
7
|
-
{% endblock %}
|
|
8
|
-
|
|
9
|
-
{% block content %}
|
|
10
|
-
{% block header %}
|
|
11
|
-
{{ block.super }}
|
|
12
|
-
{% endblock %}
|
|
13
|
-
|
|
5
|
+
{% block main_content %}
|
|
14
6
|
<div class="w-tabs" data-tabs>
|
|
15
7
|
<div class="w-tabs__wrapper">
|
|
16
8
|
<div role="tablist" class="w-tabs__list">
|
|
@@ -2,15 +2,7 @@
|
|
|
2
2
|
{% load wagtailimages_tags wagtailadmin_tags %}
|
|
3
3
|
{% load i18n %}
|
|
4
4
|
|
|
5
|
-
{% block
|
|
6
|
-
{% include "wagtailadmin/shared/header.html" with title=page_title subtitle=page_subtitle icon=header_icon merged=1 only %}
|
|
7
|
-
{% endblock %}
|
|
8
|
-
|
|
9
|
-
{% block content %}
|
|
10
|
-
{% block header %}
|
|
11
|
-
{{ block.super }}
|
|
12
|
-
{% endblock %}
|
|
13
|
-
|
|
5
|
+
{% block main_content %}
|
|
14
6
|
<div class="w-tabs" data-tabs>
|
|
15
7
|
<div class="w-tabs__wrapper">
|
|
16
8
|
<div role="tablist" class="w-tabs__list">
|
|
@@ -8,10 +8,7 @@
|
|
|
8
8
|
<script defer src="{% versioned_static 'wagtailadmin/js/bulk-actions.js' %}"></script>
|
|
9
9
|
{% endblock %}
|
|
10
10
|
|
|
11
|
-
{% block
|
|
12
|
-
<div id="listing-results" class="users">
|
|
13
|
-
{% include "wagtailusers/users/index_results.html" %}
|
|
14
|
-
</div>
|
|
11
|
+
{% block bulk_actions %}
|
|
15
12
|
{% trans "Select all users in listing" as select_all_text %}
|
|
16
|
-
{% include 'wagtailadmin/bulk_actions/footer.html' with select_all_obj_text=select_all_text app_label=app_label model_name=model_name objects=page_obj %}
|
|
13
|
+
{% include 'wagtailadmin/bulk_actions/footer.html' with select_all_obj_text=select_all_text app_label=model_opts.app_label model_name=model_opts.model_name objects=page_obj %}
|
|
17
14
|
{% endblock %}
|
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
{% extends "wagtailadmin/generic/index_results.html" %}
|
|
2
2
|
{% load i18n wagtailadmin_tags %}
|
|
3
3
|
|
|
4
|
-
{% block results %}
|
|
5
|
-
{% include "wagtailusers/users/list.html" %}
|
|
6
|
-
{% endblock %}
|
|
7
|
-
|
|
8
4
|
{% block no_results_message %}
|
|
9
|
-
{% if is_searching %}
|
|
10
|
-
<h2 role="alert">{% blocktrans trimmed %}Sorry, no users match
|
|
5
|
+
{% if is_searching or is_filtering %}
|
|
6
|
+
<h2 role="alert">{% blocktrans trimmed %}Sorry, no users match your query{% endblocktrans %}</h2>
|
|
11
7
|
{% else %}
|
|
12
|
-
{%
|
|
13
|
-
{% with group.name as group_name %}
|
|
14
|
-
<p>{% blocktrans trimmed with wagtailusers_add_url=add_url %}The {{ group_name }} group has no users configured. Why not <a href="{{ wagtailusers_add_url }}">add some</a>?{% endblocktrans %}</p>
|
|
15
|
-
{% endwith %}
|
|
16
|
-
{% else %}
|
|
17
|
-
<p>{% blocktrans trimmed with wagtailusers_add_url=add_url %}There are no users configured. Why not <a href="{{ wagtailusers_add_url }}">add some</a>?{% endblocktrans %}</p>
|
|
18
|
-
{% endif %}
|
|
8
|
+
<p>{% blocktrans trimmed with wagtailusers_add_url=add_url %}There are no users configured. Why not <a href="{{ wagtailusers_add_url }}">add some</a>?{% endblocktrans %}</p>
|
|
19
9
|
{% endif %}
|
|
20
10
|
{% endblock %}
|
|
@@ -1,14 +1,60 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
from collections import defaultdict
|
|
2
|
+
from warnings import warn
|
|
3
3
|
|
|
4
4
|
from django import template
|
|
5
|
+
from django.contrib.auth import get_permission_codename
|
|
6
|
+
from django.contrib.auth.models import Permission
|
|
7
|
+
from django.contrib.contenttypes.models import ContentType
|
|
8
|
+
from django.utils.text import camel_case_to_spaces
|
|
5
9
|
|
|
6
10
|
from wagtail import hooks
|
|
11
|
+
from wagtail.admin.models import Admin
|
|
12
|
+
from wagtail.coreutils import accepts_kwarg
|
|
7
13
|
from wagtail.users.permission_order import CONTENT_TYPE_ORDER
|
|
14
|
+
from wagtail.utils.deprecation import RemovedInWagtail70Warning
|
|
8
15
|
|
|
9
16
|
register = template.Library()
|
|
10
17
|
|
|
11
18
|
|
|
19
|
+
def normalize_permission_label(permission: Permission):
|
|
20
|
+
"""
|
|
21
|
+
Strip model name from the end of the label, e.g. "Can deliver pizza" for a
|
|
22
|
+
Pizza model becomes "Can deliver". For permissions in the model's
|
|
23
|
+
Meta.default_permissions with default labels, also replace underscores
|
|
24
|
+
with spaces.
|
|
25
|
+
|
|
26
|
+
This is used to display custom model permissions in the admin.
|
|
27
|
+
|
|
28
|
+
See https://github.com/wagtail/wagtail/issues/10982.
|
|
29
|
+
"""
|
|
30
|
+
label = permission.name
|
|
31
|
+
content_type = permission.content_type
|
|
32
|
+
model = content_type.model_class()
|
|
33
|
+
verbose_name = default_verbose_name = content_type.name
|
|
34
|
+
|
|
35
|
+
if model:
|
|
36
|
+
default_verbose_name = camel_case_to_spaces(model._meta.object_name)
|
|
37
|
+
|
|
38
|
+
# If it's in default_permissions and the label matches Django's default
|
|
39
|
+
# label, remove the model name from the end of the label. Also replace
|
|
40
|
+
# underscores with spaces, as Django uses the action internal name as-is
|
|
41
|
+
# for the permission label, which means it tends to be in snake_case.
|
|
42
|
+
for action in model._meta.default_permissions:
|
|
43
|
+
default_codename = get_permission_codename(action, model._meta)
|
|
44
|
+
is_default = permission.codename == default_codename
|
|
45
|
+
if is_default and permission.name.startswith(f"Can {action}"):
|
|
46
|
+
return f"Can {action.replace('_', ' ')}"
|
|
47
|
+
|
|
48
|
+
# For all other cases (including custom permissions), try to remove the
|
|
49
|
+
# verbose name from the end of the label. This only works if the label
|
|
50
|
+
# matches the current verbose name or Django's default verbose name.
|
|
51
|
+
for name in (default_verbose_name, verbose_name):
|
|
52
|
+
if label.lower().endswith(name.lower()):
|
|
53
|
+
return label[: -len(name)].strip()
|
|
54
|
+
|
|
55
|
+
return label
|
|
56
|
+
|
|
57
|
+
|
|
12
58
|
@register.inclusion_tag("wagtailusers/groups/includes/formatted_permissions.html")
|
|
13
59
|
def format_permissions(permission_bound_field):
|
|
14
60
|
"""
|
|
@@ -55,9 +101,6 @@ def format_permissions(permission_bound_field):
|
|
|
55
101
|
for checkbox in permission_bound_field
|
|
56
102
|
}
|
|
57
103
|
|
|
58
|
-
object_perms = []
|
|
59
|
-
other_perms = []
|
|
60
|
-
|
|
61
104
|
# Permissions that are known by Wagtail, to be shown under their own columns.
|
|
62
105
|
# Other permissions will be shown under the "custom permissions" column.
|
|
63
106
|
main_permission_names = ["add", "change", "delete", "publish", "lock", "unlock"]
|
|
@@ -69,38 +112,66 @@ def format_permissions(permission_bound_field):
|
|
|
69
112
|
"unlock": False,
|
|
70
113
|
"custom": False,
|
|
71
114
|
}
|
|
115
|
+
# Batch the permission query for all content types, then group by content type
|
|
116
|
+
# (instead of querying permissions for each content type separately)
|
|
117
|
+
content_perms_by_ct_id = defaultdict(list)
|
|
118
|
+
permissions = permissions.filter(content_type_id__in=content_type_ids)
|
|
119
|
+
for permission in permissions:
|
|
120
|
+
content_perms_by_ct_id[permission.content_type_id].append(permission)
|
|
121
|
+
|
|
122
|
+
# Permissions that use Wagtail's Admin content type, to be displayed
|
|
123
|
+
# under the "Other permissions" section alongside the
|
|
124
|
+
# "Can access Wagtail admin" permission.
|
|
125
|
+
admin_content_type = ContentType.objects.get_for_model(Admin)
|
|
126
|
+
admin_permissions = content_perms_by_ct_id.pop(admin_content_type.id, [])
|
|
127
|
+
other_perms = [(perm, checkboxes_by_id[perm.id]) for perm in admin_permissions]
|
|
128
|
+
|
|
129
|
+
# We're done with the admin content type, so remove it from the list of content types
|
|
130
|
+
# but make sure the sorted order is preserved.
|
|
131
|
+
content_type_ids = [
|
|
132
|
+
ct_id for ct_id in content_type_ids if ct_id != admin_content_type.pk
|
|
133
|
+
]
|
|
134
|
+
|
|
135
|
+
# Permissions for all other content types, to be displayed under the
|
|
136
|
+
# "Object permissions" section.
|
|
137
|
+
object_perms = []
|
|
72
138
|
|
|
73
|
-
|
|
74
|
-
|
|
139
|
+
# Iterate using the sorted content_type_ids
|
|
140
|
+
for ct_id in content_type_ids:
|
|
141
|
+
content_perms = content_perms_by_ct_id[ct_id]
|
|
75
142
|
content_perms_dict = {}
|
|
76
143
|
custom_perms = []
|
|
77
144
|
|
|
78
|
-
if content_perms[0].content_type.name == "admin":
|
|
79
|
-
perm = content_perms[0]
|
|
80
|
-
other_perms.append((perm, checkboxes_by_id[perm.id]))
|
|
81
|
-
continue
|
|
82
|
-
|
|
83
145
|
for perm in content_perms:
|
|
84
146
|
content_perms_dict["object"] = perm.content_type.name
|
|
85
147
|
checkbox = checkboxes_by_id[perm.id]
|
|
148
|
+
attrs = {"data-action": "w-bulk#toggle", "data-w-bulk-target": "item"}
|
|
86
149
|
# identify the main categories of permission, and assign to
|
|
87
150
|
# the relevant dict key, else bung in the 'custom_perms' list
|
|
88
151
|
permission_action = perm.codename.split("_")[0]
|
|
89
|
-
|
|
152
|
+
is_known = (
|
|
153
|
+
permission_action in main_permission_names
|
|
154
|
+
and perm.codename == f"{permission_action}_{perm.content_type.model}"
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
if is_known:
|
|
90
158
|
if permission_action in extra_perms_exist:
|
|
91
159
|
extra_perms_exist[permission_action] = True
|
|
160
|
+
checkbox.data["attrs"].update(attrs)
|
|
161
|
+
checkbox.data["attrs"]["data-w-bulk-group-param"] = permission_action
|
|
92
162
|
content_perms_dict[permission_action] = {
|
|
93
163
|
"perm": perm,
|
|
94
164
|
"checkbox": checkbox,
|
|
95
165
|
}
|
|
96
166
|
else:
|
|
97
167
|
extra_perms_exist["custom"] = True
|
|
168
|
+
attrs["data-w-bulk-group-param"] = "custom"
|
|
169
|
+
perm_name = normalize_permission_label(perm)
|
|
98
170
|
custom_perms.append(
|
|
99
171
|
{
|
|
172
|
+
"attrs": attrs,
|
|
100
173
|
"perm": perm,
|
|
101
|
-
"name":
|
|
102
|
-
f"{perm.content_type.name}$", "", perm.name, flags=re.I
|
|
103
|
-
).strip(),
|
|
174
|
+
"name": perm_name,
|
|
104
175
|
"selected": checkbox.data["selected"],
|
|
105
176
|
}
|
|
106
177
|
)
|
|
@@ -116,8 +187,24 @@ def format_permissions(permission_bound_field):
|
|
|
116
187
|
|
|
117
188
|
@register.inclusion_tag("wagtailadmin/shared/buttons.html", takes_context=True)
|
|
118
189
|
def user_listing_buttons(context, user):
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
190
|
+
warn(
|
|
191
|
+
"`user_listing_buttons` template tag is deprecated.",
|
|
192
|
+
category=RemovedInWagtail70Warning,
|
|
122
193
|
)
|
|
123
|
-
|
|
194
|
+
|
|
195
|
+
buttons = []
|
|
196
|
+
|
|
197
|
+
for hook in hooks.get_hooks("register_user_listing_buttons"):
|
|
198
|
+
if accepts_kwarg(hook, "request_user"):
|
|
199
|
+
buttons.extend(hook(user=user, request_user=context.get("request").user))
|
|
200
|
+
else:
|
|
201
|
+
# old-style hook that accepts a context argument instead of request_user
|
|
202
|
+
buttons.extend(hook(context, user))
|
|
203
|
+
warn(
|
|
204
|
+
"`register_user_listing_buttons` hook functions should accept a "
|
|
205
|
+
"`request_user` argument instead of `context` - "
|
|
206
|
+
f"{hook.__module__}.{hook.__name__} needs to be updated",
|
|
207
|
+
category=RemovedInWagtail70Warning,
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
return {"user": user, "buttons": sorted(buttons)}
|