Repository Analysis

wagtail/wagtail

A Django content management system focused on flexibility and user experience

14.5 Low AI signal View on GitHub

Analysis Overview

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).

14.5
Adjusted Score
14.5
Raw Score
100%
Time Factor
2026-07-14
Last Push
20.4K
Stars
Python
Language
404.9K
Lines of Code
2.3K
Files
5.4K
Pattern Hits
2026-07-14
Scan Date
0.05
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

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.

Severity Breakdown

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.

CRITICAL 45HIGH 66MEDIUM 195LOW 5078

Directory Score Breakdown

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.

Pattern Findings

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.

Hyper-Verbose Identifiers4355 hits · 3773 pts
SeverityFileLineSnippetContext
LOWwagtail/tasks.py11def update_reference_index_task(app_label, model_name, pk):CODE
LOWwagtail/tasks.py37def delete_file_from_storage_task(deconstructed_storage, path):CODE
LOWwagtail/fields.py299 def get_block_by_content_path(self, value, path_elements):CODE
LOWwagtail/query.py613 def annotate_approved_schedule(self):CODE
LOWwagtail/query.py643 def annotate_has_untranslated_locale(self):CODE
LOWwagtail/coreutils.py285def get_supported_content_language_variant(lang_code, strict=False):CODE
LOWwagtail/coreutils.py320def get_locales_display_names() -> dict:CODE
LOWwagtail/coreutils.py554def make_wagtail_template_fragment_key(fragment_name, page, site, vary_on=None):CODE
LOWwagtail/wagtail_hooks.py100 def register_workflow_permissions():CODE
LOWwagtail/wagtail_hooks.py107 def register_task_permissions():CODE
LOWwagtail/wagtail_hooks.py115def describe_collection_children(collection):CODE
LOWwagtail/wagtail_hooks.py132def register_core_log_actions(actions):CODE
LOWwagtail/wagtail_hooks.py387 def _field_label_from_content_path(model, content_path):CODE
LOWwagtail/wagtail_hooks.py514def register_workflow_log_actions(actions):CODE
LOWwagtail/log_actions.py148 def get_log_model_for_instance(self, instance):CODE
LOWwagtail/signal_handlers.py23def post_save_site_signal_handler(instance, update_fields=None, **kwargs):CODE
LOWwagtail/signal_handlers.py27def post_delete_site_signal_handler(instance, **kwargs):CODE
LOWwagtail/signal_handlers.py31def pre_delete_page_unpublish(sender, instance, **kwargs):CODE
LOWwagtail/signal_handlers.py38def post_delete_page_log_deletion(sender, instance, **kwargs):CODE
LOWwagtail/signal_handlers.py42def reset_locales_display_names_cache(sender, instance, **kwargs):CODE
LOWwagtail/signal_handlers.py50def disable_reference_index_auto_update():CODE
LOWwagtail/signal_handlers.py66def update_reference_index_on_save(instance, **kwargs):CODE
LOWwagtail/signal_handlers.py79def remove_reference_index_on_delete(instance, **kwargs):CODE
LOWwagtail/signal_handlers.py88def connect_reference_index_signal_handlers_for_model(model):CODE
LOWwagtail/signal_handlers.py93def connect_reference_index_signal_handlers(**kwargs):CODE
LOWwagtail/signal_handlers.py98def disconnect_reference_index_signal_handlers_for_model(model):CODE
LOWwagtail/signal_handlers.py103def disconnect_reference_index_signal_handlers(**kwargs):CODE
LOWwagtail/views.py35def authenticate_with_password(request, page_view_restriction_id, page_id):CODE
LOWwagtail/blocks/list_block.py200 def defer_required_validation(self):CODE
LOWwagtail/blocks/list_block.py252 def restore_deferred_validation(self):CODE
LOWwagtail/blocks/list_block.py413 def get_block_by_content_path(self, value, path_elements):CODE
LOWwagtail/blocks/struct_block.py151 def unique_children_and_settings(self):CODE
LOWwagtail/blocks/struct_block.py305 def defer_required_validation(self):CODE
LOWwagtail/blocks/struct_block.py325 def restore_deferred_validation(self):CODE
LOWwagtail/blocks/struct_block.py443 def get_block_by_content_path(self, value, path_elements):CODE
LOWwagtail/blocks/stream_block.py164 def defer_required_validation(self):CODE
LOWwagtail/blocks/stream_block.py247 def restore_deferred_validation(self):CODE
LOWwagtail/blocks/stream_block.py434 def get_block_by_content_path(self, value, path_elements):CODE
LOWwagtail/blocks/stream_block.py825 def _deserialize_pickle_value(app_label, model_name, field_name, field_value):CODE
LOWwagtail/blocks/base.py175 def defer_required_validation(self):CODE
LOWwagtail/blocks/base.py199 def restore_deferred_validation(self):CODE
LOWwagtail/blocks/base.py435 def get_block_by_content_path(self, value, path_elements):CODE
LOWwagtail/blocks/field_block.py65 def defer_required_validation(self):CODE
LOWwagtail/blocks/field_block.py76 def restore_deferred_validation(self):CODE
LOWwagtail/templatetags/wagtailcore_tags.py87def wagtail_documentation_path():CODE
LOWwagtail/templatetags/wagtailcore_tags.py96def wagtail_release_notes_path():CODE
LOWwagtail/templatetags/wagtailcore_tags.py101def wagtail_feature_release_whats_new_link():CODE
LOWwagtail/templatetags/wagtailcore_tags.py109def wagtail_feature_release_editor_guide_link():CODE
LOWwagtail/snippets/models.py38def get_workflow_enabled_models():CODE
LOWwagtail/snippets/models.py84def _register_snippet_immediately(registerable, viewset=None):CODE
LOWwagtail/snippets/models.py113def register_deferred_snippets():CODE
LOWwagtail/snippets/wagtail_hooks.py36def register_snippets_menu_item():CODE
LOWwagtail/snippets/action_menu.py242def get_base_snippet_action_menu_items(model):CODE
LOWwagtail/snippets/permissions.py13def user_can_edit_snippet_type(user, model):CODE
LOWwagtail/snippets/tests/test_unpublish_view.py36 def test_unpublish_view_invalid_pk(self):CODE
LOWwagtail/snippets/tests/test_unpublish_view.py51 def test_unpublish_view_get_bad_permissions(self):CODE
LOWwagtail/snippets/tests/test_unpublish_view.py70 def test_unpublish_view_post_bad_permissions(self):CODE
LOWwagtail/snippets/tests/test_unpublish_view.py104 def test_unpublish_view_post_with_publish_permission(self):CODE
LOWwagtail/snippets/tests/test_unpublish_view.py195 def test_after_unpublish_hook(self):CODE
LOWwagtail/snippets/tests/test_chooser_block.py34 def test_reference_model_by_string(self):CODE
4295 more matches not shown…
Self-Referential Comments179 hits · 542 pts
SeverityFileLineSnippetContext
MEDIUMwagtail/fields.py275 # This method is used for serialization using django.core.serializers,COMMENT
MEDIUMwagtail/snippets/tests/test_history_view.py173 # Create a new revision with a new isolated contextCOMMENT
MEDIUMwagtail/snippets/tests/test_history_view.py179 # Create a new log context for each iteration to simulate multipleCOMMENT
MEDIUMwagtail/snippets/tests/test_usage.py108 # Create a user with basic admin backend accessCOMMENT
MEDIUMwagtail/snippets/tests/test_usage.py133 # Create a user with edit access to snippets but not pagesCOMMENT
MEDIUMwagtail/snippets/tests/test_permissions.py16 # Create a user with add_advert permission but not change_advertCOMMENT
MEDIUMwagtail/snippets/tests/test_permissions.py70 # Create a user with change_advert permission but not add_advertCOMMENT
MEDIUMwagtail/snippets/tests/test_permissions.py124 # Create a user with delete_advert permissionCOMMENT
MEDIUMwagtail/permission_policies/pages.py178 # This method is used all around the admin,COMMENT
MEDIUMwagtail/test/dummy_external_storage.py1# This file contains a file storage backend that imitates behaviours ofCOMMENT
MEDIUMwagtail/test/utils/wagtail_tests.py22 # Create a userCOMMENT
MEDIUMwagtail/test/utils/wagtail_factories/builder.py115 # Create a new StreamBlockFactory subclass, with a declaration for each block the userCOMMENT
MEDIUMwagtail/images/models.py455 # Create a bounding box around all facesCOMMENT
MEDIUMwagtail/images/models.py464 # Create a bounding box around all featuresCOMMENT
MEDIUMwagtail/images/tests/test_jinja2_svg.py17 # Create a real test engineCOMMENT
MEDIUMwagtail/images/tests/test_jinja2_svg.py22 # Create a raster imageCOMMENT
MEDIUMwagtail/images/tests/test_jinja2_svg.py28 # Create an SVG imageCOMMENT
MEDIUMwagtail/images/tests/utils.py76 # Create an image with a missing file, by deserializing from a python objectSTRING
MEDIUMwagtail/images/tests/test_models.py73 # Create an image for running tests onCOMMENT
MEDIUMwagtail/images/tests/test_models.py212 # Create an image for running tests onCOMMENT
MEDIUMwagtail/images/tests/test_models.py319 # Create an image for running tests onCOMMENT
MEDIUMwagtail/images/tests/test_models.py390 # Create an image for running tests onCOMMENT
MEDIUMwagtail/images/tests/test_models.py476 # Create an image for running tests onSTRING
MEDIUMwagtail/images/tests/test_models.py573 # Create an image for running tests onSTRING
MEDIUMwagtail/images/tests/test_models.py1285 # Create an image with a big filename and focal pointSTRING
MEDIUMwagtail/images/tests/test_models.py1341 # Create an image to editSTRING
MEDIUMwagtail/images/tests/test_models.py1423 # Create an imageSTRING
MEDIUMwagtail/images/tests/test_models.py1453 # Create an image with a big filename and no extensionSTRING
MEDIUMwagtail/images/tests/test_models.py1470 # Create an image with a big filename and extensionsSTRING
MEDIUMwagtail/images/tests/test_admin_views.py1411 # Create an image to editCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py1772 # Create an image to editCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py1805 # Create an image to editCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py1834 # Create an image to editCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py1936 # Create an image to editCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py1997 # Create a user with change_image permission but not add_imageCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py2029 # Create a user with add_image permission but not change_imageCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py2158 # Create a new user in the Bakers group, and log in as them.COMMENT
MEDIUMwagtail/images/tests/test_admin_views.py2554 # Create an image to editCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py3019 # Create an image for running tests onCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py3554 # Create an image for running tests onCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py3835 # Create an UploadedFile for running tests onCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py4066 # Create an image for running tests onCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py4265 # Create an image for running tests onCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py4765 # Create an image to editCOMMENT
MEDIUMwagtail/images/tests/test_admin_views.py4771 # Create a user with change_image permission but not add_imageCOMMENT
MEDIUMwagtail/images/tests/tests.py339 # Create an image for running tests onCOMMENT
MEDIUMwagtail/images/tests/tests.py50 # Create an image for running tests onCOMMENT
MEDIUMwagtail/images/tests/test_templatetags.py22 # Create an image for running tests onCOMMENT
MEDIUMwagtail/images/tests/test_templatetags.py138 # Create an image for running tests onCOMMENT
MEDIUM…tests/test_bulk_actions/test_bulk_add_to_collection.py110 # Create a group with image permissions on the source collection onlyCOMMENT
MEDIUM…management/commands/wagtail_update_image_renditions.py84 # Create a new oneCOMMENT
MEDIUMwagtail/tests/test_page_queryset.py532 # Create a translation of the homepageCOMMENT
MEDIUMwagtail/tests/test_page_queryset.py558 # Create a translation of the homepageCOMMENT
MEDIUMwagtail/tests/test_page_queryset.py1025 # Create a ContentType that doesn't correspond to a real modelCOMMENT
MEDIUMwagtail/tests/test_signals.py113 # Create a subpageCOMMENT
MEDIUMwagtail/tests/test_blocks.py2835 # Create a deep copy of the parent's form layout to include theCOMMENT
MEDIUMwagtail/tests/test_page_model.py3759 # Create a page that does not have the default initCOMMENT
MEDIUMwagtail/tests/test_page_model.py3766 # Create a page that does have the default initCOMMENT
MEDIUMwagtail/tests/test_page_model.py1682 # Create a child eventCOMMENT
MEDIUMwagtail/tests/test_page_model.py3383 # Create a singleton pageCOMMENT
119 more matches not shown…
Hallucination Indicators45 hits · 450 pts
SeverityFileLineSnippetContext
CRITICALwagtail/fields.py4from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/blocks/list_block.py5from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/blocks/struct_block.py6from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/blocks/stream_block.py8from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/test/testapp/models.py12from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/test/demosite/models.py3from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/images/fields.py6from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/images/blocks.py2from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/tests/test_sites.py1from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/tests/test_blocks.py11from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/tests/test_audit_log.py7from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/tests/test_date_validators.py4from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/tests/test_workflow.py8from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/admin/forms/tags.py1from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/admin/forms/collections.py6from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/admin/panels/title_field_panel.py59 self.bound_field.field.widget.attrs.update(**self.get_attrs())CODE
CRITICALwagtail/admin/api/actions/delete.py1from django.core.exceptions import ValidationError as DjangoValidationErrorCODE
CRITICALwagtail/admin/api/actions/create_alias.py1from django.core.exceptions import ValidationError as DjangoValidationErrorCODE
CRITICALwagtail/admin/api/actions/convert_alias.py1from django.core.exceptions import ValidationError as DjangoValidationErrorCODE
CRITICALwagtail/admin/api/actions/copy.py1from django.core.exceptions import ValidationError as DjangoValidationErrorCODE
CRITICALwagtail/admin/api/actions/unpublish.py1from django.core.exceptions import ValidationError as DjangoValidationErrorCODE
CRITICALwagtail/admin/api/actions/move.py1from django.core.exceptions import ValidationError as DjangoValidationErrorCODE
CRITICALwagtail/admin/api/actions/revert_to_page_revision.py1from django.core.exceptions import ValidationError as DjangoValidationErrorCODE
CRITICALwagtail/admin/api/actions/copy_for_translation.py1from django.core.exceptions import ValidationError as DjangoValidationErrorCODE
CRITICALwagtail/admin/api/actions/publish.py1from django.core.exceptions import ValidationError as DjangoValidationErrorCODE
CRITICALwagtail/admin/views/editing_sessions.py6from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/admin/views/reports/aging_pages.py3from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/admin/telepath/widgets.py8from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/models/sites.py7from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/models/audit_log.py13from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/contrib/forms/tests/test_models.py2from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/contrib/typed_table_block/tests.py1from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/contrib/typed_table_block/blocks.py2from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/contrib/table_block/blocks.py4from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/api/v2/filters.py2from django.core.exceptions import FieldErrorCODE
CRITICALwagtail/api/v3/errors.py5from django.core.exceptions import ValidationError as DjangoValidationErrorCODE
CRITICALwagtail/documents/models.py7from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/documents/fields.py2from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/documents/tests/test_document_field.py1from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/embeds/blocks.py1from django.core.exceptions import ValidationErrorCODE
CRITICALwagtail/embeds/tests/test_embeds.py10from django.core.exceptions import ValidationErrorCODE
CRITICALdocs/advanced_topics/streamfield_validation.md17from django.core.exceptions import ValidationErrorCODE
CRITICALdocs/advanced_topics/streamfield_validation.md50from django.core.exceptions import ValidationErrorCODE
CRITICALdocs/advanced_topics/streamfield_validation.md69from django.core.exceptions import ValidationErrorCODE
CRITICALdocs/reference/contrib/typed_table_block.md82from django.core.exceptions import ValidationErrorCODE
Unused Imports253 hits · 213 pts
SeverityFileLineSnippetContext
LOWwagtail/compat.py19CODE
LOWwagtail/coreutils.py29CODE
LOWwagtail/apps.py4CODE
LOWwagtail/wagtail_hooks.py22CODE
LOWwagtail/blocks/__init__.py2CODE
LOWwagtail/blocks/__init__.py3CODE
LOWwagtail/blocks/__init__.py4CODE
LOWwagtail/blocks/__init__.py5CODE
LOWwagtail/blocks/__init__.py6CODE
LOWwagtail/blocks/__init__.py7CODE
LOWwagtail/snippets/bulk_actions/__init__.py1CODE
LOWwagtail/locales/views.py18CODE
LOWwagtail/locales/views.py18CODE
LOWwagtail/permission_policies/__init__.py1CODE
LOWwagtail/test/settings_ui.py1CODE
LOWwagtail/test/customuser/models.py13CODE
LOWwagtail/test/customuser/models.py15CODE
LOWwagtail/test/utils/__init__.py1CODE
LOWwagtail/test/utils/__init__.py2CODE
LOWwagtail/test/utils/__init__.py3CODE
LOWwagtail/test/utils/wagtail_factories/__init__.py1CODE
LOWwagtail/test/utils/wagtail_factories/__init__.py2CODE
LOWwagtail/images/models.py1CODE
LOWwagtail/images/apps.py5CODE
LOWwagtail/images/tests/tests.py41CODE
LOWwagtail/images/views/bulk_actions/__init__.py1CODE
LOWwagtail/images/views/bulk_actions/__init__.py2CODE
LOWwagtail/images/views/bulk_actions/__init__.py3CODE
LOWwagtail/admin/models.py15CODE
LOWwagtail/admin/apps.py4CODE
LOWwagtail/admin/apps.py18CODE
LOWwagtail/admin/blocks.py3CODE
LOWwagtail/admin/ui/components.py2CODE
LOWwagtail/admin/ui/components.py2CODE
LOWwagtail/admin/forms/__init__.py2CODE
LOWwagtail/admin/forms/__init__.py2CODE
LOWwagtail/admin/forms/__init__.py2CODE
LOWwagtail/admin/forms/__init__.py2CODE
LOWwagtail/admin/forms/__init__.py2CODE
LOWwagtail/admin/forms/__init__.py9CODE
LOWwagtail/admin/panels/__init__.py4CODE
LOWwagtail/admin/panels/__init__.py4CODE
LOWwagtail/admin/panels/__init__.py9CODE
LOWwagtail/admin/panels/__init__.py10CODE
LOWwagtail/admin/panels/__init__.py11CODE
LOWwagtail/admin/panels/__init__.py12CODE
LOWwagtail/admin/panels/__init__.py13CODE
LOWwagtail/admin/panels/__init__.py14CODE
LOWwagtail/admin/panels/__init__.py15CODE
LOWwagtail/admin/panels/__init__.py16CODE
LOWwagtail/admin/panels/__init__.py17CODE
LOWwagtail/admin/panels/__init__.py18CODE
LOWwagtail/admin/panels/__init__.py19CODE
LOWwagtail/admin/panels/__init__.py20CODE
LOWwagtail/admin/panels/__init__.py21CODE
LOWwagtail/admin/rich_text/__init__.py4CODE
LOWwagtail/admin/views/bulk_action/__init__.py1CODE
LOWwagtail/admin/views/bulk_action/__init__.py2CODE
LOWwagtail/admin/views/generic/__init__.py1CODE
LOWwagtail/admin/views/generic/__init__.py1CODE
193 more matches not shown…
Cross-Language Confusion32 hits · 212 pts
SeverityFileLineSnippetContext
HIGHwagtail/tasks.py28 # parent is null, so there is no valid object to record references againstCOMMENT
HIGH…/tests/permission_policies/test_permission_policies.py577 # in order for user_has_any_permission to return trueCOMMENT
HIGH…/tests/permission_policies/test_permission_policies.py591 # should return falseCOMMENT
HIGH…/tests/permission_policies/test_permission_policies.py703 # in order for user_has_any_permission to return trueCOMMENT
HIGH…/tests/permission_policies/test_permission_policies.py716 # should return falseCOMMENT
HIGH…/tests/permission_policies/test_permission_policies.py967 # in order for user_has_any_permission to return trueCOMMENT
HIGH…/tests/permission_policies/test_permission_policies.py978 # should return falseCOMMENT
HIGH…/tests/permission_policies/test_permission_policies.py1176 # in order for user_has_any_permission to return trueCOMMENT
HIGH…/tests/permission_policies/test_permission_policies.py1189 # should return falseCOMMENT
HIGHwagtail/admin/wagtail_hooks.py722 # Keep pasted links with http/https protocol, and not-pasted links (href = undefined).COMMENT
HIGHwagtail/admin/userbar.py215 # The runOnly has to be omitted (instead of set to an empty list or null)COMMENT
HIGHwagtail/admin/panels/field_panel.py64 # - it corresponds to a non-null, non-text-typed model field (in which case a blank valueCOMMENT
HIGHwagtail/admin/tests/test_edit_handlers.py1221 expected_js = 'new PageChooser("{id}", {{"modelNames": ["{model}"], "canChooseRoot": false, "userPerms": null, "CODE
HIGHwagtail/admin/tests/test_edit_handlers.py1243 expected_js = 'new PageChooser("{id}", {{"modelNames": ["{model}"], "canChooseRoot": true, "userPerms": null, "mCODE
HIGHwagtail/admin/tests/test_edit_handlers.py1299 expected_js = 'new PageChooser("{id}", {{"modelNames": ["{model}"], "canChooseRoot": false, "userPerms": null, "CODE
HIGHwagtail/admin/tests/test_edit_handlers.py1319 expected_js = 'new PageChooser("{id}", {{"modelNames": ["{model}"], "canChooseRoot": false, "userPerms": null, "CODE
HIGHwagtail/admin/tests/test_widgets.py108 'new PageChooser("test-id", {"modelNames": ["wagtailcore.page"], "canChooseRoot": false, "userPerms": null, CODE
HIGHwagtail/admin/tests/test_widgets.py118 'new PageChooser("test-id", {"modelNames": ["tests.simplepage"], "canChooseRoot": false, "userPerms": null, CODE
HIGHwagtail/admin/tests/test_widgets.py130 'new PageChooser("test-id", {"modelNames": ["tests.simplepage"], "canChooseRoot": false, "userPerms": null, CODE
HIGHwagtail/admin/tests/test_widgets.py142 'new PageChooser("test-id", {"modelNames": ["tests.simplepage"], "canChooseRoot": false, "userPerms": null, CODE
HIGHwagtail/admin/tests/test_widgets.py155 'new PageChooser("test-id", {"modelNames": ["tests.simplepage", "tests.eventpage"], "canChooseRoot": false, CODE
HIGHwagtail/admin/tests/test_widgets.py167 'new PageChooser("test-id", {"modelNames": ["wagtailcore.page"], "canChooseRoot": true, "userPerms": null, "CODE
HIGHwagtail/admin/tests/test_widgets.py82 'new PageChooser("test-id", {"modelNames": ["wagtailcore.page"], "canChooseRoot": false, "userPerms": null, CODE
HIGH…ail/admin/rich_text/converters/html_to_contentstate.py89 state.push()CODE
HIGHwagtail/admin/views/generic/models.py108 # is returned anyway (even if list_filter is undefined), so the localeCOMMENT
HIGHwagtail/management/commands/convert_mariadb_uuids.py25 old_field = models.CharField(null=null, max_length=36)CODE
HIGHwagtail/management/commands/convert_mariadb_uuids.py28 new_field = models.UUIDField(null=null)CODE
HIGHwagtail/models/pages.py398 # If non-null, this page is an alias of the linked pageCOMMENT
HIGHwagtail/models/pages.py1899 # fall back on latest_revision_created_at if last_published_at is nullCOMMENT
HIGHwagtail/contrib/settings/models.py77 If the field value is null, or links to something otherSTRING
HIGHwagtail/contrib/table_block/tests.py340 expected_json = '{"first_row_is_table_header": false, "first_col_is_header": false, "data": [["Foo", 1, null], [STRING
HIGHwagtail/contrib/sitemaps/sitemap_generator.py17 # fall back on latest_revision_created_at if last_published_at is nullCOMMENT
Fake / Example Data226 hits · 202 pts
SeverityFileLineSnippetContext
LOWwagtail/blocks/list_block.py453 icon = "placeholder"CODE
LOWwagtail/blocks/struct_block.py93 icon="placeholder",CODE
LOWwagtail/blocks/struct_block.py591 icon = "placeholder"CODE
LOWwagtail/blocks/stream_block.py491 icon = "placeholder"CODE
LOWwagtail/blocks/base.py64 icon = "placeholder"CODE
LOWwagtail/blocks/field_block.py97 icon = "placeholder"CODE
LOWwagtail/blocks/field_block.py496 icon = "placeholder"CODE
LOWwagtail/blocks/field_block.py611 icon = "placeholder"CODE
LOWwagtail/blocks/field_block.py964 icon = "placeholder"CODE
LOWwagtail/test/utils/form_data.py140 'body': rich_text('<p>Lorem ipsum dolor sit amet</p>'),STRING
LOWwagtail/test/utils/form_data.py140 'body': rich_text('<p>Lorem ipsum dolor sit amet</p>'),STRING
LOWwagtail/tests/test_form_data_utils.py16 <input type="text" name="name" value="Jane Doe" placeholder="">CODE
LOWwagtail/tests/test_form_data_utils.py134 ("name", ["Jane Doe"]),STRING
LOWwagtail/tests/test_blocks.py989 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py1485 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py195 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py347 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py2151 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py2439 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py2477 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py2556 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py2614 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py2645 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py3574 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py3601 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py3780 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py3810 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py4531 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py5468 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py5567 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py6131 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py6156 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py6180 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py6205 "icon": "placeholder",CODE
LOWwagtail/tests/test_blocks.py6230 "icon": "placeholder",CODE
LOWwagtail/tests/test_tests.py189 {"title": "Simple Lorem Page", "content": "Lorem ipsum dolor sit amet"},CODE
LOWwagtail/tests/test_tests.py189 {"title": "Simple Lorem Page", "content": "Lorem ipsum dolor sit amet"},CODE
LOWwagtail/admin/filters.py26 AdminDateInput(attrs={"placeholder": _("Date from")}),CODE
LOWwagtail/admin/filters.py27 AdminDateInput(attrs={"placeholder": _("Date to")}),CODE
LOWwagtail/admin/filters.py47 forms.NumberInput(attrs={"placeholder": _("Minimum"), "min": "0"}),CODE
LOWwagtail/admin/filters.py48 forms.NumberInput(attrs={"placeholder": _("Maximum"), "min": "0"}),CODE
LOWwagtail/admin/forms/auth.py14 "placeholder": gettext_lazy("Enter password"),CODE
LOWwagtail/admin/forms/auth.py31 self.fields["username"].widget.attrs["placeholder"] = gettext_lazy(CODE
LOWwagtail/admin/forms/choosers.py75 widget=forms.TextInput(attrs={"placeholder": _("Search")}),CODE
LOWwagtail/admin/forms/search.py8 placeholder = kwargs.pop("placeholder", _("Search…"))CODE
LOWwagtail/admin/forms/search.py11 "placeholder": placeholder,CODE
LOWwagtail/admin/forms/workflows.py27 placeholder = kwargs.pop("placeholder", _("Search…"))CODE
LOWwagtail/admin/forms/workflows.py29 self.fields["q"].widget.attrs = {"placeholder": placeholder}CODE
LOWwagtail/admin/panels/title_field_panel.py46 "placeholder": self.placeholder,CODE
LOWwagtail/admin/panels/title_field_panel.py88 if placeholder and "placeholder" not in widget.attrs:CODE
LOWwagtail/admin/panels/title_field_panel.py89 attrs["placeholder"] = placeholderCODE
LOWwagtail/admin/tests/test_edit_handlers.py2383 self.assertEqual(attrs["placeholder"], "Page title*")CODE
LOWwagtail/admin/tests/test_edit_handlers.py2599 self.assertNotIn("placeholder", attrs)CODE
LOWwagtail/admin/tests/test_edit_handlers.py2610 self.assertNotIn("placeholder", attrs)CODE
LOWwagtail/admin/tests/test_edit_handlers.py2621 self.assertNotIn("placeholder", attrs)CODE
LOWwagtail/admin/tests/test_edit_handlers.py2630 attrs={"placeholder": "My custom placeholder"}CODE
LOWwagtail/admin/tests/test_edit_handlers.py2642 self.assertEqual(attrs["placeholder"], "My custom placeholder")CODE
LOWwagtail/admin/tests/test_edit_handlers.py2652 attrs={"placeholder": "WIDGET placeholder"}CODE
LOWwagtail/admin/tests/test_edit_handlers.py2664 self.assertEqual(attrs["placeholder"], "WIDGET placeholder")CODE
LOWwagtail/admin/tests/test_edit_handlers.py2674 attrs={"placeholder": "WIDGET placeholder"}CODE
166 more matches not shown…
Cross-File Repetition34 hits · 170 pts
SeverityFileLineSnippetContext
HIGHwagtail/fields.py0given a list of elements from a content path, retrieve the block at that path as a boundblock object, or none if the patSTRING
HIGHwagtail/blocks/list_block.py0given a list of elements from a content path, retrieve the block at that path as a boundblock object, or none if the patSTRING
HIGHwagtail/blocks/struct_block.py0given a list of elements from a content path, retrieve the block at that path as a boundblock object, or none if the patSTRING
HIGHwagtail/blocks/stream_block.py0given a list of elements from a content path, retrieve the block at that path as a boundblock object, or none if the patSTRING
HIGHwagtail/blocks/base.py0given a list of elements from a content path, retrieve the block at that path as a boundblock object, or none if the patSTRING
HIGHwagtail/blocks/struct_block.py0always deconstruct typedtableblock instances as if they were plain typedtableblock with all of the field definitions pasSTRING
HIGHwagtail/blocks/stream_block.py0always deconstruct typedtableblock instances as if they were plain typedtableblock with all of the field definitions pasSTRING
HIGHwagtail/contrib/typed_table_block/blocks.py0always deconstruct typedtableblock instances as if they were plain typedtableblock with all of the field definitions pasSTRING
HIGHwagtail/snippets/tests/test_unpublish_view.py0this tests that the unpublish view responds with an unpublish confirm pageSTRING
HIGHwagtail/admin/tests/pages/test_unpublish_page.py0this tests that the unpublish view responds with an unpublish confirm pageSTRING
HIGH…n/tests/pages/test_bulk_actions/test_bulk_unpublish.py0this tests that the unpublish view responds with an unpublish confirm pageSTRING
HIGHwagtail/snippets/tests/test_unpublish_view.py0this tests that the unpublish view doesn't allow users without unpublish permissionsSTRING
HIGHwagtail/admin/tests/pages/test_unpublish_page.py0this tests that the unpublish view doesn't allow users without unpublish permissionsSTRING
HIGH…n/tests/pages/test_bulk_actions/test_bulk_unpublish.py0this tests that the unpublish view doesn't allow users without unpublish permissionsSTRING
HIGHwagtail/snippets/tests/test_create_view.py0template[data-controller="w-teleport"][data-w-teleport-target-value="[data-edit-form]"] #schedule-publishing-dialogSTRING
HIGHwagtail/snippets/tests/test_edit_view.py0template[data-controller="w-teleport"][data-w-teleport-target-value="[data-edit-form]"] #schedule-publishing-dialogSTRING
HIGHwagtail/admin/tests/pages/test_edit_page.py0template[data-controller="w-teleport"][data-w-teleport-target-value="[data-edit-form]"] #schedule-publishing-dialogSTRING
HIGHwagtail/snippets/tests/test_create_view.py0if a form is reshown due to a validation error elsewhere, fields whose validation was deferred should still show the reqSTRING
HIGHwagtail/snippets/tests/test_edit_view.py0if a form is reshown due to a validation error elsewhere, fields whose validation was deferred should still show the reqSTRING
HIGHwagtail/admin/tests/pages/test_edit_page.py0if a form is reshown due to a validation error elsewhere, fields whose validation was deferred should still show the reqSTRING
HIGHwagtail/admin/tests/pages/test_create_page.py0if a form is reshown due to a validation error elsewhere, fields whose validation was deferred should still show the reqSTRING
HIGHwagtail/permission_policies/collections.py0return whether the given user has permission to perform any of the given actions on some or all instances of this model.STRING
HIGHwagtail/permission_policies/base.py0return whether the given user has permission to perform any of the given actions on some or all instances of this model.STRING
HIGHwagtail/permission_policies/sites.py0return whether the given user has permission to perform any of the given actions on some or all instances of this model.STRING
HIGHwagtail/permission_policies/collections.py0return a queryset of users who have permission to perform the given action on some or all instances of this modelSTRING
HIGHwagtail/permission_policies/sites.py0return a queryset of users who have permission to perform the given action on some or all instances of this modelSTRING
HIGHwagtail/permission_policies/base.py0return a queryset of users who have permission to perform the given action on some or all instances of this modelSTRING
HIGHwagtail/permission_policies/collections.py0return a queryset of all instances of this model for which the given user has permission to perform the given actionSTRING
HIGHwagtail/permission_policies/sites.py0return a queryset of all instances of this model for which the given user has permission to perform the given actionSTRING
HIGHwagtail/permission_policies/base.py0return a queryset of all instances of this model for which the given user has permission to perform the given actionSTRING
HIGHwagtail/admin/tests/pages/test_revisions.py0this tests that the publish view returns an error if the page id is invalidSTRING
HIGHwagtail/admin/tests/pages/test_unpublish_page.py0this tests that the publish view returns an error if the page id is invalidSTRING
HIGH…n/tests/pages/test_bulk_actions/test_bulk_unpublish.py0this tests that the publish view returns an error if the page id is invalidSTRING
HIGH…min/tests/pages/test_bulk_actions/test_bulk_publish.py0this tests that the publish view returns an error if the page id is invalidSTRING
Deep Nesting108 hits · 104 pts
SeverityFileLineSnippetContext
LOWruntests.py37CODE
LOWwagtail/fields.py143CODE
LOWwagtail/query.py656CODE
LOWwagtail/whitelist.py34CODE
LOWwagtail/whitelist.py46CODE
LOWwagtail/coreutils.py285CODE
LOWwagtail/coreutils.py347CODE
LOWwagtail/wagtail_hooks.py33CODE
LOWwagtail/wagtail_hooks.py34CODE
LOWwagtail/blocks/struct_block.py37CODE
LOWwagtail/blocks/stream_block.py36CODE
LOWwagtail/blocks/field_block.py613CODE
LOWwagtail/blocks/field_block.py667CODE
LOWwagtail/blocks/field_block.py726CODE
LOWwagtail/snippets/action_menu.py275CODE
LOWwagtail/snippets/views/snippets.py191CODE
LOWwagtail/permission_policies/collections.py292CODE
LOWwagtail/permission_policies/base.py386CODE
LOWwagtail/test/numberformat.py78CODE
LOWwagtail/test/utils/form_data.py147CODE
LOWwagtail/bin/wagtail.py203CODE
LOWwagtail/bin/wagtail.py331CODE
LOWwagtail/bin/wagtail.py354CODE
LOWwagtail/images/models.py650CODE
LOWwagtail/images/models.py1056CODE
LOWwagtail/images/templatetags/wagtailimages_tags.py15CODE
LOW…management/commands/wagtail_update_image_renditions.py40CODE
LOWwagtail/tests/test_page_queryset.py593CODE
LOWwagtail/tests/test_blocks.py70CODE
LOWwagtail/tests/test_hooks.py125CODE
LOWwagtail/tests/streamfield_migrations/test_migrations.py51CODE
LOWwagtail/admin/mail.py231CODE
LOWwagtail/admin/models.py30CODE
LOWwagtail/admin/checks.py105CODE
LOWwagtail/admin/localization.py121CODE
LOWwagtail/admin/wagtail_hooks.py308CODE
LOWwagtail/admin/action_menu.py274CODE
LOWwagtail/admin/messages.py38CODE
LOWwagtail/admin/userbar.py339CODE
LOWwagtail/admin/compare.py98CODE
LOWwagtail/admin/compare.py798CODE
LOWwagtail/admin/compare.py280CODE
LOWwagtail/admin/compare.py447CODE
LOWwagtail/admin/compare.py493CODE
LOWwagtail/admin/compare.py543CODE
LOWwagtail/admin/compare.py776CODE
LOWwagtail/admin/filters.py165CODE
LOWwagtail/admin/forms/models.py190CODE
LOWwagtail/admin/viewsets/model.py516CODE
LOWwagtail/admin/viewsets/pages.py629CODE
LOWwagtail/admin/panels/model_utils.py56CODE
LOWwagtail/admin/panels/group.py27CODE
LOWwagtail/admin/tests/pages/test_page_search.py344CODE
LOWwagtail/admin/views/editing_sessions.py20CODE
LOWwagtail/admin/views/collection_privacy.py11CODE
LOWwagtail/admin/views/chooser.py604CODE
LOWwagtail/admin/views/workflows.py867CODE
LOWwagtail/admin/views/account.py305CODE
LOWwagtail/admin/views/generic/mixins.py454CODE
LOWwagtail/admin/views/generic/models.py166CODE
48 more matches not shown…
Redundant / Tautological Comments31 hits · 50 pts
SeverityFileLineSnippetContext
LOWwagtail/blocks/definition_lookup.py72 # Check if we've already seen this block definitionCOMMENT
LOWwagtail/snippets/tests/test_reordering.py243 # Check if obj3 is now the first item by taking obj1's sort_order andCOMMENT
LOWwagtail/snippets/tests/test_reordering.py253 # Check if obj1 is now the second item by taking obj2's sort_orderCOMMENT
LOWwagtail/snippets/tests/test_reordering.py317 # Check if obj1 is now the second item by taking obj2's sort_orderCOMMENT
LOWwagtail/images/models.py182 # Open file if it is closedCOMMENT
LOWwagtail/images/models.py753 # Read file contents into memoryCOMMENT
LOWwagtail/images/models.py977 # Check if segment has braces to expandCOMMENT
LOWwagtail/images/forms.py27 # Check if this is the file fieldCOMMENT
LOWwagtail/images/tests/test_models.py890 # Check if get_rendition returns the rendition from cacheSTRING
LOWwagtail/tests/test_reference_index.py958 # Check if reference remains (pointing to dead target)COMMENT
LOWwagtail/tests/test_management_commands.py67 # Check if its fixedCOMMENT
LOWwagtail/tests/test_management_commands.py91 # Check if its fixedCOMMENT
LOWwagtail/admin/tests/test_account_management.py378 # Check if the default title does not existCOMMENT
LOWwagtail/admin/tests/test_account_management.py308 # Check if the default title existsCOMMENT
LOWwagtail/admin/tests/viewsets/test_model_viewset.py2107 # Check if obj3 is now the first item by taking obj1's sort_order andCOMMENT
LOWwagtail/admin/tests/viewsets/test_model_viewset.py2116 # Check if obj1 is now the second item by taking obj2's sort_orderCOMMENT
LOWwagtail/admin/tests/viewsets/test_model_viewset.py2168 # Check if obj1 is now the second item by taking obj2's sort_orderCOMMENT
LOWwagtail/admin/tests/pages/test_copy_page.py1091 # Check if slug is hello-world-2COMMENT
LOWwagtail/admin/views/workflows.py491 # Set workflow to active if inactiveCOMMENT
LOWwagtail/admin/views/workflows.py822 # Set workflow to active if inactiveCOMMENT
LOWwagtail/models/pages.py795 # Check if this is a root page of any sites and clear the 'wagtail_site_root_paths' key if soCOMMENT
LOWwagtail/models/i18n.py345 # Check if the object has any parental keys to another translatable modelCOMMENT
LOWwagtail/contrib/settings/models.py207 # Check if we already have this in the cache and return it if so.COMMENT
LOWwagtail/contrib/frontend_cache/signal_handlers.py20 # Loop through list and register signal handlers for each oneCOMMENT
LOWwagtail/contrib/simple_translation/models.py37 # Check if the source tree needs to be synchronised into any other treesCOMMENT
LOW…contrib/simple_translation/tests/test_wagtail_hooks.py239 # Check if fr and de blog post parent ids are in the translated listCOMMENT
LOW…contrib/simple_translation/tests/test_wagtail_hooks.py265 # Check if the new pages exist under their respective translated homepagesCOMMENT
LOW…contrib/simple_translation/tests/test_wagtail_hooks.py324 # Check if the fr and de pages exist under their original parent page (/blog/)COMMENT
LOWwagtail/api/v2/querysets.py27 # Check if we have a specific site to look forCOMMENT
LOWwagtail/documents/models.py94 # Open file if it is closedCOMMENT
LOWwagtail/embeds/finders/oembed.py72 # Check if 'type' is missingCOMMENT
Excessive Try-Catch Wrapping26 hits · 32 pts
SeverityFileLineSnippetContext
MEDIUMsetup.py12 print("Error compiling assets: " + str(e)) # noqa: T201CODE
LOWwagtail/blocks/base.py718 except Exception as e: # noqa: BLE001CODE
MEDIUMwagtail/blocks/base.py710defCODE
LOWwagtail/test/dummy_external_storage.py88 except Exception as e: # noqa: BLE001CODE
MEDIUMwagtail/test/dummy_external_storage.py85def size(self):CODE
LOWwagtail/test/utils/page_tests.py260 except Exception as e: # noqa: BLE001CODE
LOWwagtail/test/utils/page_tests.py336 except Exception as e: # noqa: BLE001CODE
LOWwagtail/test/utils/page_tests.py367 except Exception as e: # noqa: BLE001CODE
LOWwagtail/test/utils/page_tests.py422 except Exception as e: # noqa: BLE001CODE
LOWwagtail/test/utils/page_tests.py438 except Exception as e: # noqa: BLE001CODE
LOWwagtail/test/utils/decorators.py22 except Exception as e: # noqa: BLE001CODE
LOWwagtail/images/models.py168 except Exception as e: # noqa: BLE001CODE
LOWwagtail/images/fields.py186 except Exception as exc: # noqa: BLE001CODE
MEDIUMwagtail/images/fields.py120def check_image_pixel_size(self, f):CODE
LOWwagtail/images/tests/test_management_commands.py41 except Exception: # noqa: BLE001CODE
MEDIUMwagtail/tests/test_utils.py180def test_pickleability(self):CODE
LOWwagtail/tests/test_utils.py183 except Exception as e: # noqa: BLE001CODE
LOWwagtail/tests/test_utils.py190 except Exception as e: # noqa: BLE001CODE
LOWwagtail/admin/mail.py126 except Exception:CODE
LOWwagtail/admin/mail.py269 except Exception:CODE
LOW…nagement/commands/create_log_entries_from_revisions.py48 except Exception: # noqa: BLE001CODE
LOW…nagement/commands/create_log_entries_from_revisions.py60 except Exception: # noqa: BLE001CODE
LOW…ail/contrib/settings/tests/site_specific/test_model.py83 except Exception as e: # noqa: BLE001CODE
LOW…ail/contrib/settings/tests/site_specific/test_model.py91 except Exception as e: # noqa: BLE001CODE
LOWwagtail/contrib/redirects/views.py270 except Exception as e: # noqa: BLE001 ; pragma: no coverCODE
LOWwagtail/documents/models.py123 except Exception: # noqa: BLE001CODE
Over-Commented Block33 hits · 31 pts
SeverityFileLineSnippetContext
LOWwagtail/signals.py61COMMENT
LOWwagtail/fields.py221 ):COMMENT
LOWwagtail/blocks/list_block.py21COMMENT
LOWwagtail/blocks/base.py601 # surname = CharBlock()COMMENT
LOWwagtail/snippets/apps.py21 # created manually.COMMENT
LOWwagtail/snippets/bulk_actions/delete.py21COMMENT
LOWwagtail/permission_policies/collections.py301 # on any instanceCOMMENT
LOWwagtail/tests/test_blocks.py5761 stream_block = blocks.StreamBlock(COMMENT
LOWwagtail/admin/menu.py161 #: The icon used for the menu item that appears in Wagtail's sidebar.COMMENT
LOWwagtail/admin/templatetags/wagtailadmin_tags.py221 request = context.get("request")COMMENT
LOWwagtail/admin/tests/test_audit_log.py221 # 3 edits without UUIDCOMMENT
LOWwagtail/admin/tests/test_menu.py421 # automatically generated from the label, which is translatable.COMMENT
LOWwagtail/admin/tests/test_editing_sessions.py1721COMMENT
LOWwagtail/admin/views/editing_sessions.py161 and not users_other_session["revision_id"]COMMENT
LOWwagtail/admin/views/generic/multiple_upload.py21COMMENT
LOWwagtail/models/pages.py1201 revision=revision,COMMENT
LOWwagtail/models/reference_index.py161 # For example, say we have a StreamField called 'body' which has a struct block typeCOMMENT
LOWwagtail/models/reference_index.py901COMMENT
LOWwagtail/rich_text/feature_registry.py21 # of feature names to 'plugin' objects that define how to implement that featureCOMMENT
LOWdocs/conf.py1#COMMENT
LOWdocs/conf.py141# language = NoneCOMMENT
LOWdocs/conf.py161# unit titles (such as .. function::).COMMENT
LOWdocs/conf.py241# html_title = NoneCOMMENT
LOWdocs/conf.py261# .htaccess) here, relative to this directory. These files are copiedCOMMENT
LOWdocs/conf.py281# html_domain_indices = TrueCOMMENT
LOWdocs/conf.py301# If true, an OpenSearch description file will be output, and all pages willCOMMENT
LOWdocs/conf.py341# latex_logo = NoneCOMMENT
LOWdocs/advanced_topics/add_to_django_project.md321 }COMMENT
LOW.github/workflows/test.yml21COMMENT
LOWclient/scss/components/_preview-panel.scss41 // Ensure that sites without a background show with a fallback, only when iframe has loadedCOMMENT
LOWclient/src/components/Sidebar/menu/SubMenuItem.tsx41 // to finish before making it invisibleCOMMENT
LOW…/src/components/StreamField/blocks/StructBlock.test.js921 // group(root):COMMENT
LOW…ypoints/contrib/typed_table_block/typed_table_block.js21 // * id: the unique ID number assigned to this column, used in field name prefixesCOMMENT
AI Slop Vocabulary16 hits · 28 pts
SeverityFileLineSnippetContext
LOWwagtail/query.py524 # Assuming the situation is the latter, just return the root node.COMMENT
LOWwagtail/blocks/base.py572 # In the base implementation, no substitutions happen, so we ignore the lookup and just callCOMMENT
MEDIUMwagtail/snippets/tests/test_locking.py492 """A user needs to unlock a snippet that's locked by another user in order to edit it."""STRING
LOWwagtail/snippets/views/snippets.py254 # Hook response is not suitable for a JSON response, so ignore it and just useCOMMENT
LOWwagtail/snippets/views/snippets.py322 # Hook response is not suitable for a JSON response, so ignore it and just useCOMMENT
MEDIUMwagtail/images/models.py745 # utilize QuerySet.get_or_create(), which has better handling ofCOMMENT
LOWwagtail/images/forms.py38 # For all other fields, just call its formfield() method.COMMENT
MEDIUMwagtail/admin/userbar.py105 #: Should be used in conjunction with ``axe_custom_rules``.COMMENT
LOWwagtail/admin/templatetags/wagtailadmin_tags.py230 # users having to log in again. So we just return the URL unchanged.COMMENT
LOWwagtail/admin/tests/pages/test_edit_page.py1515 # Without TZ support, just use the submitted timestamp as-isCOMMENT
LOWwagtail/admin/views/pages/create.py293 # Hook response is not suitable for a JSON response, so ignore it and just useCOMMENT
LOWwagtail/admin/views/pages/edit.py662 # Hook response is not suitable for a JSON response, so ignore it and just useCOMMENT
LOWwagtail/management/commands/fixtree.py74 # Deleting only the *actual* orphans is a bit silly (since it'll just createCOMMENT
LOWwagtail/models/pages.py1470 # ``current_site`` is purposefully undocumented, as one can simply pass the request and getCOMMENT
MEDIUMwagtail/users/tests/test_admin_views.py2095 # Tests that use this method are testing the aforementionedCOMMENT
LOWwagtail/documents/forms.py35 # For all other fields, just call its formfield() method.COMMENT
Modern Structural Boilerplate26 hits · 26 pts
SeverityFileLineSnippetContext
LOWwagtail/coreutils.py31logger = logging.getLogger(__name__)CODE
LOWwagtail/blocks/list_block.py22__all__ = ["ListBlock", "ListBlockValidationError"]CODE
LOWwagtail/blocks/static_block.py11__all__ = ["StaticBlock"]CODE
LOWwagtail/blocks/struct_block.py27__all__ = [CODE
LOWwagtail/blocks/stream_block.py27__all__ = [CODE
LOWwagtail/blocks/base.py23__all__ = [CODE
LOWwagtail/blocks/field_block.py1080__all__ = [cls.__name__ for cls in block_classes]CODE
LOWwagtail/snippets/bulk_actions/__init__.py3__all__ = ["DeleteBulkAction"]CODE
LOWwagtail/test/utils/wagtail_factories/factories.py13__all__ = [CODE
LOWwagtail/test/utils/wagtail_factories/blocks.py18__all__ = [CODE
LOW…management/commands/wagtail_update_image_renditions.py8logger = logging.getLogger(__name__)CODE
LOWwagtail/images/views/bulk_actions/__init__.py5__all__ = ["AddToCollectionBulkAction", "AddTagsBulkAction", "DeleteBulkAction"]CODE
LOWwagtail/admin/views/bulk_action/__init__.py4__all__ = ["BulkAction", "index"]CODE
LOWwagtail/admin/views/pages/bulk_actions/__init__.py6__all__ = [CODE
LOWwagtail/contrib/settings/models.py12__all__ = [CODE
LOWwagtail/contrib/frontend_cache/backends/azure.py11__all__ = ["AzureBaseBackend", "AzureFrontDoorBackend", "AzureCdnBackend"]CODE
LOWwagtail/contrib/frontend_cache/backends/cloudflare.py11__all__ = ["CloudflareBackend"]CODE
LOWwagtail/contrib/frontend_cache/backends/http.py13__all__ = ["PurgeRequest", "HTTPBackend"]CODE
LOWwagtail/contrib/frontend_cache/backends/cloudfront.py13__all__ = ["CloudfrontBackend"]CODE
LOWwagtail/contrib/frontend_cache/backends/base.py8__all__ = ["BaseBackend"]CODE
LOWwagtail/contrib/redirects/signal_handlers.py14logger = logging.getLogger(__name__)CODE
LOWwagtail/users/tests/__init__.py5__all__ = [CODE
LOWwagtail/users/views/bulk_actions/__init__.py5__all__ = ["AssignRoleBulkAction", "DeleteBulkAction", "SetActiveStateBulkAction"]CODE
LOWwagtail/actions/__init__.py9__all__ = [CODE
LOWwagtail/api/v3/urls.py18__all__ = ["api"]CODE
LOWwagtail/documents/views/bulk_actions/__init__.py5__all__ = ["AddToCollectionBulkAction", "AddTagsBulkAction", "DeleteBulkAction"]CODE
Decorative Section Separators6 hits · 21 pts
SeverityFileLineSnippetContext
MEDIUMwagtail/blocks/base.py33# =========================================COMMENT
MEDIUMwagtail/blocks/base.py35# =========================================COMMENT
MEDIUMwagtail/blocks/base.py699# ========================COMMENT
MEDIUMwagtail/blocks/base.py701# ========================COMMENT
MEDIUMwagtail/test/demosite/models.py19# =============================COMMENT
MEDIUMwagtail/test/demosite/models.py146# =============================COMMENT
AI Structural Patterns8 hits · 7 pts
SeverityFileLineSnippetContext
LOWwagtail/blocks/field_block.py746CODE
LOWwagtail/admin/templatetags/wagtailadmin_tags.py1186CODE
LOWwagtail/admin/ui/side_panels.py63CODE
LOWwagtail/admin/ui/tables/__init__.py271CODE
LOWwagtail/models/pages.py1735CODE
LOWwagtail/models/pages.py1769CODE
LOWwagtail/actions/create_alias.py55CODE
LOWwagtail/actions/copy_page.py36CODE
Structural Annotation Overuse4 hits · 6 pts
SeverityFileLineSnippetContext
LOWdocs/advanced_topics/i18n.md553###### Step 1: Add `BootstrapTranslatableMixin` to the modelCOMMENT
LOWdocs/advanced_topics/i18n.md578###### Step 2: Create a data migrationCOMMENT
LOWdocs/advanced_topics/i18n.md609###### Step 3: Change `BootstrapTranslatableMixin` to `TranslatableMixin`COMMENT
LOWdocs/advanced_topics/i18n.md628###### Step 4: Run `makemigrations` to generate schema migrations, then migrate!COMMENT
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMdocs/packages/index.md17We recommend the [cookiecutter-wagtail-package](https://github.com/wagtail/cookiecutter-wagtail-package) template to scaCODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOWwagtail/admin/views/generic/preview.py214 # make sure to update the docs for `Block.get_preview_context`.COMMENT