wagtail 7.2.1__py3-none-any.whl → 7.3rc1__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 +4 -2
- wagtail/admin/action_menu.py +4 -1
- wagtail/admin/api/actions/convert_alias.py +2 -2
- wagtail/admin/api/actions/copy.py +2 -2
- wagtail/admin/api/actions/copy_for_translation.py +2 -2
- wagtail/admin/api/actions/create_alias.py +2 -2
- wagtail/admin/api/actions/delete.py +1 -1
- wagtail/admin/api/actions/move.py +1 -1
- wagtail/admin/api/actions/publish.py +2 -2
- wagtail/admin/api/actions/revert_to_page_revision.py +2 -2
- wagtail/admin/api/actions/unpublish.py +1 -1
- wagtail/admin/api/filters.py +2 -2
- wagtail/admin/compare.py +22 -0
- wagtail/admin/forms/account.py +52 -1
- wagtail/admin/forms/comments.py +53 -0
- wagtail/admin/forms/models.py +36 -0
- wagtail/admin/forms/pages.py +7 -0
- wagtail/admin/forms/workflows.py +5 -2
- wagtail/admin/icons.py +4 -3
- wagtail/admin/locale/ar/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/ar/LC_MESSAGES/django.po +35 -0
- wagtail/admin/locale/en/LC_MESSAGES/django.po +262 -234
- wagtail/admin/locale/en/LC_MESSAGES/djangojs.po +72 -43
- wagtail/admin/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/it/LC_MESSAGES/django.po +566 -6
- wagtail/admin/locale/it/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/it/LC_MESSAGES/djangojs.po +40 -2
- wagtail/admin/locale/nl/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/nl/LC_MESSAGES/django.po +2 -2
- wagtail/admin/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/admin/locale/sv/LC_MESSAGES/django.po +330 -15
- wagtail/admin/locale/sv/LC_MESSAGES/djangojs.mo +0 -0
- wagtail/admin/locale/sv/LC_MESSAGES/djangojs.po +3 -2
- wagtail/admin/panels/comment_panel.py +1 -51
- wagtail/admin/panels/title_field_panel.py +3 -1
- wagtail/admin/static/wagtailadmin/css/core.css +1 -1
- wagtail/admin/static/wagtailadmin/js/bulk-actions.js +1 -1
- wagtail/admin/static/wagtailadmin/js/comments.js +1 -1
- wagtail/admin/static/wagtailadmin/js/core.js +1 -1
- wagtail/admin/static/wagtailadmin/js/core.js.LICENSE.txt +1 -1
- wagtail/admin/static/wagtailadmin/js/draftail.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/telepath/blocks.js +1 -1
- wagtail/admin/static/wagtailadmin/js/userbar.js +1 -1
- wagtail/admin/static/wagtailadmin/js/userbar.js.LICENSE.txt +1 -1
- wagtail/admin/static/wagtailadmin/js/vendor.js +1 -1
- wagtail/admin/static/wagtailadmin/js/wagtailadmin.js +1 -1
- wagtail/admin/templates/wagtailadmin/base.html +1 -1
- wagtail/admin/templates/wagtailadmin/generic/edit_partials.html +100 -0
- wagtail/admin/templates/wagtailadmin/generic/form.html +26 -5
- wagtail/admin/templates/wagtailadmin/generic/includes/_loaded_revision_inputs.html +3 -0
- wagtail/admin/templates/wagtailadmin/generic/listing_results.html +1 -17
- wagtail/admin/templates/wagtailadmin/pages/create.html +14 -4
- wagtail/admin/templates/wagtailadmin/pages/edit.html +16 -3
- wagtail/admin/templates/wagtailadmin/pages/edit_partials.html +31 -0
- wagtail/admin/templates/wagtailadmin/pages/index_results.html +1 -9
- wagtail/admin/templates/wagtailadmin/shared/autosave/indicator.html +36 -0
- wagtail/admin/templates/wagtailadmin/shared/breadcrumbs.html +1 -1
- wagtail/admin/templates/wagtailadmin/shared/editing_sessions/list.html +2 -2
- wagtail/admin/templates/wagtailadmin/shared/editing_sessions/module.html +19 -3
- wagtail/admin/templates/wagtailadmin/shared/headers/_actions.html +5 -0
- wagtail/admin/templates/wagtailadmin/shared/headers/_history_icon_link.html +2 -2
- wagtail/admin/templates/wagtailadmin/shared/headers/slim_header.html +8 -9
- wagtail/admin/templates/wagtailadmin/shared/listing/filter_partials.html +19 -0
- wagtail/admin/templates/wagtailadmin/shared/side_panel_toggle.html +3 -3
- wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/side_panel.html +3 -0
- wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/privacy.html +18 -6
- wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/usage.html +11 -4
- wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/workflow.html +22 -1
- wagtail/admin/templates/wagtailadmin/shared/side_panels/preview.html +1 -0
- wagtail/admin/templates/wagtailadmin/shared/side_panels.html +1 -2
- wagtail/admin/templates/wagtailadmin/shared/unsaved_changes_warning.html +20 -20
- wagtail/admin/templates/wagtailadmin/userbar/base.html +2 -0
- wagtail/admin/templates/wagtailadmin/userbar/item_accessibility.html +1 -1
- wagtail/admin/templatetags/wagtailadmin_tags.py +6 -14
- wagtail/admin/tests/pages/test_create_page.py +298 -1
- wagtail/admin/tests/pages/test_custom_listing.py +48 -2
- wagtail/admin/tests/pages/test_edit_page.py +721 -7
- wagtail/admin/tests/pages/test_explorer_view.py +9 -5
- wagtail/admin/tests/pages/test_page_search.py +15 -0
- wagtail/admin/tests/pages/test_revisions.py +4 -0
- wagtail/admin/tests/test_account_management.py +88 -2
- wagtail/admin/tests/test_collections_views.py +15 -15
- wagtail/admin/tests/test_compare.py +34 -0
- wagtail/admin/tests/test_editing_sessions.py +230 -8
- wagtail/admin/tests/test_forms.py +192 -1
- wagtail/admin/tests/test_icon_sprite.py +22 -2
- wagtail/admin/tests/test_page_chooser.py +13 -13
- wagtail/admin/tests/test_reports_views.py +4 -1
- wagtail/admin/tests/test_userbar.py +69 -5
- wagtail/admin/tests/test_views_generic.py +5 -5
- wagtail/admin/tests/test_workflows.py +14 -12
- wagtail/admin/tests/viewsets/test_model_viewset.py +13 -0
- wagtail/admin/ui/autosave.py +5 -0
- wagtail/admin/ui/editing_sessions.py +3 -0
- wagtail/admin/ui/side_panels.py +19 -20
- wagtail/admin/userbar.py +48 -27
- wagtail/admin/views/bulk_action/dispatcher.py +2 -2
- wagtail/admin/views/chooser.py +6 -6
- wagtail/admin/views/editing_sessions.py +20 -7
- wagtail/admin/views/generic/__init__.py +1 -0
- wagtail/admin/views/generic/chooser.py +5 -5
- wagtail/admin/views/generic/mixins.py +143 -26
- wagtail/admin/views/generic/models.py +157 -27
- wagtail/admin/views/generic/ordering.py +1 -1
- wagtail/admin/views/generic/preview.py +4 -4
- wagtail/admin/views/home.py +3 -1
- wagtail/admin/views/pages/create.py +77 -29
- wagtail/admin/views/pages/edit.py +160 -34
- wagtail/admin/views/pages/preview.py +4 -4
- wagtail/admin/views/pages/revisions.py +3 -0
- wagtail/admin/views/pages/search.py +4 -4
- wagtail/admin/views/pages/usage.py +2 -2
- wagtail/admin/views/tags.py +2 -2
- wagtail/admin/views/workflows.py +73 -54
- wagtail/admin/viewsets/model.py +34 -8
- wagtail/admin/widgets/button.py +11 -4
- wagtail/admin/widgets/chooser.py +6 -4
- wagtail/admin/widgets/slug.py +1 -1
- wagtail/api/v2/filters.py +27 -21
- wagtail/api/v2/pagination.py +4 -4
- wagtail/api/v2/views.py +7 -7
- wagtail/blocks/list_block.py +0 -8
- wagtail/blocks/migrations/migrate_operation.py +8 -1
- wagtail/blocks/stream_block.py +2 -10
- wagtail/blocks/struct_block.py +192 -12
- wagtail/compat.py +2 -2
- wagtail/contrib/forms/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/forms/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/forms/locale/it/LC_MESSAGES/django.po +40 -2
- wagtail/contrib/frontend_cache/backends/azure.py +6 -6
- wagtail/contrib/frontend_cache/backends/cloudfront.py +2 -2
- wagtail/contrib/frontend_cache/utils.py +1 -1
- wagtail/contrib/redirects/forms.py +1 -1
- wagtail/contrib/redirects/locale/en/LC_MESSAGES/django.po +14 -14
- wagtail/contrib/redirects/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/it/LC_MESSAGES/django.po +15 -2
- wagtail/contrib/redirects/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/redirects/locale/sv/LC_MESSAGES/django.po +16 -3
- wagtail/contrib/redirects/middleware.py +11 -7
- wagtail/contrib/redirects/models.py +17 -1
- wagtail/contrib/redirects/tests/test_import_admin_views.py +3 -3
- wagtail/contrib/redirects/tests/test_redirects.py +56 -8
- wagtail/contrib/search_promotions/locale/en/LC_MESSAGES/django.po +6 -6
- wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.po +43 -2
- wagtail/contrib/search_promotions/tests.py +1 -1
- wagtail/contrib/search_promotions/views/settings.py +24 -25
- wagtail/contrib/settings/jinja2tags.py +2 -2
- wagtail/contrib/settings/locale/en/LC_MESSAGES/django.po +2 -2
- wagtail/contrib/settings/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/settings/locale/it/LC_MESSAGES/django.po +6 -2
- wagtail/contrib/settings/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/settings/locale/sv/LC_MESSAGES/django.po +3 -2
- wagtail/contrib/settings/tests/generic/test_admin.py +118 -2
- wagtail/contrib/settings/tests/site_specific/test_admin.py +78 -15
- wagtail/contrib/settings/tests/site_specific/test_model.py +2 -2
- wagtail/contrib/settings/views.py +7 -0
- wagtail/contrib/simple_translation/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/simple_translation/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/simple_translation/locale/it/LC_MESSAGES/django.po +5 -2
- wagtail/contrib/styleguide/locale/en/LC_MESSAGES/django.po +7 -7
- wagtail/contrib/styleguide/tests.py +2 -0
- wagtail/contrib/styleguide/views.py +4 -5
- wagtail/contrib/table_block/locale/ar/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/table_block/locale/ar/LC_MESSAGES/django.po +5 -1
- wagtail/contrib/table_block/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/contrib/table_block/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/table_block/locale/it/LC_MESSAGES/django.po +5 -2
- wagtail/contrib/typed_table_block/blocks.py +37 -0
- wagtail/contrib/typed_table_block/locale/en/LC_MESSAGES/django.po +10 -10
- wagtail/contrib/typed_table_block/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/contrib/typed_table_block/locale/sv/LC_MESSAGES/django.po +4 -3
- wagtail/contrib/typed_table_block/tests.py +108 -0
- wagtail/coreutils.py +4 -4
- wagtail/documents/__init__.py +4 -4
- wagtail/documents/locale/en/LC_MESSAGES/django.po +15 -15
- wagtail/documents/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/it/LC_MESSAGES/django.po +32 -2
- wagtail/documents/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/documents/locale/sv/LC_MESSAGES/django.po +32 -4
- wagtail/documents/models.py +1 -1
- wagtail/documents/tests/test_admin_views.py +19 -4
- wagtail/documents/tests/test_search.py +0 -2
- wagtail/documents/tests/test_views.py +6 -4
- wagtail/documents/views/bulk_actions/add_tags.py +1 -1
- wagtail/embeds/finders/facebook.py +3 -3
- wagtail/embeds/finders/instagram.py +3 -3
- wagtail/embeds/finders/oembed.py +7 -2
- wagtail/embeds/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/embeds/oembed_providers.py +8 -0
- wagtail/embeds/tests/test_embeds.py +35 -0
- wagtail/images/__init__.py +4 -4
- wagtail/images/admin_urls.py +3 -3
- wagtail/images/blocks.py +1 -1
- wagtail/images/formats.py +2 -2
- wagtail/images/image_operations.py +2 -2
- wagtail/images/locale/en/LC_MESSAGES/django.po +44 -40
- wagtail/images/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/it/LC_MESSAGES/django.po +50 -4
- wagtail/images/locale/nl/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/nl/LC_MESSAGES/django.po +3 -3
- wagtail/images/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/images/locale/sv/LC_MESSAGES/django.po +49 -6
- wagtail/images/models.py +11 -10
- wagtail/images/templates/wagtailimages/images/index_results.html +1 -1
- wagtail/images/templates/wagtailimages/images/url_generator.html +17 -38
- wagtail/images/templates/wagtailimages/images/url_generator_output.html +28 -0
- wagtail/images/templatetags/wagtailimages_tags.py +4 -4
- wagtail/images/tests/test_admin_views.py +432 -59
- wagtail/images/tests/test_image_operations.py +2 -2
- wagtail/images/tests/test_models.py +0 -2
- wagtail/images/views/bulk_actions/add_tags.py +1 -1
- wagtail/images/views/images.py +72 -39
- wagtail/locale/en/LC_MESSAGES/django.po +103 -105
- wagtail/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/it/LC_MESSAGES/django.po +105 -2
- wagtail/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/locale/sv/LC_MESSAGES/django.po +95 -12
- wagtail/locales/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/locales/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/locales/locale/it/LC_MESSAGES/django.po +13 -2
- wagtail/locales/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/locales/locale/sv/LC_MESSAGES/django.po +4 -3
- wagtail/locales/tests.py +5 -5
- wagtail/models/i18n.py +4 -6
- wagtail/models/media.py +18 -0
- wagtail/models/pages.py +65 -11
- wagtail/models/reference_index.py +15 -0
- wagtail/models/revisions.py +40 -12
- wagtail/models/workflows.py +0 -3
- wagtail/permission_policies/base.py +2 -2
- wagtail/permission_policies/collections.py +2 -2
- wagtail/project_template/requirements.txt +2 -2
- wagtail/search/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/signal_handlers.py +1 -0
- wagtail/sites/locale/en/LC_MESSAGES/django.po +1 -1
- wagtail/sites/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/sites/locale/sv/LC_MESSAGES/django.po +3 -2
- wagtail/sites/tests.py +7 -7
- wagtail/snippets/action_menu.py +2 -1
- wagtail/snippets/locale/en/LC_MESSAGES/django.po +23 -13
- wagtail/snippets/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/snippets/locale/sv/LC_MESSAGES/django.po +12 -1
- wagtail/snippets/tests/test_chooser_block.py +197 -0
- wagtail/snippets/tests/test_chooser_panel.py +149 -0
- wagtail/snippets/tests/test_chooser_views.py +375 -0
- wagtail/snippets/tests/test_chooser_widget.py +22 -0
- wagtail/snippets/tests/test_compare_revisions_view.py +167 -0
- wagtail/snippets/tests/test_copy_view.py +38 -0
- wagtail/snippets/tests/test_create_view.py +1159 -0
- wagtail/snippets/tests/test_delete_view.py +225 -0
- wagtail/snippets/tests/test_edit_view.py +2882 -0
- wagtail/snippets/tests/test_history_view.py +182 -0
- wagtail/snippets/tests/test_index_view.py +105 -0
- wagtail/snippets/tests/test_list_view.py +786 -0
- wagtail/snippets/tests/test_locking.py +28 -0
- wagtail/snippets/tests/test_permissions.py +167 -0
- wagtail/snippets/tests/test_preview.py +3 -3
- wagtail/snippets/tests/test_revert_view.py +343 -0
- wagtail/snippets/tests/test_snippet_models.py +112 -0
- wagtail/snippets/tests/test_unpublish_view.py +228 -0
- wagtail/snippets/tests/test_unschedule_view.py +151 -0
- wagtail/snippets/tests/test_viewset.py +38 -5
- wagtail/snippets/views/snippets.py +78 -30
- wagtail/snippets/widgets.py +2 -2
- wagtail/templatetags/wagtailcore_tags.py +2 -2
- wagtail/test/dummy_external_storage.py +1 -1
- wagtail/test/testapp/fixtures/test.json +22 -0
- wagtail/test/testapp/fixtures/test_empty.json +2 -0
- wagtail/test/testapp/fixtures/test_explorable_pages.json +10 -0
- wagtail/test/testapp/fixtures/test_specific.json +9 -0
- wagtail/test/testapp/migrations/0059_nopromotepage.py +25 -0
- wagtail/test/testapp/models.py +7 -0
- wagtail/test/testapp/views.py +5 -0
- wagtail/test/utils/page_tests.py +7 -7
- wagtail/test/utils/wagtail_factories/builder.py +2 -2
- wagtail/tests/streamfield_migrations/test_migrations.py +35 -0
- wagtail/tests/test_blocks.py +321 -61
- wagtail/tests/test_collection_model.py +12 -0
- wagtail/tests/test_page_model.py +190 -1
- wagtail/tests/test_page_privacy.py +5 -0
- wagtail/tests/test_reference_index.py +42 -0
- wagtail/tests/test_revision_model.py +118 -1
- wagtail/tests/test_utils.py +2 -2
- wagtail/users/locale/en/LC_MESSAGES/django.po +14 -14
- wagtail/users/locale/id_ID/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/id_ID/LC_MESSAGES/django.po +6 -2
- wagtail/users/locale/it/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/it/LC_MESSAGES/django.po +14 -2
- wagtail/users/locale/sv/LC_MESSAGES/django.mo +0 -0
- wagtail/users/locale/sv/LC_MESSAGES/django.po +48 -17
- wagtail/users/tests/test_admin_views.py +39 -25
- wagtail/users/utils.py +4 -1
- wagtail/users/views/groups.py +19 -5
- wagtail/users/wagtail_hooks.py +1 -1
- wagtail/utils/loading.py +2 -2
- wagtail-7.3rc1.data/data/AGENTS.md +21 -0
- wagtail-7.3rc1.data/data/CHANGELOG.txt +4941 -0
- wagtail-7.3rc1.data/data/CODE_OF_CONDUCT.md +71 -0
- wagtail-7.3rc1.data/data/CONTRIBUTORS.md +999 -0
- wagtail-7.3rc1.data/data/SPONSORS.md +55 -0
- {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/METADATA +6 -6
- {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/RECORD +310 -280
- {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/WHEEL +1 -1
- wagtail/images/static/wagtailimages/js/image-url-generator.js +0 -1
- wagtail/snippets/tests/test_snippets.py +0 -6377
- {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/entry_points.txt +0 -0
- {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/licenses/LICENSE +0 -0
- {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/top_level.txt +0 -0
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
# Translators:
|
|
6
6
|
# Jim Brouzoulis <jim.brouzoulis@chalmers.se>, 2017
|
|
7
|
+
# Jonathan Lindén, 2025
|
|
7
8
|
# Martin Sandström <martin@marteinn.se>, 2020-2021,2024
|
|
8
9
|
# Philip Andersen <renegadevi@codeofmagi.net>, 2018-2019
|
|
9
10
|
# Thomas Kunambi <kunambi@gmail.com>, 2015,2017,2021-2023
|
|
@@ -13,7 +14,7 @@ msgstr ""
|
|
|
13
14
|
"Report-Msgid-Bugs-To: \n"
|
|
14
15
|
"POT-Creation-Date: 2025-10-23 16:45+0100\n"
|
|
15
16
|
"PO-Revision-Date: 2014-02-19 11:54+0000\n"
|
|
16
|
-
"Last-Translator:
|
|
17
|
+
"Last-Translator: Jonathan Lindén, 2025\n"
|
|
17
18
|
"Language-Team: Swedish (http://app.transifex.com/torchbox/wagtail/language/"
|
|
18
19
|
"sv/)\n"
|
|
19
20
|
"MIME-Version: 1.0\n"
|
|
@@ -73,31 +74,31 @@ msgid "You cannot have multiple permission records for the same page."
|
|
|
73
74
|
msgstr "Du kan inte ha flera rättighetsinställningar för samma sida."
|
|
74
75
|
|
|
75
76
|
msgid "submitted notifications"
|
|
76
|
-
msgstr "
|
|
77
|
+
msgstr "notifikationer för inlämning"
|
|
77
78
|
|
|
78
79
|
msgid "Receive notification when a page is submitted for moderation"
|
|
79
|
-
msgstr "
|
|
80
|
+
msgstr "Ta emot notifikation när en sida blir inlämnad för moderering"
|
|
80
81
|
|
|
81
82
|
msgid "approved notifications"
|
|
82
|
-
msgstr "
|
|
83
|
+
msgstr "notifikationer för godkännande"
|
|
83
84
|
|
|
84
85
|
msgid "Receive notification when your page edit is approved"
|
|
85
|
-
msgstr "
|
|
86
|
+
msgstr "Ta emot notifikation när din sidredigering blir godkänd"
|
|
86
87
|
|
|
87
88
|
msgid "rejected notifications"
|
|
88
|
-
msgstr "
|
|
89
|
+
msgstr "notifikationer för avvisande"
|
|
89
90
|
|
|
90
91
|
msgid "Receive notification when your page edit is rejected"
|
|
91
|
-
msgstr "
|
|
92
|
+
msgstr "Ta emot notifikation när din sidredigering blir avvisad"
|
|
92
93
|
|
|
93
94
|
msgid "updated comments notifications"
|
|
94
|
-
msgstr "uppdaterade
|
|
95
|
+
msgstr "notifikationer för uppdaterade kommentarer"
|
|
95
96
|
|
|
96
97
|
msgid ""
|
|
97
98
|
"Receive notification when comments have been created, resolved, or deleted "
|
|
98
99
|
"on a page that you have subscribed to receive comment notifications on"
|
|
99
100
|
msgstr ""
|
|
100
|
-
"Ta emot
|
|
101
|
+
"Ta emot notifikationer när kommentarer har skapats, lösts, eller raderats på "
|
|
101
102
|
"en sida som du har prenumererat att få kommentarnotifikationer från"
|
|
102
103
|
|
|
103
104
|
msgid "preferred language"
|
|
@@ -127,12 +128,29 @@ msgstr "Mörkt"
|
|
|
127
128
|
msgid "admin theme"
|
|
128
129
|
msgstr "admintema"
|
|
129
130
|
|
|
131
|
+
msgid "More contrast"
|
|
132
|
+
msgstr "Mer kontrast"
|
|
133
|
+
|
|
134
|
+
msgid "contrast"
|
|
135
|
+
msgstr "kontrast"
|
|
136
|
+
|
|
130
137
|
msgid "Default"
|
|
131
138
|
msgstr "Standard"
|
|
132
139
|
|
|
140
|
+
msgid "Snug"
|
|
141
|
+
msgstr "Kompakt"
|
|
142
|
+
|
|
143
|
+
#. Translators: "Density" is the term used to describe the amount of space
|
|
144
|
+
#. between elements in the user interface
|
|
145
|
+
msgid "density"
|
|
146
|
+
msgstr "densitet"
|
|
147
|
+
|
|
133
148
|
msgid "Keyboard shortcuts"
|
|
134
149
|
msgstr "Kortkommandon"
|
|
135
150
|
|
|
151
|
+
msgid "Enable custom keyboard shortcuts specific to Wagtail."
|
|
152
|
+
msgstr "Aktivera tangentbordsgenvägar specifika för Wagtail."
|
|
153
|
+
|
|
136
154
|
msgid "user profile"
|
|
137
155
|
msgstr "användarprofil"
|
|
138
156
|
|
|
@@ -153,8 +171,8 @@ msgstr "Är du säker på att du vill tilldela denna roll till dessa användare?
|
|
|
153
171
|
|
|
154
172
|
msgid "You don't have permission to edit this user"
|
|
155
173
|
msgid_plural "You don't have permission to edit these users"
|
|
156
|
-
msgstr[0] "Du saknar rättigheter att
|
|
157
|
-
msgstr[1] "Du saknar rättigheter att
|
|
174
|
+
msgstr[0] "Du saknar rättigheter att redigera denna användare"
|
|
175
|
+
msgstr[1] "Du saknar rättigheter att redigera dessa användare"
|
|
158
176
|
|
|
159
177
|
msgid "Yes, assign"
|
|
160
178
|
msgstr "Ja, tilldela"
|
|
@@ -245,13 +263,16 @@ msgid "Toggle all"
|
|
|
245
263
|
msgstr "Växla alla"
|
|
246
264
|
|
|
247
265
|
msgid "Toggle all add permissions"
|
|
248
|
-
msgstr "Växla alla
|
|
266
|
+
msgstr "Växla alla rättigheter för att lägga till"
|
|
249
267
|
|
|
250
268
|
msgid "Toggle all change permissions"
|
|
251
|
-
msgstr "Växla alla redigera
|
|
269
|
+
msgstr "Växla alla rättigheter för att redigera"
|
|
252
270
|
|
|
253
271
|
msgid "Toggle all delete permissions"
|
|
254
|
-
msgstr "Växla alla radera
|
|
272
|
+
msgstr "Växla alla rättigheter för att radera"
|
|
273
|
+
|
|
274
|
+
msgid "Toggle all custom permissions"
|
|
275
|
+
msgstr "Växla alla anpassade rättigheter"
|
|
255
276
|
|
|
256
277
|
msgid "Other permissions"
|
|
257
278
|
msgstr "Andra rättigheter"
|
|
@@ -286,6 +307,9 @@ msgstr "Roller"
|
|
|
286
307
|
msgid "Select all users in listing"
|
|
287
308
|
msgstr "Välj alla användare i lista"
|
|
288
309
|
|
|
310
|
+
msgid "Sorry, no users match your query"
|
|
311
|
+
msgstr "Ledsen, inga användare matchar din sökning"
|
|
312
|
+
|
|
289
313
|
#, python-format
|
|
290
314
|
msgid ""
|
|
291
315
|
"There are no users configured. Why not <a "
|
|
@@ -294,12 +318,15 @@ msgstr ""
|
|
|
294
318
|
"Det finns inga användare konfigurerade. Varför inte <a "
|
|
295
319
|
"href=\"%(wagtailusers_add_url)s\">skapa några</a>?"
|
|
296
320
|
|
|
321
|
+
msgid "Can view"
|
|
322
|
+
msgstr "Kan visa"
|
|
323
|
+
|
|
297
324
|
#, python-format
|
|
298
325
|
msgid "user %(id)s (deleted)"
|
|
299
326
|
msgstr "användare %(id)s (raderad)"
|
|
300
327
|
|
|
301
328
|
msgid "Assign role to selected users"
|
|
302
|
-
msgstr "Tilldela roll
|
|
329
|
+
msgstr "Tilldela roll till valda användare"
|
|
303
330
|
|
|
304
331
|
#, python-format
|
|
305
332
|
msgid "%(num_parent_objects)d user has been assigned as %(role)s"
|
|
@@ -361,7 +388,7 @@ msgid "Group '%(object)s' updated."
|
|
|
361
388
|
msgstr "Grupp '%(object)s' uppdaterad."
|
|
362
389
|
|
|
363
390
|
msgid "The group could not be saved due to errors."
|
|
364
|
-
msgstr "Gruppen kunde inte sparas
|
|
391
|
+
msgstr "Gruppen kunde inte sparas på grund av fel."
|
|
365
392
|
|
|
366
393
|
msgid "View users in this group"
|
|
367
394
|
msgstr "Visa användare i denna grupp"
|
|
@@ -394,6 +421,10 @@ msgstr "Administratör"
|
|
|
394
421
|
msgid "Access level"
|
|
395
422
|
msgstr "Behörighetsnivå"
|
|
396
423
|
|
|
424
|
+
#, python-format
|
|
425
|
+
msgid "More options for '%(title)s'"
|
|
426
|
+
msgstr "Fler alternativ för '%(title)s'"
|
|
427
|
+
|
|
397
428
|
#, python-format
|
|
398
429
|
msgid "User '%(object)s' created."
|
|
399
430
|
msgstr "Användare '%(object)s' skapad."
|
|
@@ -406,7 +437,7 @@ msgid "User '%(object)s' updated."
|
|
|
406
437
|
msgstr "Användaren '%(object)s' uppdaterad."
|
|
407
438
|
|
|
408
439
|
msgid "The user could not be saved due to errors."
|
|
409
|
-
msgstr "Användaren kunde inte sparas
|
|
440
|
+
msgstr "Användaren kunde inte sparas på grund av fel."
|
|
410
441
|
|
|
411
442
|
msgid "Delete user"
|
|
412
443
|
msgstr "Radera användare"
|
|
@@ -79,7 +79,7 @@ class TestUserIndexView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
|
79
79
|
)
|
|
80
80
|
self.user = self.login()
|
|
81
81
|
|
|
82
|
-
def get(self, params=
|
|
82
|
+
def get(self, params=None):
|
|
83
83
|
return self.client.get(reverse("wagtailusers_users:index"), params)
|
|
84
84
|
|
|
85
85
|
def test_simple(self):
|
|
@@ -460,6 +460,20 @@ class TestUserIndexView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
|
460
460
|
"Show profile",
|
|
461
461
|
)
|
|
462
462
|
|
|
463
|
+
def test_bulk_action_rendered(self):
|
|
464
|
+
response = self.get()
|
|
465
|
+
self.assertEqual(response.status_code, 200)
|
|
466
|
+
# Should render bulk actions markup
|
|
467
|
+
bulk_actions_js = versioned_static("wagtailadmin/js/bulk-actions.js")
|
|
468
|
+
soup = self.get_soup(response.content)
|
|
469
|
+
script = soup.select_one(f"script[src='{bulk_actions_js}']")
|
|
470
|
+
self.assertIsNotNone(script)
|
|
471
|
+
bulk_actions = soup.select("[data-bulk-action-button]")
|
|
472
|
+
self.assertTrue(bulk_actions)
|
|
473
|
+
# 'next' parameter is constructed client-side later based on filters state
|
|
474
|
+
for action in bulk_actions:
|
|
475
|
+
self.assertNotIn("next=", action["href"])
|
|
476
|
+
|
|
463
477
|
|
|
464
478
|
class TestUserIndexResultsView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
465
479
|
def setUp(self):
|
|
@@ -473,7 +487,7 @@ class TestUserIndexResultsView(AdminTemplateTestUtils, WagtailTestUtils, TestCas
|
|
|
473
487
|
)
|
|
474
488
|
self.login()
|
|
475
489
|
|
|
476
|
-
def get(self, params=
|
|
490
|
+
def get(self, params=None):
|
|
477
491
|
return self.client.get(reverse("wagtailusers_users:index_results"), params)
|
|
478
492
|
|
|
479
493
|
def test_simple(self):
|
|
@@ -504,10 +518,10 @@ class TestUserCreateView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
|
504
518
|
}
|
|
505
519
|
)
|
|
506
520
|
|
|
507
|
-
def get(self, params=
|
|
521
|
+
def get(self, params=None):
|
|
508
522
|
return self.client.get(reverse("wagtailusers_users:add"), params)
|
|
509
523
|
|
|
510
|
-
def post(self, post_data=
|
|
524
|
+
def post(self, post_data=None, follow=False):
|
|
511
525
|
return self.client.post(
|
|
512
526
|
reverse("wagtailusers_users:add"), post_data, follow=follow
|
|
513
527
|
)
|
|
@@ -768,12 +782,12 @@ class TestUserDeleteView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
|
768
782
|
)
|
|
769
783
|
self.current_user = self.login()
|
|
770
784
|
|
|
771
|
-
def get(self, params=
|
|
785
|
+
def get(self, params=None):
|
|
772
786
|
return self.client.get(
|
|
773
787
|
reverse("wagtailusers_users:delete", args=(self.test_user.pk,)), params
|
|
774
788
|
)
|
|
775
789
|
|
|
776
|
-
def post(self, post_data=
|
|
790
|
+
def post(self, post_data=None, follow=False):
|
|
777
791
|
return self.client.post(
|
|
778
792
|
reverse("wagtailusers_users:delete", args=(self.test_user.pk,)),
|
|
779
793
|
post_data,
|
|
@@ -1030,13 +1044,13 @@ class TestUserEditView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
|
1030
1044
|
# Login
|
|
1031
1045
|
self.current_user = self.login()
|
|
1032
1046
|
|
|
1033
|
-
def get(self, params=
|
|
1047
|
+
def get(self, params=None, user_id=None):
|
|
1034
1048
|
return self.client.get(
|
|
1035
1049
|
reverse("wagtailusers_users:edit", args=(user_id or self.test_user.pk,)),
|
|
1036
1050
|
params,
|
|
1037
1051
|
)
|
|
1038
1052
|
|
|
1039
|
-
def post(self, post_data=
|
|
1053
|
+
def post(self, post_data=None, user_id=None, follow=False):
|
|
1040
1054
|
return self.client.post(
|
|
1041
1055
|
reverse("wagtailusers_users:edit", args=(user_id or self.test_user.pk,)),
|
|
1042
1056
|
post_data,
|
|
@@ -1633,7 +1647,7 @@ class TestGroupIndexView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
|
1633
1647
|
def setUp(self):
|
|
1634
1648
|
self.login()
|
|
1635
1649
|
|
|
1636
|
-
def get(self, params=
|
|
1650
|
+
def get(self, params=None):
|
|
1637
1651
|
return self.client.get(reverse("wagtailusers_groups:index"), params)
|
|
1638
1652
|
|
|
1639
1653
|
def test_simple(self):
|
|
@@ -1666,7 +1680,7 @@ class TestGroupIndexResultsView(AdminTemplateTestUtils, WagtailTestUtils, TestCa
|
|
|
1666
1680
|
def setUp(self):
|
|
1667
1681
|
self.login()
|
|
1668
1682
|
|
|
1669
|
-
def get(self, params=
|
|
1683
|
+
def get(self, params=None):
|
|
1670
1684
|
return self.client.get(reverse("wagtailusers_groups:index_results"), params)
|
|
1671
1685
|
|
|
1672
1686
|
def test_simple(self):
|
|
@@ -1692,10 +1706,10 @@ class TestGroupCreateView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
|
1692
1706
|
content_type__app_label="wagtaildocs", codename="change_document"
|
|
1693
1707
|
)
|
|
1694
1708
|
|
|
1695
|
-
def get(self, params=
|
|
1709
|
+
def get(self, params=None):
|
|
1696
1710
|
return self.client.get(reverse("wagtailusers_groups:add"), params)
|
|
1697
1711
|
|
|
1698
|
-
def post(self, post_data=
|
|
1712
|
+
def post(self, post_data=None):
|
|
1699
1713
|
post_defaults = {
|
|
1700
1714
|
"page_permissions-TOTAL_FORMS": ["0"],
|
|
1701
1715
|
"page_permissions-MAX_NUM_FORMS": ["1000"],
|
|
@@ -2080,14 +2094,14 @@ class TestGroupEditView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
|
2080
2094
|
# Login
|
|
2081
2095
|
self.user = self.login()
|
|
2082
2096
|
|
|
2083
|
-
def get(self, params=
|
|
2097
|
+
def get(self, params=None, group_id=None):
|
|
2084
2098
|
return self.client.get(
|
|
2085
2099
|
reverse("wagtailusers_groups:edit", args=(group_id or self.test_group.pk,)),
|
|
2086
2100
|
params,
|
|
2087
2101
|
)
|
|
2088
2102
|
|
|
2089
|
-
def post(self, post_data=
|
|
2090
|
-
|
|
2103
|
+
def post(self, post_data=None, group_id=None):
|
|
2104
|
+
post_data_final = {
|
|
2091
2105
|
"name": "test group",
|
|
2092
2106
|
"permissions": [self.existing_permission.pk],
|
|
2093
2107
|
"page_permissions-TOTAL_FORMS": ["1"],
|
|
@@ -2107,11 +2121,11 @@ class TestGroupEditView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
|
|
|
2107
2121
|
"collection_permissions-MAX_NUM_FORMS": ["1000"],
|
|
2108
2122
|
"collection_permissions-INITIAL_FORMS": ["0"],
|
|
2109
2123
|
}
|
|
2110
|
-
|
|
2111
|
-
|
|
2124
|
+
if post_data:
|
|
2125
|
+
post_data_final.update(post_data)
|
|
2112
2126
|
return self.client.post(
|
|
2113
2127
|
reverse("wagtailusers_groups:edit", args=(group_id or self.test_group.pk,)),
|
|
2114
|
-
|
|
2128
|
+
post_data_final,
|
|
2115
2129
|
)
|
|
2116
2130
|
|
|
2117
2131
|
def add_non_registered_perm(self):
|
|
@@ -2835,7 +2849,7 @@ class TestAuthorisationIndexView(WagtailTestUtils, TestCase):
|
|
|
2835
2849
|
self._user.user_permissions.add(Permission.objects.get(codename="access_admin"))
|
|
2836
2850
|
self.login(username="auth_user", password="password")
|
|
2837
2851
|
|
|
2838
|
-
def get(self, params=
|
|
2852
|
+
def get(self, params=None):
|
|
2839
2853
|
return self.client.get(reverse("wagtailusers_users:index"))
|
|
2840
2854
|
|
|
2841
2855
|
def test_simple(self):
|
|
@@ -2882,10 +2896,10 @@ class TestAuthorisationCreateView(WagtailTestUtils, TestCase):
|
|
|
2882
2896
|
}
|
|
2883
2897
|
)
|
|
2884
2898
|
|
|
2885
|
-
def get(self, params=
|
|
2899
|
+
def get(self, params=None):
|
|
2886
2900
|
return self.client.get(reverse("wagtailusers_users:add"), params)
|
|
2887
2901
|
|
|
2888
|
-
def post(self, post_data=
|
|
2902
|
+
def post(self, post_data=None):
|
|
2889
2903
|
return self.client.post(reverse("wagtailusers_users:add"), post_data)
|
|
2890
2904
|
|
|
2891
2905
|
def gain_permissions(self):
|
|
@@ -2959,13 +2973,13 @@ class TestAuthorisationEditView(WagtailTestUtils, TestCase):
|
|
|
2959
2973
|
}
|
|
2960
2974
|
)
|
|
2961
2975
|
|
|
2962
|
-
def get(self, params=
|
|
2976
|
+
def get(self, params=None, user_id=None):
|
|
2963
2977
|
return self.client.get(
|
|
2964
2978
|
reverse("wagtailusers_users:edit", args=(user_id or self.test_user.pk,)),
|
|
2965
2979
|
params,
|
|
2966
2980
|
)
|
|
2967
2981
|
|
|
2968
|
-
def post(self, post_data=
|
|
2982
|
+
def post(self, post_data=None, user_id=None):
|
|
2969
2983
|
return self.client.post(
|
|
2970
2984
|
reverse("wagtailusers_users:edit", args=(user_id or self.test_user.pk,)),
|
|
2971
2985
|
post_data,
|
|
@@ -3026,12 +3040,12 @@ class TestAuthorisationDeleteView(WagtailTestUtils, TestCase):
|
|
|
3026
3040
|
password="password",
|
|
3027
3041
|
)
|
|
3028
3042
|
|
|
3029
|
-
def get(self, params=
|
|
3043
|
+
def get(self, params=None):
|
|
3030
3044
|
return self.client.get(
|
|
3031
3045
|
reverse("wagtailusers_users:delete", args=(self.test_user.pk,)), params
|
|
3032
3046
|
)
|
|
3033
3047
|
|
|
3034
|
-
def post(self, post_data=
|
|
3048
|
+
def post(self, post_data=None):
|
|
3035
3049
|
return self.client.post(
|
|
3036
3050
|
reverse("wagtailusers_users:delete", args=(self.test_user.pk,)), post_data
|
|
3037
3051
|
)
|
wagtail/users/utils.py
CHANGED
|
@@ -27,7 +27,7 @@ def user_can_delete_user(current_user, user_to_delete):
|
|
|
27
27
|
return True
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
def get_gravatar_url(email, size=50, default_params=
|
|
30
|
+
def get_gravatar_url(email, size=50, default_params=None):
|
|
31
31
|
"""
|
|
32
32
|
See https://gravatar.com/site/implement/images/ for Gravatar image options.
|
|
33
33
|
|
|
@@ -50,6 +50,9 @@ def get_gravatar_url(email, size=50, default_params={"d": "mp"}):
|
|
|
50
50
|
it will be overridden by the provider URL's query parameter.
|
|
51
51
|
"""
|
|
52
52
|
|
|
53
|
+
if default_params is None:
|
|
54
|
+
default_params = {"d": "mp"}
|
|
55
|
+
|
|
53
56
|
gravatar_provider_url = getattr(
|
|
54
57
|
settings, "WAGTAIL_GRAVATAR_PROVIDER_URL", "//www.gravatar.com/avatar"
|
|
55
58
|
)
|
wagtail/users/views/groups.py
CHANGED
|
@@ -42,19 +42,33 @@ class PermissionPanelFormsMixin:
|
|
|
42
42
|
|
|
43
43
|
return kwargs
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
@cached_property
|
|
46
|
+
def permission_panel_forms(self):
|
|
46
47
|
return [
|
|
47
48
|
cls(**self.get_permission_panel_form_kwargs(cls))
|
|
48
49
|
for cls in get_permission_panel_classes()
|
|
49
50
|
]
|
|
50
51
|
|
|
52
|
+
def is_valid(self, form):
|
|
53
|
+
"""
|
|
54
|
+
Check if the form and all permission panel forms are valid.
|
|
55
|
+
"""
|
|
56
|
+
if not super().is_valid(form):
|
|
57
|
+
return False
|
|
58
|
+
|
|
59
|
+
for panel in self.permission_panel_forms:
|
|
60
|
+
if not panel.is_valid():
|
|
61
|
+
self.produced_error_message = self.get_error_message()
|
|
62
|
+
return False
|
|
63
|
+
|
|
64
|
+
return True
|
|
65
|
+
|
|
51
66
|
def process_form(self):
|
|
52
67
|
form = self.get_form()
|
|
53
|
-
|
|
54
|
-
if form.is_valid() and all(panel.is_valid() for panel in permission_panels):
|
|
68
|
+
if self.is_valid(form):
|
|
55
69
|
response = self.form_valid(form)
|
|
56
70
|
|
|
57
|
-
for panel in
|
|
71
|
+
for panel in self.permission_panel_forms:
|
|
58
72
|
panel.save()
|
|
59
73
|
|
|
60
74
|
return response
|
|
@@ -63,7 +77,7 @@ class PermissionPanelFormsMixin:
|
|
|
63
77
|
|
|
64
78
|
def get_context_data(self, **kwargs):
|
|
65
79
|
if "permission_panels" not in kwargs:
|
|
66
|
-
kwargs["permission_panels"] = self.
|
|
80
|
+
kwargs["permission_panels"] = self.permission_panel_forms
|
|
67
81
|
|
|
68
82
|
context = super().get_context_data(**kwargs)
|
|
69
83
|
|
wagtail/users/wagtail_hooks.py
CHANGED
wagtail/utils/loading.py
CHANGED
|
@@ -7,8 +7,8 @@ def get_custom_form(form_setting):
|
|
|
7
7
|
"""Return custom form class if defined and available"""
|
|
8
8
|
try:
|
|
9
9
|
return import_string(getattr(settings, form_setting))
|
|
10
|
-
except ImportError:
|
|
10
|
+
except ImportError as e:
|
|
11
11
|
raise ImproperlyConfigured(
|
|
12
12
|
"%s refers to a form '%s' that is not available"
|
|
13
13
|
% (form_setting, getattr(settings, form_setting))
|
|
14
|
-
)
|
|
14
|
+
) from e
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# AGENTS Instruction
|
|
2
|
+
|
|
3
|
+
The main developer documentation for Wagtail lives in the `docs/contributing` directory. Here is additional guidance for agents.
|
|
4
|
+
|
|
5
|
+
## Pull request guidelines
|
|
6
|
+
|
|
7
|
+
- Describe the "why" of the changes, why the proposed solution is the right one.
|
|
8
|
+
- Highlight areas of the proposed changes that require careful review.
|
|
9
|
+
- Always add a disclaimer to the PR description mentioning how AI agents are involved with the contribution.
|
|
10
|
+
|
|
11
|
+
### AI/Agent disclosure template (copy/paste & edit):
|
|
12
|
+
|
|
13
|
+
**If human review has *not yet* occurred (use this initially):**
|
|
14
|
+
> This pull request includes code written with the assistance of AI.
|
|
15
|
+
> The code has **not yet been reviewed** by a human.
|
|
16
|
+
|
|
17
|
+
## Wagtail-specific pitfalls for AI agents
|
|
18
|
+
|
|
19
|
+
### StreamField and StreamBlock template access
|
|
20
|
+
|
|
21
|
+
- Wagtail's StreamBlock and StreamField use the same template syntax, but they differ from standard Django field access. When you use StreamField and other custom block types in Wagtail templates, you usually need to use the value property in your data variables.
|