A Django content management system focused on flexibility and user experience
This report presents the forensic synthetic code analysis of wagtail/wagtail, a Python project with 20,392 GitHub stars. SynthScan v2.0 examined 404,896 lines of code across 2314 source files, recording 5384 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 14.5 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 5384 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wagtail/tasks.py | 11 | def update_reference_index_task(app_label, model_name, pk): | CODE |
| LOW | wagtail/tasks.py | 37 | def delete_file_from_storage_task(deconstructed_storage, path): | CODE |
| LOW | wagtail/fields.py | 299 | def get_block_by_content_path(self, value, path_elements): | CODE |
| LOW | wagtail/query.py | 613 | def annotate_approved_schedule(self): | CODE |
| LOW | wagtail/query.py | 643 | def annotate_has_untranslated_locale(self): | CODE |
| LOW | wagtail/coreutils.py | 285 | def get_supported_content_language_variant(lang_code, strict=False): | CODE |
| LOW | wagtail/coreutils.py | 320 | def get_locales_display_names() -> dict: | CODE |
| LOW | wagtail/coreutils.py | 554 | def make_wagtail_template_fragment_key(fragment_name, page, site, vary_on=None): | CODE |
| LOW⚡ | wagtail/wagtail_hooks.py | 100 | def register_workflow_permissions(): | CODE |
| LOW⚡ | wagtail/wagtail_hooks.py | 107 | def register_task_permissions(): | CODE |
| LOW⚡ | wagtail/wagtail_hooks.py | 115 | def describe_collection_children(collection): | CODE |
| LOW | wagtail/wagtail_hooks.py | 132 | def register_core_log_actions(actions): | CODE |
| LOW | wagtail/wagtail_hooks.py | 387 | def _field_label_from_content_path(model, content_path): | CODE |
| LOW | wagtail/wagtail_hooks.py | 514 | def register_workflow_log_actions(actions): | CODE |
| LOW | wagtail/log_actions.py | 148 | def get_log_model_for_instance(self, instance): | CODE |
| LOW⚡ | wagtail/signal_handlers.py | 23 | def post_save_site_signal_handler(instance, update_fields=None, **kwargs): | CODE |
| LOW⚡ | wagtail/signal_handlers.py | 27 | def post_delete_site_signal_handler(instance, **kwargs): | CODE |
| LOW⚡ | wagtail/signal_handlers.py | 31 | def pre_delete_page_unpublish(sender, instance, **kwargs): | CODE |
| LOW⚡ | wagtail/signal_handlers.py | 38 | def post_delete_page_log_deletion(sender, instance, **kwargs): | CODE |
| LOW⚡ | wagtail/signal_handlers.py | 42 | def reset_locales_display_names_cache(sender, instance, **kwargs): | CODE |
| LOW⚡ | wagtail/signal_handlers.py | 50 | def disable_reference_index_auto_update(): | CODE |
| LOW | wagtail/signal_handlers.py | 66 | def update_reference_index_on_save(instance, **kwargs): | CODE |
| LOW⚡ | wagtail/signal_handlers.py | 79 | def remove_reference_index_on_delete(instance, **kwargs): | CODE |
| LOW⚡ | wagtail/signal_handlers.py | 88 | def connect_reference_index_signal_handlers_for_model(model): | CODE |
| LOW⚡ | wagtail/signal_handlers.py | 93 | def connect_reference_index_signal_handlers(**kwargs): | CODE |
| LOW⚡ | wagtail/signal_handlers.py | 98 | def disconnect_reference_index_signal_handlers_for_model(model): | CODE |
| LOW⚡ | wagtail/signal_handlers.py | 103 | def disconnect_reference_index_signal_handlers(**kwargs): | CODE |
| LOW | wagtail/views.py | 35 | def authenticate_with_password(request, page_view_restriction_id, page_id): | CODE |
| LOW | wagtail/blocks/list_block.py | 200 | def defer_required_validation(self): | CODE |
| LOW | wagtail/blocks/list_block.py | 252 | def restore_deferred_validation(self): | CODE |
| LOW | wagtail/blocks/list_block.py | 413 | def get_block_by_content_path(self, value, path_elements): | CODE |
| LOW | wagtail/blocks/struct_block.py | 151 | def unique_children_and_settings(self): | CODE |
| LOW | wagtail/blocks/struct_block.py | 305 | def defer_required_validation(self): | CODE |
| LOW | wagtail/blocks/struct_block.py | 325 | def restore_deferred_validation(self): | CODE |
| LOW | wagtail/blocks/struct_block.py | 443 | def get_block_by_content_path(self, value, path_elements): | CODE |
| LOW | wagtail/blocks/stream_block.py | 164 | def defer_required_validation(self): | CODE |
| LOW | wagtail/blocks/stream_block.py | 247 | def restore_deferred_validation(self): | CODE |
| LOW | wagtail/blocks/stream_block.py | 434 | def get_block_by_content_path(self, value, path_elements): | CODE |
| LOW | wagtail/blocks/stream_block.py | 825 | def _deserialize_pickle_value(app_label, model_name, field_name, field_value): | CODE |
| LOW | wagtail/blocks/base.py | 175 | def defer_required_validation(self): | CODE |
| LOW | wagtail/blocks/base.py | 199 | def restore_deferred_validation(self): | CODE |
| LOW | wagtail/blocks/base.py | 435 | def get_block_by_content_path(self, value, path_elements): | CODE |
| LOW | wagtail/blocks/field_block.py | 65 | def defer_required_validation(self): | CODE |
| LOW | wagtail/blocks/field_block.py | 76 | def restore_deferred_validation(self): | CODE |
| LOW⚡ | wagtail/templatetags/wagtailcore_tags.py | 87 | def wagtail_documentation_path(): | CODE |
| LOW⚡ | wagtail/templatetags/wagtailcore_tags.py | 96 | def wagtail_release_notes_path(): | CODE |
| LOW⚡ | wagtail/templatetags/wagtailcore_tags.py | 101 | def wagtail_feature_release_whats_new_link(): | CODE |
| LOW⚡ | wagtail/templatetags/wagtailcore_tags.py | 109 | def wagtail_feature_release_editor_guide_link(): | CODE |
| LOW | wagtail/snippets/models.py | 38 | def get_workflow_enabled_models(): | CODE |
| LOW | wagtail/snippets/models.py | 84 | def _register_snippet_immediately(registerable, viewset=None): | CODE |
| LOW | wagtail/snippets/models.py | 113 | def register_deferred_snippets(): | CODE |
| LOW | wagtail/snippets/wagtail_hooks.py | 36 | def register_snippets_menu_item(): | CODE |
| LOW | wagtail/snippets/action_menu.py | 242 | def get_base_snippet_action_menu_items(model): | CODE |
| LOW | wagtail/snippets/permissions.py | 13 | def user_can_edit_snippet_type(user, model): | CODE |
| LOW | wagtail/snippets/tests/test_unpublish_view.py | 36 | def test_unpublish_view_invalid_pk(self): | CODE |
| LOW | wagtail/snippets/tests/test_unpublish_view.py | 51 | def test_unpublish_view_get_bad_permissions(self): | CODE |
| LOW | wagtail/snippets/tests/test_unpublish_view.py | 70 | def test_unpublish_view_post_bad_permissions(self): | CODE |
| LOW | wagtail/snippets/tests/test_unpublish_view.py | 104 | def test_unpublish_view_post_with_publish_permission(self): | CODE |
| LOW | wagtail/snippets/tests/test_unpublish_view.py | 195 | def test_after_unpublish_hook(self): | CODE |
| LOW | wagtail/snippets/tests/test_chooser_block.py | 34 | def test_reference_model_by_string(self): | CODE |
| 4295 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | wagtail/fields.py | 275 | # This method is used for serialization using django.core.serializers, | COMMENT |
| MEDIUM | wagtail/snippets/tests/test_history_view.py | 173 | # Create a new revision with a new isolated context | COMMENT |
| MEDIUM | wagtail/snippets/tests/test_history_view.py | 179 | # Create a new log context for each iteration to simulate multiple | COMMENT |
| MEDIUM | wagtail/snippets/tests/test_usage.py | 108 | # Create a user with basic admin backend access | COMMENT |
| MEDIUM | wagtail/snippets/tests/test_usage.py | 133 | # Create a user with edit access to snippets but not pages | COMMENT |
| MEDIUM | wagtail/snippets/tests/test_permissions.py | 16 | # Create a user with add_advert permission but not change_advert | COMMENT |
| MEDIUM | wagtail/snippets/tests/test_permissions.py | 70 | # Create a user with change_advert permission but not add_advert | COMMENT |
| MEDIUM | wagtail/snippets/tests/test_permissions.py | 124 | # Create a user with delete_advert permission | COMMENT |
| MEDIUM | wagtail/permission_policies/pages.py | 178 | # This method is used all around the admin, | COMMENT |
| MEDIUM | wagtail/test/dummy_external_storage.py | 1 | # This file contains a file storage backend that imitates behaviours of | COMMENT |
| MEDIUM | wagtail/test/utils/wagtail_tests.py | 22 | # Create a user | COMMENT |
| MEDIUM | wagtail/test/utils/wagtail_factories/builder.py | 115 | # Create a new StreamBlockFactory subclass, with a declaration for each block the user | COMMENT |
| MEDIUM⚡ | wagtail/images/models.py | 455 | # Create a bounding box around all faces | COMMENT |
| MEDIUM⚡ | wagtail/images/models.py | 464 | # Create a bounding box around all features | COMMENT |
| MEDIUM⚡ | wagtail/images/tests/test_jinja2_svg.py | 17 | # Create a real test engine | COMMENT |
| MEDIUM⚡ | wagtail/images/tests/test_jinja2_svg.py | 22 | # Create a raster image | COMMENT |
| MEDIUM⚡ | wagtail/images/tests/test_jinja2_svg.py | 28 | # Create an SVG image | COMMENT |
| MEDIUM | wagtail/images/tests/utils.py | 76 | # Create an image with a missing file, by deserializing from a python object | STRING |
| MEDIUM | wagtail/images/tests/test_models.py | 73 | # Create an image for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/test_models.py | 212 | # Create an image for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/test_models.py | 319 | # Create an image for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/test_models.py | 390 | # Create an image for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/test_models.py | 476 | # Create an image for running tests on | STRING |
| MEDIUM | wagtail/images/tests/test_models.py | 573 | # Create an image for running tests on | STRING |
| MEDIUM | wagtail/images/tests/test_models.py | 1285 | # Create an image with a big filename and focal point | STRING |
| MEDIUM | wagtail/images/tests/test_models.py | 1341 | # Create an image to edit | STRING |
| MEDIUM | wagtail/images/tests/test_models.py | 1423 | # Create an image | STRING |
| MEDIUM | wagtail/images/tests/test_models.py | 1453 | # Create an image with a big filename and no extension | STRING |
| MEDIUM | wagtail/images/tests/test_models.py | 1470 | # Create an image with a big filename and extensions | STRING |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 1411 | # Create an image to edit | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 1772 | # Create an image to edit | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 1805 | # Create an image to edit | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 1834 | # Create an image to edit | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 1936 | # Create an image to edit | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 1997 | # Create a user with change_image permission but not add_image | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 2029 | # Create a user with add_image permission but not change_image | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 2158 | # Create a new user in the Bakers group, and log in as them. | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 2554 | # Create an image to edit | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 3019 | # Create an image for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 3554 | # Create an image for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 3835 | # Create an UploadedFile for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 4066 | # Create an image for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 4265 | # Create an image for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 4765 | # Create an image to edit | COMMENT |
| MEDIUM | wagtail/images/tests/test_admin_views.py | 4771 | # Create a user with change_image permission but not add_image | COMMENT |
| MEDIUM⚡ | wagtail/images/tests/tests.py | 339 | # Create an image for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/tests.py | 50 | # Create an image for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/test_templatetags.py | 22 | # Create an image for running tests on | COMMENT |
| MEDIUM | wagtail/images/tests/test_templatetags.py | 138 | # Create an image for running tests on | COMMENT |
| MEDIUM | …tests/test_bulk_actions/test_bulk_add_to_collection.py | 110 | # Create a group with image permissions on the source collection only | COMMENT |
| MEDIUM | …management/commands/wagtail_update_image_renditions.py | 84 | # Create a new one | COMMENT |
| MEDIUM | wagtail/tests/test_page_queryset.py | 532 | # Create a translation of the homepage | COMMENT |
| MEDIUM | wagtail/tests/test_page_queryset.py | 558 | # Create a translation of the homepage | COMMENT |
| MEDIUM | wagtail/tests/test_page_queryset.py | 1025 | # Create a ContentType that doesn't correspond to a real model | COMMENT |
| MEDIUM | wagtail/tests/test_signals.py | 113 | # Create a subpage | COMMENT |
| MEDIUM | wagtail/tests/test_blocks.py | 2835 | # Create a deep copy of the parent's form layout to include the | COMMENT |
| MEDIUM⚡ | wagtail/tests/test_page_model.py | 3759 | # Create a page that does not have the default init | COMMENT |
| MEDIUM⚡ | wagtail/tests/test_page_model.py | 3766 | # Create a page that does have the default init | COMMENT |
| MEDIUM | wagtail/tests/test_page_model.py | 1682 | # Create a child event | COMMENT |
| MEDIUM | wagtail/tests/test_page_model.py | 3383 | # Create a singleton page | COMMENT |
| 119 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | wagtail/fields.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/blocks/list_block.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/blocks/struct_block.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/blocks/stream_block.py | 8 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/test/testapp/models.py | 12 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/test/demosite/models.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/images/fields.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/images/blocks.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/tests/test_sites.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/tests/test_blocks.py | 11 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/tests/test_audit_log.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/tests/test_date_validators.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/tests/test_workflow.py | 8 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/admin/forms/tags.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/admin/forms/collections.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/admin/panels/title_field_panel.py | 59 | self.bound_field.field.widget.attrs.update(**self.get_attrs()) | CODE |
| CRITICAL | wagtail/admin/api/actions/delete.py | 1 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wagtail/admin/api/actions/create_alias.py | 1 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wagtail/admin/api/actions/convert_alias.py | 1 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wagtail/admin/api/actions/copy.py | 1 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wagtail/admin/api/actions/unpublish.py | 1 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wagtail/admin/api/actions/move.py | 1 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wagtail/admin/api/actions/revert_to_page_revision.py | 1 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wagtail/admin/api/actions/copy_for_translation.py | 1 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wagtail/admin/api/actions/publish.py | 1 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wagtail/admin/views/editing_sessions.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/admin/views/reports/aging_pages.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/admin/telepath/widgets.py | 8 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/models/sites.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/models/audit_log.py | 13 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/contrib/forms/tests/test_models.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/contrib/typed_table_block/tests.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/contrib/typed_table_block/blocks.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/contrib/table_block/blocks.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/api/v2/filters.py | 2 | from django.core.exceptions import FieldError | CODE |
| CRITICAL | wagtail/api/v3/errors.py | 5 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wagtail/documents/models.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/documents/fields.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/documents/tests/test_document_field.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/embeds/blocks.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wagtail/embeds/tests/test_embeds.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | docs/advanced_topics/streamfield_validation.md | 17 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | docs/advanced_topics/streamfield_validation.md | 50 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | docs/advanced_topics/streamfield_validation.md | 69 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | docs/reference/contrib/typed_table_block.md | 82 | from django.core.exceptions import ValidationError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wagtail/compat.py | 19 | CODE | |
| LOW | wagtail/coreutils.py | 29 | CODE | |
| LOW | wagtail/apps.py | 4 | CODE | |
| LOW | wagtail/wagtail_hooks.py | 22 | CODE | |
| LOW | wagtail/blocks/__init__.py | 2 | CODE | |
| LOW | wagtail/blocks/__init__.py | 3 | CODE | |
| LOW | wagtail/blocks/__init__.py | 4 | CODE | |
| LOW | wagtail/blocks/__init__.py | 5 | CODE | |
| LOW | wagtail/blocks/__init__.py | 6 | CODE | |
| LOW | wagtail/blocks/__init__.py | 7 | CODE | |
| LOW | wagtail/snippets/bulk_actions/__init__.py | 1 | CODE | |
| LOW | wagtail/locales/views.py | 18 | CODE | |
| LOW | wagtail/locales/views.py | 18 | CODE | |
| LOW | wagtail/permission_policies/__init__.py | 1 | CODE | |
| LOW | wagtail/test/settings_ui.py | 1 | CODE | |
| LOW | wagtail/test/customuser/models.py | 13 | CODE | |
| LOW | wagtail/test/customuser/models.py | 15 | CODE | |
| LOW | wagtail/test/utils/__init__.py | 1 | CODE | |
| LOW | wagtail/test/utils/__init__.py | 2 | CODE | |
| LOW | wagtail/test/utils/__init__.py | 3 | CODE | |
| LOW | wagtail/test/utils/wagtail_factories/__init__.py | 1 | CODE | |
| LOW | wagtail/test/utils/wagtail_factories/__init__.py | 2 | CODE | |
| LOW | wagtail/images/models.py | 1 | CODE | |
| LOW | wagtail/images/apps.py | 5 | CODE | |
| LOW | wagtail/images/tests/tests.py | 41 | CODE | |
| LOW | wagtail/images/views/bulk_actions/__init__.py | 1 | CODE | |
| LOW | wagtail/images/views/bulk_actions/__init__.py | 2 | CODE | |
| LOW | wagtail/images/views/bulk_actions/__init__.py | 3 | CODE | |
| LOW | wagtail/admin/models.py | 15 | CODE | |
| LOW | wagtail/admin/apps.py | 4 | CODE | |
| LOW | wagtail/admin/apps.py | 18 | CODE | |
| LOW | wagtail/admin/blocks.py | 3 | CODE | |
| LOW | wagtail/admin/ui/components.py | 2 | CODE | |
| LOW | wagtail/admin/ui/components.py | 2 | CODE | |
| LOW | wagtail/admin/forms/__init__.py | 2 | CODE | |
| LOW | wagtail/admin/forms/__init__.py | 2 | CODE | |
| LOW | wagtail/admin/forms/__init__.py | 2 | CODE | |
| LOW | wagtail/admin/forms/__init__.py | 2 | CODE | |
| LOW | wagtail/admin/forms/__init__.py | 2 | CODE | |
| LOW | wagtail/admin/forms/__init__.py | 9 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 4 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 4 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 9 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 10 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 11 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 12 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 13 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 14 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 15 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 16 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 17 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 18 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 19 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 20 | CODE | |
| LOW | wagtail/admin/panels/__init__.py | 21 | CODE | |
| LOW | wagtail/admin/rich_text/__init__.py | 4 | CODE | |
| LOW | wagtail/admin/views/bulk_action/__init__.py | 1 | CODE | |
| LOW | wagtail/admin/views/bulk_action/__init__.py | 2 | CODE | |
| LOW | wagtail/admin/views/generic/__init__.py | 1 | CODE | |
| LOW | wagtail/admin/views/generic/__init__.py | 1 | CODE | |
| 193 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | wagtail/tasks.py | 28 | # parent is null, so there is no valid object to record references against | COMMENT |
| HIGH | …/tests/permission_policies/test_permission_policies.py | 577 | # in order for user_has_any_permission to return true | COMMENT |
| HIGH | …/tests/permission_policies/test_permission_policies.py | 591 | # should return false | COMMENT |
| HIGH | …/tests/permission_policies/test_permission_policies.py | 703 | # in order for user_has_any_permission to return true | COMMENT |
| HIGH | …/tests/permission_policies/test_permission_policies.py | 716 | # should return false | COMMENT |
| HIGH | …/tests/permission_policies/test_permission_policies.py | 967 | # in order for user_has_any_permission to return true | COMMENT |
| HIGH | …/tests/permission_policies/test_permission_policies.py | 978 | # should return false | COMMENT |
| HIGH | …/tests/permission_policies/test_permission_policies.py | 1176 | # in order for user_has_any_permission to return true | COMMENT |
| HIGH | …/tests/permission_policies/test_permission_policies.py | 1189 | # should return false | COMMENT |
| HIGH | wagtail/admin/wagtail_hooks.py | 722 | # Keep pasted links with http/https protocol, and not-pasted links (href = undefined). | COMMENT |
| HIGH | wagtail/admin/userbar.py | 215 | # The runOnly has to be omitted (instead of set to an empty list or null) | COMMENT |
| HIGH | wagtail/admin/panels/field_panel.py | 64 | # - it corresponds to a non-null, non-text-typed model field (in which case a blank value | COMMENT |
| HIGH⚡ | wagtail/admin/tests/test_edit_handlers.py | 1221 | expected_js = 'new PageChooser("{id}", {{"modelNames": ["{model}"], "canChooseRoot": false, "userPerms": null, " | CODE |
| HIGH | wagtail/admin/tests/test_edit_handlers.py | 1243 | expected_js = 'new PageChooser("{id}", {{"modelNames": ["{model}"], "canChooseRoot": true, "userPerms": null, "m | CODE |
| HIGH | wagtail/admin/tests/test_edit_handlers.py | 1299 | expected_js = 'new PageChooser("{id}", {{"modelNames": ["{model}"], "canChooseRoot": false, "userPerms": null, " | CODE |
| HIGH | wagtail/admin/tests/test_edit_handlers.py | 1319 | expected_js = 'new PageChooser("{id}", {{"modelNames": ["{model}"], "canChooseRoot": false, "userPerms": null, " | CODE |
| HIGH⚡ | wagtail/admin/tests/test_widgets.py | 108 | 'new PageChooser("test-id", {"modelNames": ["wagtailcore.page"], "canChooseRoot": false, "userPerms": null, | CODE |
| HIGH⚡ | wagtail/admin/tests/test_widgets.py | 118 | 'new PageChooser("test-id", {"modelNames": ["tests.simplepage"], "canChooseRoot": false, "userPerms": null, | CODE |
| HIGH⚡ | wagtail/admin/tests/test_widgets.py | 130 | 'new PageChooser("test-id", {"modelNames": ["tests.simplepage"], "canChooseRoot": false, "userPerms": null, | CODE |
| HIGH⚡ | wagtail/admin/tests/test_widgets.py | 142 | 'new PageChooser("test-id", {"modelNames": ["tests.simplepage"], "canChooseRoot": false, "userPerms": null, | CODE |
| HIGH⚡ | wagtail/admin/tests/test_widgets.py | 155 | 'new PageChooser("test-id", {"modelNames": ["tests.simplepage", "tests.eventpage"], "canChooseRoot": false, | CODE |
| HIGH⚡ | wagtail/admin/tests/test_widgets.py | 167 | 'new PageChooser("test-id", {"modelNames": ["wagtailcore.page"], "canChooseRoot": true, "userPerms": null, " | CODE |
| HIGH | wagtail/admin/tests/test_widgets.py | 82 | 'new PageChooser("test-id", {"modelNames": ["wagtailcore.page"], "canChooseRoot": false, "userPerms": null, | CODE |
| HIGH | …ail/admin/rich_text/converters/html_to_contentstate.py | 89 | state.push() | CODE |
| HIGH | wagtail/admin/views/generic/models.py | 108 | # is returned anyway (even if list_filter is undefined), so the locale | COMMENT |
| HIGH | wagtail/management/commands/convert_mariadb_uuids.py | 25 | old_field = models.CharField(null=null, max_length=36) | CODE |
| HIGH | wagtail/management/commands/convert_mariadb_uuids.py | 28 | new_field = models.UUIDField(null=null) | CODE |
| HIGH | wagtail/models/pages.py | 398 | # If non-null, this page is an alias of the linked page | COMMENT |
| HIGH | wagtail/models/pages.py | 1899 | # fall back on latest_revision_created_at if last_published_at is null | COMMENT |
| HIGH | wagtail/contrib/settings/models.py | 77 | If the field value is null, or links to something other | STRING |
| HIGH | wagtail/contrib/table_block/tests.py | 340 | expected_json = '{"first_row_is_table_header": false, "first_col_is_header": false, "data": [["Foo", 1, null], [ | STRING |
| HIGH | wagtail/contrib/sitemaps/sitemap_generator.py | 17 | # fall back on latest_revision_created_at if last_published_at is null | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wagtail/blocks/list_block.py | 453 | icon = "placeholder" | CODE |
| LOW | wagtail/blocks/struct_block.py | 93 | icon="placeholder", | CODE |
| LOW | wagtail/blocks/struct_block.py | 591 | icon = "placeholder" | CODE |
| LOW | wagtail/blocks/stream_block.py | 491 | icon = "placeholder" | CODE |
| LOW | wagtail/blocks/base.py | 64 | icon = "placeholder" | CODE |
| LOW | wagtail/blocks/field_block.py | 97 | icon = "placeholder" | CODE |
| LOW | wagtail/blocks/field_block.py | 496 | icon = "placeholder" | CODE |
| LOW | wagtail/blocks/field_block.py | 611 | icon = "placeholder" | CODE |
| LOW | wagtail/blocks/field_block.py | 964 | icon = "placeholder" | CODE |
| LOW | wagtail/test/utils/form_data.py | 140 | 'body': rich_text('<p>Lorem ipsum dolor sit amet</p>'), | STRING |
| LOW | wagtail/test/utils/form_data.py | 140 | 'body': rich_text('<p>Lorem ipsum dolor sit amet</p>'), | STRING |
| LOW | wagtail/tests/test_form_data_utils.py | 16 | <input type="text" name="name" value="Jane Doe" placeholder=""> | CODE |
| LOW | wagtail/tests/test_form_data_utils.py | 134 | ("name", ["Jane Doe"]), | STRING |
| LOW⚡ | wagtail/tests/test_blocks.py | 989 | "icon": "placeholder", | CODE |
| LOW⚡ | wagtail/tests/test_blocks.py | 1485 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 195 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 347 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 2151 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 2439 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 2477 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 2556 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 2614 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 2645 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 3574 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 3601 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 3780 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 3810 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 4531 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 5468 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 5567 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 6131 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 6156 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 6180 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 6205 | "icon": "placeholder", | CODE |
| LOW | wagtail/tests/test_blocks.py | 6230 | "icon": "placeholder", | CODE |
| LOW⚡ | wagtail/tests/test_tests.py | 189 | {"title": "Simple Lorem Page", "content": "Lorem ipsum dolor sit amet"}, | CODE |
| LOW⚡ | wagtail/tests/test_tests.py | 189 | {"title": "Simple Lorem Page", "content": "Lorem ipsum dolor sit amet"}, | CODE |
| LOW | wagtail/admin/filters.py | 26 | AdminDateInput(attrs={"placeholder": _("Date from")}), | CODE |
| LOW | wagtail/admin/filters.py | 27 | AdminDateInput(attrs={"placeholder": _("Date to")}), | CODE |
| LOW | wagtail/admin/filters.py | 47 | forms.NumberInput(attrs={"placeholder": _("Minimum"), "min": "0"}), | CODE |
| LOW | wagtail/admin/filters.py | 48 | forms.NumberInput(attrs={"placeholder": _("Maximum"), "min": "0"}), | CODE |
| LOW | wagtail/admin/forms/auth.py | 14 | "placeholder": gettext_lazy("Enter password"), | CODE |
| LOW | wagtail/admin/forms/auth.py | 31 | self.fields["username"].widget.attrs["placeholder"] = gettext_lazy( | CODE |
| LOW | wagtail/admin/forms/choosers.py | 75 | widget=forms.TextInput(attrs={"placeholder": _("Search")}), | CODE |
| LOW | wagtail/admin/forms/search.py | 8 | placeholder = kwargs.pop("placeholder", _("Search…")) | CODE |
| LOW | wagtail/admin/forms/search.py | 11 | "placeholder": placeholder, | CODE |
| LOW | wagtail/admin/forms/workflows.py | 27 | placeholder = kwargs.pop("placeholder", _("Search…")) | CODE |
| LOW | wagtail/admin/forms/workflows.py | 29 | self.fields["q"].widget.attrs = {"placeholder": placeholder} | CODE |
| LOW | wagtail/admin/panels/title_field_panel.py | 46 | "placeholder": self.placeholder, | CODE |
| LOW | wagtail/admin/panels/title_field_panel.py | 88 | if placeholder and "placeholder" not in widget.attrs: | CODE |
| LOW | wagtail/admin/panels/title_field_panel.py | 89 | attrs["placeholder"] = placeholder | CODE |
| LOW⚡ | wagtail/admin/tests/test_edit_handlers.py | 2383 | self.assertEqual(attrs["placeholder"], "Page title*") | CODE |
| LOW⚡ | wagtail/admin/tests/test_edit_handlers.py | 2599 | self.assertNotIn("placeholder", attrs) | CODE |
| LOW⚡ | wagtail/admin/tests/test_edit_handlers.py | 2610 | self.assertNotIn("placeholder", attrs) | CODE |
| LOW⚡ | wagtail/admin/tests/test_edit_handlers.py | 2621 | self.assertNotIn("placeholder", attrs) | CODE |
| LOW⚡ | wagtail/admin/tests/test_edit_handlers.py | 2630 | attrs={"placeholder": "My custom placeholder"} | CODE |
| LOW⚡ | wagtail/admin/tests/test_edit_handlers.py | 2642 | self.assertEqual(attrs["placeholder"], "My custom placeholder") | CODE |
| LOW⚡ | wagtail/admin/tests/test_edit_handlers.py | 2652 | attrs={"placeholder": "WIDGET placeholder"} | CODE |
| LOW⚡ | wagtail/admin/tests/test_edit_handlers.py | 2664 | self.assertEqual(attrs["placeholder"], "WIDGET placeholder") | CODE |
| LOW⚡ | wagtail/admin/tests/test_edit_handlers.py | 2674 | attrs={"placeholder": "WIDGET placeholder"} | CODE |
| 166 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | wagtail/fields.py | 0 | given a list of elements from a content path, retrieve the block at that path as a boundblock object, or none if the pat | STRING |
| HIGH | wagtail/blocks/list_block.py | 0 | given a list of elements from a content path, retrieve the block at that path as a boundblock object, or none if the pat | STRING |
| HIGH | wagtail/blocks/struct_block.py | 0 | given a list of elements from a content path, retrieve the block at that path as a boundblock object, or none if the pat | STRING |
| HIGH | wagtail/blocks/stream_block.py | 0 | given a list of elements from a content path, retrieve the block at that path as a boundblock object, or none if the pat | STRING |
| HIGH | wagtail/blocks/base.py | 0 | given a list of elements from a content path, retrieve the block at that path as a boundblock object, or none if the pat | STRING |
| HIGH | wagtail/blocks/struct_block.py | 0 | always deconstruct typedtableblock instances as if they were plain typedtableblock with all of the field definitions pas | STRING |
| HIGH | wagtail/blocks/stream_block.py | 0 | always deconstruct typedtableblock instances as if they were plain typedtableblock with all of the field definitions pas | STRING |
| HIGH | wagtail/contrib/typed_table_block/blocks.py | 0 | always deconstruct typedtableblock instances as if they were plain typedtableblock with all of the field definitions pas | STRING |
| HIGH | wagtail/snippets/tests/test_unpublish_view.py | 0 | this tests that the unpublish view responds with an unpublish confirm page | STRING |
| HIGH | wagtail/admin/tests/pages/test_unpublish_page.py | 0 | this tests that the unpublish view responds with an unpublish confirm page | STRING |
| HIGH | …n/tests/pages/test_bulk_actions/test_bulk_unpublish.py | 0 | this tests that the unpublish view responds with an unpublish confirm page | STRING |
| HIGH | wagtail/snippets/tests/test_unpublish_view.py | 0 | this tests that the unpublish view doesn't allow users without unpublish permissions | STRING |
| HIGH | wagtail/admin/tests/pages/test_unpublish_page.py | 0 | this tests that the unpublish view doesn't allow users without unpublish permissions | STRING |
| HIGH | …n/tests/pages/test_bulk_actions/test_bulk_unpublish.py | 0 | this tests that the unpublish view doesn't allow users without unpublish permissions | STRING |
| HIGH | wagtail/snippets/tests/test_create_view.py | 0 | template[data-controller="w-teleport"][data-w-teleport-target-value="[data-edit-form]"] #schedule-publishing-dialog | STRING |
| HIGH | wagtail/snippets/tests/test_edit_view.py | 0 | template[data-controller="w-teleport"][data-w-teleport-target-value="[data-edit-form]"] #schedule-publishing-dialog | STRING |
| HIGH | wagtail/admin/tests/pages/test_edit_page.py | 0 | template[data-controller="w-teleport"][data-w-teleport-target-value="[data-edit-form]"] #schedule-publishing-dialog | STRING |
| HIGH | wagtail/snippets/tests/test_create_view.py | 0 | if a form is reshown due to a validation error elsewhere, fields whose validation was deferred should still show the req | STRING |
| HIGH | wagtail/snippets/tests/test_edit_view.py | 0 | if a form is reshown due to a validation error elsewhere, fields whose validation was deferred should still show the req | STRING |
| HIGH | wagtail/admin/tests/pages/test_edit_page.py | 0 | if a form is reshown due to a validation error elsewhere, fields whose validation was deferred should still show the req | STRING |
| HIGH | wagtail/admin/tests/pages/test_create_page.py | 0 | if a form is reshown due to a validation error elsewhere, fields whose validation was deferred should still show the req | STRING |
| HIGH | wagtail/permission_policies/collections.py | 0 | return whether the given user has permission to perform any of the given actions on some or all instances of this model. | STRING |
| HIGH | wagtail/permission_policies/base.py | 0 | return whether the given user has permission to perform any of the given actions on some or all instances of this model. | STRING |
| HIGH | wagtail/permission_policies/sites.py | 0 | return whether the given user has permission to perform any of the given actions on some or all instances of this model. | STRING |
| HIGH | wagtail/permission_policies/collections.py | 0 | return a queryset of users who have permission to perform the given action on some or all instances of this model | STRING |
| HIGH | wagtail/permission_policies/sites.py | 0 | return a queryset of users who have permission to perform the given action on some or all instances of this model | STRING |
| HIGH | wagtail/permission_policies/base.py | 0 | return a queryset of users who have permission to perform the given action on some or all instances of this model | STRING |
| HIGH | wagtail/permission_policies/collections.py | 0 | return a queryset of all instances of this model for which the given user has permission to perform the given action | STRING |
| HIGH | wagtail/permission_policies/sites.py | 0 | return a queryset of all instances of this model for which the given user has permission to perform the given action | STRING |
| HIGH | wagtail/permission_policies/base.py | 0 | return a queryset of all instances of this model for which the given user has permission to perform the given action | STRING |
| HIGH | wagtail/admin/tests/pages/test_revisions.py | 0 | this tests that the publish view returns an error if the page id is invalid | STRING |
| HIGH | wagtail/admin/tests/pages/test_unpublish_page.py | 0 | this tests that the publish view returns an error if the page id is invalid | STRING |
| HIGH | …n/tests/pages/test_bulk_actions/test_bulk_unpublish.py | 0 | this tests that the publish view returns an error if the page id is invalid | STRING |
| HIGH | …min/tests/pages/test_bulk_actions/test_bulk_publish.py | 0 | this tests that the publish view returns an error if the page id is invalid | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | runtests.py | 37 | CODE | |
| LOW | wagtail/fields.py | 143 | CODE | |
| LOW | wagtail/query.py | 656 | CODE | |
| LOW | wagtail/whitelist.py | 34 | CODE | |
| LOW | wagtail/whitelist.py | 46 | CODE | |
| LOW | wagtail/coreutils.py | 285 | CODE | |
| LOW | wagtail/coreutils.py | 347 | CODE | |
| LOW | wagtail/wagtail_hooks.py | 33 | CODE | |
| LOW | wagtail/wagtail_hooks.py | 34 | CODE | |
| LOW | wagtail/blocks/struct_block.py | 37 | CODE | |
| LOW | wagtail/blocks/stream_block.py | 36 | CODE | |
| LOW | wagtail/blocks/field_block.py | 613 | CODE | |
| LOW | wagtail/blocks/field_block.py | 667 | CODE | |
| LOW | wagtail/blocks/field_block.py | 726 | CODE | |
| LOW | wagtail/snippets/action_menu.py | 275 | CODE | |
| LOW | wagtail/snippets/views/snippets.py | 191 | CODE | |
| LOW | wagtail/permission_policies/collections.py | 292 | CODE | |
| LOW | wagtail/permission_policies/base.py | 386 | CODE | |
| LOW | wagtail/test/numberformat.py | 78 | CODE | |
| LOW | wagtail/test/utils/form_data.py | 147 | CODE | |
| LOW | wagtail/bin/wagtail.py | 203 | CODE | |
| LOW | wagtail/bin/wagtail.py | 331 | CODE | |
| LOW | wagtail/bin/wagtail.py | 354 | CODE | |
| LOW | wagtail/images/models.py | 650 | CODE | |
| LOW | wagtail/images/models.py | 1056 | CODE | |
| LOW | wagtail/images/templatetags/wagtailimages_tags.py | 15 | CODE | |
| LOW | …management/commands/wagtail_update_image_renditions.py | 40 | CODE | |
| LOW | wagtail/tests/test_page_queryset.py | 593 | CODE | |
| LOW | wagtail/tests/test_blocks.py | 70 | CODE | |
| LOW | wagtail/tests/test_hooks.py | 125 | CODE | |
| LOW | wagtail/tests/streamfield_migrations/test_migrations.py | 51 | CODE | |
| LOW | wagtail/admin/mail.py | 231 | CODE | |
| LOW | wagtail/admin/models.py | 30 | CODE | |
| LOW | wagtail/admin/checks.py | 105 | CODE | |
| LOW | wagtail/admin/localization.py | 121 | CODE | |
| LOW | wagtail/admin/wagtail_hooks.py | 308 | CODE | |
| LOW | wagtail/admin/action_menu.py | 274 | CODE | |
| LOW | wagtail/admin/messages.py | 38 | CODE | |
| LOW | wagtail/admin/userbar.py | 339 | CODE | |
| LOW | wagtail/admin/compare.py | 98 | CODE | |
| LOW | wagtail/admin/compare.py | 798 | CODE | |
| LOW | wagtail/admin/compare.py | 280 | CODE | |
| LOW | wagtail/admin/compare.py | 447 | CODE | |
| LOW | wagtail/admin/compare.py | 493 | CODE | |
| LOW | wagtail/admin/compare.py | 543 | CODE | |
| LOW | wagtail/admin/compare.py | 776 | CODE | |
| LOW | wagtail/admin/filters.py | 165 | CODE | |
| LOW | wagtail/admin/forms/models.py | 190 | CODE | |
| LOW | wagtail/admin/viewsets/model.py | 516 | CODE | |
| LOW | wagtail/admin/viewsets/pages.py | 629 | CODE | |
| LOW | wagtail/admin/panels/model_utils.py | 56 | CODE | |
| LOW | wagtail/admin/panels/group.py | 27 | CODE | |
| LOW | wagtail/admin/tests/pages/test_page_search.py | 344 | CODE | |
| LOW | wagtail/admin/views/editing_sessions.py | 20 | CODE | |
| LOW | wagtail/admin/views/collection_privacy.py | 11 | CODE | |
| LOW | wagtail/admin/views/chooser.py | 604 | CODE | |
| LOW | wagtail/admin/views/workflows.py | 867 | CODE | |
| LOW | wagtail/admin/views/account.py | 305 | CODE | |
| LOW | wagtail/admin/views/generic/mixins.py | 454 | CODE | |
| LOW | wagtail/admin/views/generic/models.py | 166 | CODE | |
| 48 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wagtail/blocks/definition_lookup.py | 72 | # Check if we've already seen this block definition | COMMENT |
| LOW⚡ | wagtail/snippets/tests/test_reordering.py | 243 | # Check if obj3 is now the first item by taking obj1's sort_order and | COMMENT |
| LOW⚡ | wagtail/snippets/tests/test_reordering.py | 253 | # Check if obj1 is now the second item by taking obj2's sort_order | COMMENT |
| LOW | wagtail/snippets/tests/test_reordering.py | 317 | # Check if obj1 is now the second item by taking obj2's sort_order | COMMENT |
| LOW | wagtail/images/models.py | 182 | # Open file if it is closed | COMMENT |
| LOW | wagtail/images/models.py | 753 | # Read file contents into memory | COMMENT |
| LOW | wagtail/images/models.py | 977 | # Check if segment has braces to expand | COMMENT |
| LOW | wagtail/images/forms.py | 27 | # Check if this is the file field | COMMENT |
| LOW | wagtail/images/tests/test_models.py | 890 | # Check if get_rendition returns the rendition from cache | STRING |
| LOW | wagtail/tests/test_reference_index.py | 958 | # Check if reference remains (pointing to dead target) | COMMENT |
| LOW | wagtail/tests/test_management_commands.py | 67 | # Check if its fixed | COMMENT |
| LOW | wagtail/tests/test_management_commands.py | 91 | # Check if its fixed | COMMENT |
| LOW⚡ | wagtail/admin/tests/test_account_management.py | 378 | # Check if the default title does not exist | COMMENT |
| LOW | wagtail/admin/tests/test_account_management.py | 308 | # Check if the default title exists | COMMENT |
| LOW⚡ | wagtail/admin/tests/viewsets/test_model_viewset.py | 2107 | # Check if obj3 is now the first item by taking obj1's sort_order and | COMMENT |
| LOW⚡ | wagtail/admin/tests/viewsets/test_model_viewset.py | 2116 | # Check if obj1 is now the second item by taking obj2's sort_order | COMMENT |
| LOW | wagtail/admin/tests/viewsets/test_model_viewset.py | 2168 | # Check if obj1 is now the second item by taking obj2's sort_order | COMMENT |
| LOW | wagtail/admin/tests/pages/test_copy_page.py | 1091 | # Check if slug is hello-world-2 | COMMENT |
| LOW | wagtail/admin/views/workflows.py | 491 | # Set workflow to active if inactive | COMMENT |
| LOW | wagtail/admin/views/workflows.py | 822 | # Set workflow to active if inactive | COMMENT |
| LOW | wagtail/models/pages.py | 795 | # Check if this is a root page of any sites and clear the 'wagtail_site_root_paths' key if so | COMMENT |
| LOW | wagtail/models/i18n.py | 345 | # Check if the object has any parental keys to another translatable model | COMMENT |
| LOW | wagtail/contrib/settings/models.py | 207 | # Check if we already have this in the cache and return it if so. | COMMENT |
| LOW⚡ | wagtail/contrib/frontend_cache/signal_handlers.py | 20 | # Loop through list and register signal handlers for each one | COMMENT |
| LOW | wagtail/contrib/simple_translation/models.py | 37 | # Check if the source tree needs to be synchronised into any other trees | COMMENT |
| LOW | …contrib/simple_translation/tests/test_wagtail_hooks.py | 239 | # Check if fr and de blog post parent ids are in the translated list | COMMENT |
| LOW | …contrib/simple_translation/tests/test_wagtail_hooks.py | 265 | # Check if the new pages exist under their respective translated homepages | COMMENT |
| LOW | …contrib/simple_translation/tests/test_wagtail_hooks.py | 324 | # Check if the fr and de pages exist under their original parent page (/blog/) | COMMENT |
| LOW | wagtail/api/v2/querysets.py | 27 | # Check if we have a specific site to look for | COMMENT |
| LOW | wagtail/documents/models.py | 94 | # Open file if it is closed | COMMENT |
| LOW | wagtail/embeds/finders/oembed.py | 72 | # Check if 'type' is missing | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | setup.py | 12 | print("Error compiling assets: " + str(e)) # noqa: T201 | CODE |
| LOW | wagtail/blocks/base.py | 718 | except Exception as e: # noqa: BLE001 | CODE |
| MEDIUM | wagtail/blocks/base.py | 710 | def | CODE |
| LOW | wagtail/test/dummy_external_storage.py | 88 | except Exception as e: # noqa: BLE001 | CODE |
| MEDIUM | wagtail/test/dummy_external_storage.py | 85 | def size(self): | CODE |
| LOW | wagtail/test/utils/page_tests.py | 260 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | wagtail/test/utils/page_tests.py | 336 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | wagtail/test/utils/page_tests.py | 367 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | wagtail/test/utils/page_tests.py | 422 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | wagtail/test/utils/page_tests.py | 438 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | wagtail/test/utils/decorators.py | 22 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | wagtail/images/models.py | 168 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | wagtail/images/fields.py | 186 | except Exception as exc: # noqa: BLE001 | CODE |
| MEDIUM | wagtail/images/fields.py | 120 | def check_image_pixel_size(self, f): | CODE |
| LOW | wagtail/images/tests/test_management_commands.py | 41 | except Exception: # noqa: BLE001 | CODE |
| MEDIUM | wagtail/tests/test_utils.py | 180 | def test_pickleability(self): | CODE |
| LOW | wagtail/tests/test_utils.py | 183 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | wagtail/tests/test_utils.py | 190 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | wagtail/admin/mail.py | 126 | except Exception: | CODE |
| LOW | wagtail/admin/mail.py | 269 | except Exception: | CODE |
| LOW | …nagement/commands/create_log_entries_from_revisions.py | 48 | except Exception: # noqa: BLE001 | CODE |
| LOW | …nagement/commands/create_log_entries_from_revisions.py | 60 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | …ail/contrib/settings/tests/site_specific/test_model.py | 83 | except Exception as e: # noqa: BLE001 | CODE |
| LOW⚡ | …ail/contrib/settings/tests/site_specific/test_model.py | 91 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | wagtail/contrib/redirects/views.py | 270 | except Exception as e: # noqa: BLE001 ; pragma: no cover | CODE |
| LOW | wagtail/documents/models.py | 123 | except Exception: # noqa: BLE001 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wagtail/signals.py | 61 | COMMENT | |
| LOW | wagtail/fields.py | 221 | ): | COMMENT |
| LOW | wagtail/blocks/list_block.py | 21 | COMMENT | |
| LOW | wagtail/blocks/base.py | 601 | # surname = CharBlock() | COMMENT |
| LOW | wagtail/snippets/apps.py | 21 | # created manually. | COMMENT |
| LOW | wagtail/snippets/bulk_actions/delete.py | 21 | COMMENT | |
| LOW | wagtail/permission_policies/collections.py | 301 | # on any instance | COMMENT |
| LOW | wagtail/tests/test_blocks.py | 5761 | stream_block = blocks.StreamBlock( | COMMENT |
| LOW | wagtail/admin/menu.py | 161 | #: The icon used for the menu item that appears in Wagtail's sidebar. | COMMENT |
| LOW | wagtail/admin/templatetags/wagtailadmin_tags.py | 221 | request = context.get("request") | COMMENT |
| LOW | wagtail/admin/tests/test_audit_log.py | 221 | # 3 edits without UUID | COMMENT |
| LOW | wagtail/admin/tests/test_menu.py | 421 | # automatically generated from the label, which is translatable. | COMMENT |
| LOW | wagtail/admin/tests/test_editing_sessions.py | 1721 | COMMENT | |
| LOW | wagtail/admin/views/editing_sessions.py | 161 | and not users_other_session["revision_id"] | COMMENT |
| LOW | wagtail/admin/views/generic/multiple_upload.py | 21 | COMMENT | |
| LOW | wagtail/models/pages.py | 1201 | revision=revision, | COMMENT |
| LOW | wagtail/models/reference_index.py | 161 | # For example, say we have a StreamField called 'body' which has a struct block type | COMMENT |
| LOW | wagtail/models/reference_index.py | 901 | COMMENT | |
| LOW | wagtail/rich_text/feature_registry.py | 21 | # of feature names to 'plugin' objects that define how to implement that feature | COMMENT |
| LOW | docs/conf.py | 1 | # | COMMENT |
| LOW | docs/conf.py | 141 | # language = None | COMMENT |
| LOW | docs/conf.py | 161 | # unit titles (such as .. function::). | COMMENT |
| LOW | docs/conf.py | 241 | # html_title = None | COMMENT |
| LOW | docs/conf.py | 261 | # .htaccess) here, relative to this directory. These files are copied | COMMENT |
| LOW | docs/conf.py | 281 | # html_domain_indices = True | COMMENT |
| LOW | docs/conf.py | 301 | # If true, an OpenSearch description file will be output, and all pages will | COMMENT |
| LOW | docs/conf.py | 341 | # latex_logo = None | COMMENT |
| LOW | docs/advanced_topics/add_to_django_project.md | 321 | } | COMMENT |
| LOW | .github/workflows/test.yml | 21 | COMMENT | |
| LOW | client/scss/components/_preview-panel.scss | 41 | // Ensure that sites without a background show with a fallback, only when iframe has loaded | COMMENT |
| LOW | client/src/components/Sidebar/menu/SubMenuItem.tsx | 41 | // to finish before making it invisible | COMMENT |
| LOW | …/src/components/StreamField/blocks/StructBlock.test.js | 921 | // group(root): | COMMENT |
| LOW | …ypoints/contrib/typed_table_block/typed_table_block.js | 21 | // * id: the unique ID number assigned to this column, used in field name prefixes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wagtail/query.py | 524 | # Assuming the situation is the latter, just return the root node. | COMMENT |
| LOW | wagtail/blocks/base.py | 572 | # In the base implementation, no substitutions happen, so we ignore the lookup and just call | COMMENT |
| MEDIUM | wagtail/snippets/tests/test_locking.py | 492 | """A user needs to unlock a snippet that's locked by another user in order to edit it.""" | STRING |
| LOW | wagtail/snippets/views/snippets.py | 254 | # Hook response is not suitable for a JSON response, so ignore it and just use | COMMENT |
| LOW | wagtail/snippets/views/snippets.py | 322 | # Hook response is not suitable for a JSON response, so ignore it and just use | COMMENT |
| MEDIUM | wagtail/images/models.py | 745 | # utilize QuerySet.get_or_create(), which has better handling of | COMMENT |
| LOW | wagtail/images/forms.py | 38 | # For all other fields, just call its formfield() method. | COMMENT |
| MEDIUM | wagtail/admin/userbar.py | 105 | #: Should be used in conjunction with ``axe_custom_rules``. | COMMENT |
| LOW | wagtail/admin/templatetags/wagtailadmin_tags.py | 230 | # users having to log in again. So we just return the URL unchanged. | COMMENT |
| LOW | wagtail/admin/tests/pages/test_edit_page.py | 1515 | # Without TZ support, just use the submitted timestamp as-is | COMMENT |
| LOW | wagtail/admin/views/pages/create.py | 293 | # Hook response is not suitable for a JSON response, so ignore it and just use | COMMENT |
| LOW | wagtail/admin/views/pages/edit.py | 662 | # Hook response is not suitable for a JSON response, so ignore it and just use | COMMENT |
| LOW | wagtail/management/commands/fixtree.py | 74 | # Deleting only the *actual* orphans is a bit silly (since it'll just create | COMMENT |
| LOW | wagtail/models/pages.py | 1470 | # ``current_site`` is purposefully undocumented, as one can simply pass the request and get | COMMENT |
| MEDIUM | wagtail/users/tests/test_admin_views.py | 2095 | # Tests that use this method are testing the aforementioned | COMMENT |
| LOW | wagtail/documents/forms.py | 35 | # For all other fields, just call its formfield() method. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wagtail/coreutils.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | wagtail/blocks/list_block.py | 22 | __all__ = ["ListBlock", "ListBlockValidationError"] | CODE |
| LOW | wagtail/blocks/static_block.py | 11 | __all__ = ["StaticBlock"] | CODE |
| LOW | wagtail/blocks/struct_block.py | 27 | __all__ = [ | CODE |
| LOW | wagtail/blocks/stream_block.py | 27 | __all__ = [ | CODE |
| LOW⚡ | wagtail/blocks/base.py | 23 | __all__ = [ | CODE |
| LOW | wagtail/blocks/field_block.py | 1080 | __all__ = [cls.__name__ for cls in block_classes] | CODE |
| LOW | wagtail/snippets/bulk_actions/__init__.py | 3 | __all__ = ["DeleteBulkAction"] | CODE |
| LOW | wagtail/test/utils/wagtail_factories/factories.py | 13 | __all__ = [ | CODE |
| LOW | wagtail/test/utils/wagtail_factories/blocks.py | 18 | __all__ = [ | CODE |
| LOW | …management/commands/wagtail_update_image_renditions.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | wagtail/images/views/bulk_actions/__init__.py | 5 | __all__ = ["AddToCollectionBulkAction", "AddTagsBulkAction", "DeleteBulkAction"] | CODE |
| LOW | wagtail/admin/views/bulk_action/__init__.py | 4 | __all__ = ["BulkAction", "index"] | CODE |
| LOW | wagtail/admin/views/pages/bulk_actions/__init__.py | 6 | __all__ = [ | CODE |
| LOW | wagtail/contrib/settings/models.py | 12 | __all__ = [ | CODE |
| LOW | wagtail/contrib/frontend_cache/backends/azure.py | 11 | __all__ = ["AzureBaseBackend", "AzureFrontDoorBackend", "AzureCdnBackend"] | CODE |
| LOW | wagtail/contrib/frontend_cache/backends/cloudflare.py | 11 | __all__ = ["CloudflareBackend"] | CODE |
| LOW | wagtail/contrib/frontend_cache/backends/http.py | 13 | __all__ = ["PurgeRequest", "HTTPBackend"] | CODE |
| LOW | wagtail/contrib/frontend_cache/backends/cloudfront.py | 13 | __all__ = ["CloudfrontBackend"] | CODE |
| LOW | wagtail/contrib/frontend_cache/backends/base.py | 8 | __all__ = ["BaseBackend"] | CODE |
| LOW | wagtail/contrib/redirects/signal_handlers.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | wagtail/users/tests/__init__.py | 5 | __all__ = [ | CODE |
| LOW | wagtail/users/views/bulk_actions/__init__.py | 5 | __all__ = ["AssignRoleBulkAction", "DeleteBulkAction", "SetActiveStateBulkAction"] | CODE |
| LOW | wagtail/actions/__init__.py | 9 | __all__ = [ | CODE |
| LOW | wagtail/api/v3/urls.py | 18 | __all__ = ["api"] | CODE |
| LOW | wagtail/documents/views/bulk_actions/__init__.py | 5 | __all__ = ["AddToCollectionBulkAction", "AddTagsBulkAction", "DeleteBulkAction"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | wagtail/blocks/base.py | 33 | # ========================================= | COMMENT |
| MEDIUM⚡ | wagtail/blocks/base.py | 35 | # ========================================= | COMMENT |
| MEDIUM | wagtail/blocks/base.py | 699 | # ======================== | COMMENT |
| MEDIUM | wagtail/blocks/base.py | 701 | # ======================== | COMMENT |
| MEDIUM | wagtail/test/demosite/models.py | 19 | # ============================= | COMMENT |
| MEDIUM | wagtail/test/demosite/models.py | 146 | # ============================= | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wagtail/blocks/field_block.py | 746 | CODE | |
| LOW | wagtail/admin/templatetags/wagtailadmin_tags.py | 1186 | CODE | |
| LOW | wagtail/admin/ui/side_panels.py | 63 | CODE | |
| LOW | wagtail/admin/ui/tables/__init__.py | 271 | CODE | |
| LOW | wagtail/models/pages.py | 1735 | CODE | |
| LOW | wagtail/models/pages.py | 1769 | CODE | |
| LOW | wagtail/actions/create_alias.py | 55 | CODE | |
| LOW | wagtail/actions/copy_page.py | 36 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/advanced_topics/i18n.md | 553 | ###### Step 1: Add `BootstrapTranslatableMixin` to the model | COMMENT |
| LOW | docs/advanced_topics/i18n.md | 578 | ###### Step 2: Create a data migration | COMMENT |
| LOW | docs/advanced_topics/i18n.md | 609 | ###### Step 3: Change `BootstrapTranslatableMixin` to `TranslatableMixin` | COMMENT |
| LOW | docs/advanced_topics/i18n.md | 628 | ###### Step 4: Run `makemigrations` to generate schema migrations, then migrate! | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/packages/index.md | 17 | We recommend the [cookiecutter-wagtail-package](https://github.com/wagtail/cookiecutter-wagtail-package) template to sca | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wagtail/admin/views/generic/preview.py | 214 | # make sure to update the docs for `Block.get_preview_context`. | COMMENT |