AI Slop Code RIsk Monitor

django-cms/django-cms

The easy-to-use and developer-friendly enterprise CMS powered by Django

17.9 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for django-cms/django-cms, a Python project with 10,674 GitHub stars. SynthScan examined 150,714 lines of code across 833 source files, recording 2073 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 17.9 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

17.9
Adjusted Signal
17.9
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
10.7K
Stars
Python
Language
150.7K
Lines of Code
833
Files
2.1K
Pattern Hits
2026-10-12
Scan Date
0.13
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 43.4/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 1808 finding(s).

Hallucinated Dependency & Supply Chain Risk 20.3/100 · LOW

Are imports declared and package/API names verified? 180 finding(s).

Agent Over-Engineering Ratio 43.1/100 · MEDIUM

Are wrappers, guards, and repeated structures necessary? 1715 finding(s).

PR Review Velocity Impact 62.2/100 · HIGH

Which changes need focused human review? 2073 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 53HIGH 52MEDIUM 63LOW 1905

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 2073 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers1621 hits · 1395 pts
SeverityFileLineSnippetContext
LOWcms/plugin_pool.py43 def global_template_restrictions(self) -> bool:CODE
LOWcms/plugin_pool.py205 def get_all_plugins_for_model(self, model: type[models.Model]) -> list[type[CMSPluginBase]]:CODE
LOWcms/plugin_pool.py340 def plugins_with_extra_placeholder_menu(self) -> list[type[CMSPluginBase]]:CODE
LOWcms/app_registration.py177def backwards_compatibility_config():CODE
LOWcms/cms_config.py61 def configure_toolbar_enabled_models(self, cms_config):CODE
LOWcms/plugin_base.py118 def get_child_class_overrides(cls, slot: str, page: Optional[Page] = None, instance: Optional[CMSPlugin] = None)STRING
LOWcms/plugin_base.py763 def get_empty_change_form_text(cls, obj=None):CODE
LOWcms/plugin_base.py772 def get_child_class_overrides(cls, slot: str, page: Page | None = None, instance: CMSPlugin | None = None):CODE
LOWcms/plugin_base.py789 def get_child_plugin_candidates(cls, slot: str, page: Page | None = None) -> list:CODE
LOWcms/plugin_base.py926 def get_extra_placeholder_menu_items(cls, request: HttpRequest, placeholder: Placeholder) -> list["PluginMenuItem"] CODE
LOWcms/plugin_base.py936 def get_extra_plugin_menu_items(cls, request: HttpRequest, plugin: CMSPlugin) -> list["PluginMenuItem"] | None:CODE
LOWcms/templates.py26 def placeholder_plugin_menu_template(self):CODE
LOWcms/api.py112def _validate_path_uniqueness(page, path, language):CODE
LOWcms/plugin_rendering.py139 def get_placeholder_plugin_menu(self, placeholder: Placeholder, page: Page | None = None):CODE
LOWcms/plugin_rendering.py148 def get_placeholder_toolbar_js(self, placeholder, page: models.Model | None = None):CODE
LOW⚡cms/plugin_rendering.py201 def get_rendered_plugins_cache(self, placeholder: Placeholder):CODE
LOW⚡cms/plugin_rendering.py209 def get_rendered_placeholders(self) -> list[Placeholder]:CODE
LOW⚡cms/plugin_rendering.py213 def get_rendered_editable_placeholders(self) -> list[Placeholder]:CODE
LOWcms/plugin_rendering.py232 def placeholder_cache_is_enabled(self):CODE
LOWcms/plugin_rendering.py355 def get_editable_placeholder_context(self, placeholder: Placeholder, page: Page | None = None) -> dict:CODE
LOWcms/plugin_rendering.py583 def _get_cached_placeholder_content(self, placeholder, language):CODE
LOWcms/plugin_rendering.py633 def _preload_placeholders_for_page(self, page, language=None, slots=None, inherit=False):CODE
LOWcms/plugin_rendering.py773 def get_editable_placeholder_context(self, placeholder, page=None):STRING
LOWcms/cms_toolbars.py115 def render_object_editable_buttons(self):CODE
LOWcms/cms_toolbars.py156 def _has_placeholder_change_perm(self):CODE
LOWcms/cms_toolbars.py166 def _has_placeholder_view_perm(self):CODE
LOWcms/cms_toolbars.py453 def has_page_change_permission(self):CODE
LOWcms/cms_toolbars.py480 def get_on_delete_redirect_url(self):CODE
LOWcms/appresolver.py181def get_patterns_for_page_url(page_url):CODE
LOWcms/cms_menus.py28def get_visible_page_contents(request, page_contents: Iterable[PageContent], site) -> Iterable[PageContent]:CODE
LOWcms/cms_menus.py173 def get_menu_node_for_page_content(CODE
LOWcms/cms_menus.py536 def find_ancestors_and_remove_children(self, node, nodes, removed=None):CODE
LOWcms/plugin_processors.py4def plugin_meta_context_processor(instance, placeholder, context):CODE
LOWcms/plugin_processors.py20def mark_safe_plugin_processor(instance, placeholder, rendered_content, original_context):CODE
LOWcms/views.py346def render_placeholder_content(request, obj, context):CODE
LOWcms/templatetags/cms_tags.py151def _show_uncached_placeholder_by_id(context, *args, **kwargs):CODE
LOWcms/templatetags/cms_admin.py136def show_admin_menu_for_pages(context, descendants, depth=1):CODE
LOWcms/forms/utils.py28def get_page_choices_for_site(site, language):CODE
LOWcms/forms/utils.py62def update_site_and_page_choices(language=None):CODE
LOWcms/cache/placeholder.py28def _get_placeholder_cache_version_key(placeholder, lang, site_id):CODE
LOWcms/cache/placeholder.py53def _get_placeholder_cache_version(placeholder, lang, site_id):CODE
LOWcms/cache/placeholder.py71def _set_placeholder_cache_version(placeholder, lang, site_id, version, vary_on_list=None, duration=None):CODE
LOWcms/cache/placeholder.py88def _get_placeholder_cache_key(placeholder, lang, site_id, request, soft=False):CODE
LOWcms/cache/__init__.py37def invalidate_cms_page_cache():CODE
LOWcms/cache/page.py75def _page_vary_headers_cache_key(request: HttpRequest) -> str:CODE
LOW⚡cms/cache/permissions.py21def get_cache_permission_version_key():CODE
LOW⚡cms/cache/permissions.py25def get_cache_permission_version():CODE
LOWcms/cache/permissions.py56def clear_user_permission_cache(user):CODE
LOWcms/test_utils/runners.py32 def teardown_test_environment(self, **kwargs):CODE
LOWcms/test_utils/testcases.py221 def get_staff_user_with_no_permissions(self):CODE
LOWcms/test_utils/testcases.py228 def get_staff_user_with_std_permissions(self):CODE
LOWcms/test_utils/testcases.py268 def get_new_page_data_dbfields(self, parent=None, site=None,CODE
LOWcms/test_utils/testcases.py282 def get_pagedata_from_dbfields(self, page_data):CODE
LOWcms/test_utils/testcases.py479 def load_template_from_string(self, template):CODE
LOWcms/test_utils/testcases.py501 def get_permissions_test_page(self):CODE
LOWcms/test_utils/testcases.py546 def get_page_delete_translation_uri(self, language, page):CODE
LOWcms/test_utils/testcases.py552 def get_page_change_template_uri(self, language, page):CODE
LOWcms/test_utils/testcases.py640 def get_clear_placeholder_url(self, placeholder, language=None):CODE
LOWcms/test_utils/testcases.py658 def _add_plugin_to_placeholder(self, placeholder, plugin_type='LinkPlugin', language='en'):CODE
LOWcms/test_utils/util/context_managers.py180def override_placeholder_conf(CMS_PLACEHOLDER_CONF):CODE
1561 more matches not shown…
Hallucination Indicators53 hits · 540 pts
SeverityFileLineSnippetContext
CRITICALcms/plugin_pool.py20from cms.utils.helpers import normalize_nameCODE
CRITICALcms/api.py45from django.core.exceptions import FieldError, ValidationErrorCODE
CRITICALcms/menu_bases.py1from django.core.exceptions import ValidationErrorCODE
CRITICALcms/views.py47from cms.utils.helpers import is_editable_modelCODE
CRITICALcms/middleware/toolbar.py5from django.core.exceptions import ValidationErrorCODE
CRITICALcms/forms/wizards.py2from django.core.exceptions import ValidationErrorCODE
CRITICALcms/forms/validators.py4from django.core.exceptions import ValidationErrorCODE
CRITICALcms/cache/placeholder.py25from cms.utils.helpers import get_header_name, get_timezone_nameCODE
CRITICALcms/cache/page.py24from cms.utils.helpers import get_timezone_nameCODE
CRITICALcms/test_utils/project/objectpermissionsapp/models.py5from django.core.exceptions import ValidationErrorCODE
CRITICALcms/tests/test_forms.py6from django.core.exceptions import ValidationErrorCODE
CRITICALcms/tests/test_page.py10from django.core.exceptions import ValidationErrorCODE
CRITICALcms/tests/test_helpers.py8from cms.utils.helpers import is_editable_modelCODE
CRITICALcms/tests/test_api.py8from django.core.exceptions import FieldErrorCODE
CRITICALcms/tests/test_cache.py48from cms.utils.helpers import get_timezone_nameCODE
CRITICALcms/tests/frontend/unit/cms.pagetree.test.js123 CMS.API.Helpers._getWindow.and.returnValue({CODE
CRITICALcms/tests/frontend/unit/cms.structureboard.test.js352 CMS.API.Helpers.setSettings.and.callFake(function(input) {CODE
CRITICALcms/tests/frontend/unit/cms.structureboard.test.js522 CMS.API.Helpers.setSettings.and.callFake(function(input) {CODE
CRITICALcms/tests/frontend/unit/cms.structureboard.test.js525 CMS.API.Helpers.setSettings.calls.reset();CODE
CRITICALcms/tests/frontend/unit/cms.structureboard.test.js2093 CMS.API.Clipboard._isClipboardModalOpen.and.returnValue(true);CODE
CRITICALcms/tests/frontend/unit/cms.changetracker.test.js198 CMS.ChangeTracker.prototype._trackChange.and.callThrough();CODE
CRITICAL…/tests/frontend/unit/cms.pagetree.stickyheader.test.js94 CMS.API.Helpers._getWindow.and.returnValue({CODE
CRITICAL…/tests/frontend/unit/cms.pagetree.stickyheader.test.js108 CMS.API.Helpers._getWindow.and.returnValue({CODE
CRITICAL⚡cms/tests/frontend/unit/cms.plugins.test.js329 expect(CMS.Plugin.prototype._checkIfPasteAllowed.calls.count()).toEqual(1);CODE
CRITICAL⚡cms/tests/frontend/unit/cms.plugins.test.js336 expect(CMS.Plugin.prototype._checkIfPasteAllowed.calls.count()).toEqual(2);CODE
CRITICAL⚡cms/tests/frontend/unit/cms.plugins.test.js339 expect(CMS.Plugin.prototype._checkIfPasteAllowed.calls.count()).toEqual(2);CODE
CRITICALcms/tests/frontend/unit/cms.plugins.test.js635 CMS.API.Helpers.addEventListener.calls.argsFor(0)[1]({}, { instance: plugin.modal });CODE
CRITICALcms/tests/frontend/unit/cms.plugins.test.js717 CMS.API.Helpers.addEventListener.calls.argsFor(0)[1]({}, { instance: plugin.modal });CODE
CRITICALcms/tests/frontend/unit/cms.plugins.test.js1501 CMS.API.Helpers.addEventListener.calls.argsFor(0)[1]({}, { instance: plugin.modal });CODE
CRITICALcms/tests/frontend/unit/cms.clipboard.test.js265 CMS.API.Toolbar.openAjax.calls.mostRecent().args[0].callback();CODE
CRITICALcms/tests/frontend/unit/cms.toolbar.test.js136 CMS.Toolbar.prototype._initialStates.and.callThrough();CODE
CRITICALcms/tests/frontend/unit/cms.toolbar.test.js137 CMS.Toolbar.prototype._initialStates.calls.reset();CODE
CRITICALcms/tests/frontend/integration/dragndrop.js71 CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0);CODE
CRITICALcms/tests/frontend/integration/dragndrop.js159 CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0);CODE
CRITICALcms/tests/frontend/integration/dragndrop.js258 CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0);CODE
CRITICALcms/tests/frontend/integration/clipboard.js87 CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0);CODE
CRITICALcms/tests/frontend/integration/clipboard.js546 CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0);CODE
CRITICALcms/tests/frontend/integration/clipboard.js567 CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0);CODE
CRITICALcms/tests/frontend/integration/clipboard.js860 CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0);CODE
CRITICALcms/tests/frontend/integration/clipboard.js880 CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0);CODE
CRITICALcms/tests/frontend/integration/copy-from-language.js81 CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0);CODE
CRITICALcms/admin/utils.py34from cms.utils.helpers import is_editable_modelCODE
CRITICALcms/admin/permissionadmin.py20from cms.utils.helpers import classpropertyCODE
CRITICALcms/utils/helpers.py17 >>> from cms.utils.helpers import classpropertySTRING
CRITICALcms/static/cms/js/admin/actions.js9 window.top.CMS.API.Sideframe.close();CODE
CRITICALcms/static/cms/js/admin/actions.js60 window.top.CMS.API.Sideframe.close();CODE
CRITICALcms/static/cms/js/libs/jquery.min.js5return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,tCODE
CRITICALcms/static/cms/js/modules/cms.plugins.js336 if (!CMS.API.StructureBoard.ui.container.hasClass('cms-structure-condensed')) {CODE
CRITICALcms/static/cms/js/modules/cms.plugins.js346 if (!CMS.API.StructureBoard.ui.container.hasClass('cms-structure-condensed')) {CODE
CRITICALcms/static/cms/js/modules/cms.pagetree.js923 window.top.CMS.API.Toolbar.showLoader();CODE
CRITICALcms/static/cms/js/modules/cms.pagetree.js932 window.top.CMS.API.Toolbar.hideLoader();CODE
CRITICALcms/static/cms/js/modules/cms.pagetree.js944 window.top.CMS.API.Toolbar.hideLoader();CODE
CRITICALmenus/menu_pool.py8from django.core.exceptions import ValidationErrorCODE
Empty Error Handlers35 hits · 175 pts
SeverityFileLineSnippetContext
HIGHtestserver.py45except Exception:CODE
HIGHcms/plugin_pool.py164except TemplateSyntaxError:CODE
HIGHcms/page_rendering.py73except Resolver404:CODE
HIGHcms/plugin_base.py758except KeyError:CODE
HIGHcms/apphook_pool.py60except AppAlreadyRegistered:CODE
HIGHcms/appresolver.py45except Resolver404:CODE
HIGHcms/appresolver.py48except Page.DoesNotExist:CODE
HIGHcms/appresolver.py89except Resolver404:CODE
HIGHcms/templatetags/cms_tags.py100except MAIL_DELIVERY_ERRORS:CODE
HIGHcms/test_utils/testcases.py320except ObjectDoesNotExist:CODE
HIGHcms/test_utils/testcases.py74except: # noqaCODE
HIGHcms/test_utils/project/extensionapp/cms_toolbars.py38except NoReverseMatch:CODE
HIGHcms/test_utils/project/extensionapp/cms_toolbars.py69except NoReverseMatch:CODE
HIGHcms/test_utils/project/sampleapp/cms_menus.py26except NoReverseMatch:CODE
HIGHcms/test_utils/project/sampleapp/cms_menus.py77except NoReverseMatch:CODE
HIGHcms/toolbar/utils.py324except KeyError:CODE
HIGHcms/tests/test_views.py63except IndexError:CODE
HIGHcms/tests/test_cache.py123except PluginAlreadyRegistered:CODE
HIGHcms/tests/test_cache.py239except PluginAlreadyRegistered:CODE
HIGHcms/tests/test_cache.py318except PluginAlreadyRegistered:CODE
HIGHcms/tests/test_cache.py322except PluginAlreadyRegistered:CODE
HIGHcms/tests/test_cache.py478except PluginAlreadyRegistered:CODE
HIGHcms/admin/settingsadmin.py117except Resolver404:CODE
HIGHcms/admin/forms.py115except (IndexError, AttributeError):CODE
HIGHcms/admin/forms.py839except ObjectDoesNotExist:CODE
HIGHcms/utils/conf.py334except (TypeError, ValueError):CODE
HIGHcms/utils/page.py103except NoReverseMatch:CODE
HIGHcms/models/permissionmodels.py22except KeyError:CODE
HIGHcms/models/placeholdermodel.py269except LanguageError:CODE
HIGHcms/models/pluginmodel.py309except AttributeError:CODE
HIGHcms/models/managers.py109except self.model.DoesNotExist:CODE
HIGHcms/extensions/admin.py60except self.model.DoesNotExist:CODE
HIGHcms/extensions/admin.py107except self.model.DoesNotExist:CODE
HIGHcms/extensions/extension_pool.py51except KeyError:CODE
HIGHmenus/utils.py318except NoReverseMatch:CODE
Self-Referential Comments42 hits · 142 pts
SeverityFileLineSnippetContext
MEDIUMdocs/conf.py5# This file is execfile()d with the current directory set to its containingCOMMENT
MEDIUM⚡cms/tests/test_forms.py436 # Create a child under parent1 with slug "test"COMMENT
MEDIUM⚡cms/tests/test_forms.py439 # Create a child under parent2 with the same slug "test" (this is allowed because they have different parents)COMMENT
MEDIUMcms/tests/test_forms.py242 # Create a basic page structureCOMMENT
MEDIUMcms/tests/test_forms.py487 # Create a child under parent with the same slugCOMMENT
MEDIUMcms/tests/test_admin.py229 # Create a page in default language ("fr")COMMENT
MEDIUMcms/tests/test_plugin_renderers.py353 # Create a CMS page placeholder as source model cms.pagecontentCOMMENT
MEDIUMcms/tests/test_plugin_renderers.py401 # Create an Example1 instanceCOMMENT
MEDIUM⚡cms/tests/test_log_entries.py63 # Create a pageCOMMENT
MEDIUM⚡cms/tests/test_plugins.py1264 # Create a plugin that allows childrenCOMMENT
MEDIUM⚡cms/tests/test_plugins.py1443 # Create a single plugin with no parentCOMMENT
MEDIUMcms/tests/test_plugins.py1804 # Create a pageCOMMENT
MEDIUMcms/tests/test_placeholder.py1673 # Create a single plugin as the first plugin of the target placeholderCOMMENT
MEDIUMcms/tests/test_page_admin.py1873 # Create a page with redirectCOMMENT
MEDIUMcms/tests/test_page_admin.py1902 # Create a page without redirectCOMMENT
MEDIUMcms/tests/test_page_admin.py4137 # Create a page permission row for the page which staff_user should NOTCOMMENT
MEDIUMcms/tests/test_views.py404 # Create a homepage with English and German versionsSTRING
MEDIUMcms/tests/test_multilingual.py45 # Create a new pageCOMMENT
MEDIUMcms/tests/test_multilingual.py74 # Create a different language using the edit admin pageCOMMENT
MEDIUMcms/tests/test_nested_plugins.py1223 # Create an empty placeholder for language "en"COMMENT
MEDIUM⚡cms/tests/test_toolbar.py2880 # Create a QueryDict with test parametersCOMMENT
MEDIUMcms/tests/test_apphook_reload_language_variants.py49 # Create a page with an apphook in EnglishCOMMENT
MEDIUMcms/tests/test_apphook_reload_language_variants.py61 # Create a new language variant via admin (simulating user action)COMMENT
MEDIUMcms/tests/test_apphook_reload_language_variants.py93 # Create a page with an apphook in EnglishCOMMENT
MEDIUMcms/tests/test_apphook_reload_language_variants.py105 # Create a new language variant (German)COMMENT
MEDIUM⚡cms/tests/test_apphook_reload_language_variants.py122 # Create a page without an apphook in EnglishCOMMENT
MEDIUM⚡cms/tests/test_apphook_reload_language_variants.py132 # Create a new language variant (German)COMMENT
MEDIUMcms/tests/test_apphook_reload_language_variants.py151 # Create a page with an apphookCOMMENT
MEDIUMcms/tests/test_apphook_reload_language_variants.py163 # Create a new language variantCOMMENT
MEDIUM⚡cms/tests/test_apphook_reload_language_variants.py180 # Create a page without an apphookCOMMENT
MEDIUM⚡cms/tests/test_apphook_reload_language_variants.py190 # Create a new language variantCOMMENT
MEDIUMcms/tests/test_apphook_reload_language_variants.py208 # Create a page with an apphookCOMMENT
MEDIUM⚡cms/tests/test_app_registration.py504 # Create a mock app with a contractCOMMENT
MEDIUM⚡cms/tests/test_app_registration.py526 # Create a mock app without a contract attributeCOMMENT
MEDIUMcms/tests/test_cache.py423 # Create a test pageCOMMENT
MEDIUMcms/tests/test_cache.py432 # Create a request objectCOMMENT
MEDIUMcms/tests/test_cache.py514 # Create a test pageCOMMENT
MEDIUMcms/tests/test_cache.py557 # Create a test pageCOMMENT
MEDIUMcms/tests/test_cache.py566 # Create a request objectCOMMENT
MEDIUMcms/tests/test_apphooks.py1112 # Create a page with an apphook attachedCOMMENT
MEDIUMcms/admin/placeholderadmin.py619 # Create a PlaceholderReference plugin which in turnCOMMENT
MEDIUMcms/management/commands/startcmsproject.py1259 # Create a random SECRET_KEY to put it in the main settings.COMMENT
Fake / Example Data79 hits · 76 pts
SeverityFileLineSnippetContext
LOWcms/plugin_base.py56 "exclude": ("position", "placeholder", "language", "plugin_type", "path", "depth"),CODE
LOWcms/plugin_base.py384 context["placeholder"] = placeholderCODE
LOWcms/plugin_base.py638 "placeholder": pl,CODE
LOWcms/constants.py71PLACEHOLDER_TOOLBAR_JS = _get_toolbar_js("placeholder")CODE
LOWcms/plugin_rendering.py57 "placeholder",CODE
LOWcms/cms_menus.py437 * Department of Lorem IpsumSTRING
LOWcms/templatetags/cms_tags.py310 name = "placeholder"CODE
LOWcms/templatetags/cms_tags.py895 Argument("placeholder"),CODE
LOWcms/templatetags/cms_tags.py974register.tag("placeholder", Placeholder)CODE
LOWcms/forms/wizards.py165 'placeholder': placeholder,CODE
LOWcms/test_utils/project/placeholderapp/models.py40 return get_placeholder_from_slot(self.placeholders, "placeholder")CODE
LOWcms/test_utils/project/templates/simple.html9{% placeholder "placeholder" %}CODE
LOW…s/test_utils/project/templates/integration/simple.html9{% placeholder "placeholder" %}CODE
LOW…t_utils/project/pluginapp/plugins/multicolumn/forms.py29 exclude = ('page', 'position', 'placeholder', 'language', 'plugin_type')CODE
LOW…roject/pluginapp/plugins/manytomany_rel/cms_plugins.py25 'placeholder': placeholder})CODE
LOW…roject/pluginapp/plugins/manytomany_rel/cms_plugins.py48 'placeholder': placeholder})CODE
LOW…est_utils/project/pluginapp/plugins/multiwrap/forms.py29 exclude = ('page', 'position', 'placeholder', 'language', 'plugin_type')CODE
LOW⚡cms/signals/log_entries.py41 'placeholder_kwarg': 'placeholder'CODE
LOW⚡cms/signals/log_entries.py46 'placeholder_kwarg': 'placeholder'CODE
LOW⚡cms/signals/log_entries.py56 'placeholder_kwarg': 'placeholder'CODE
LOWcms/signals/log_entries.py81 'placeholder_kwarg': 'placeholder'CODE
LOWcms/toolbar/toolbar.py292 plugin = self.clipboard.get_plugins().select_related('placeholder')[0]CODE
LOWcms/toolbar/utils.py37 'type': 'placeholder',CODE
LOWcms/tests/test_admin.py57 normal_guy = get_user_model().objects.create_user(USERNAME, "test@test.com", "test@test.com")CODE
LOWcms/tests/test_admin.py59 normal_guy = get_user_model().objects.create_user(USERNAME, "test@test.com", USERNAME)CODE
LOWcms/tests/test_admin.py692 self.client.login(username="test@test.com", password="test@test.com")CODE
LOW⚡cms/tests/test_plugins.py1762 self.assertEqual(out_context["placeholder"], 2)CODE
LOW⚡cms/tests/test_mail.py72 ["user@example.com"],CODE
LOW⚡cms/tests/test_mail.py80 self.assertEqual(message.to, ["user@example.com"])CODE
LOW⚡cms/tests/test_placeholder.py644 output = self.render_template_obj(template, {"placeholder": placeholder}, request)CODE
LOW⚡cms/tests/test_placeholder.py651 output = self.render_template_obj(template, {"placeholder": placeholder}, request)CODE
LOW⚡cms/tests/test_placeholder.py661 output = self.render_template_obj(template, {"placeholder": placeholder, "language": "en"}, request)CODE
LOW⚡cms/tests/test_placeholder.py666 output = self.render_template_obj(template, {"placeholder": placeholder, "language": "de"}, request)CODE
LOWcms/tests/test_placeholder.py1807 placeholder = Placeholder.objects.create(slot="placeholder")CODE
LOWcms/tests/test_placeholder_admin.py428 ph_en = page.get_placeholders(lang).get(slot="placeholder")CODE
LOWcms/tests/test_page_admin.py1946 "placeholder": source_placeholder,CODE
LOWcms/tests/test_page_admin.py1975 "placeholder": source_placeholder,CODE
LOWcms/tests/test_placeholder_operation_signals.py83 self.assertEqual(call_kwargs['placeholder'], self._placeholder_1)CODE
LOWcms/tests/test_placeholder_operation_signals.py119 self.assertEqual(post_call_kwargs['placeholder'], self._placeholder_1)CODE
LOWcms/tests/test_placeholder_operation_signals.py148 self.assertEqual(call_kwargs['placeholder'], self._placeholder_1)CODE
LOWcms/tests/test_placeholder_operation_signals.py176 self.assertEqual(post_call_kwargs['placeholder'], self._placeholder_1)CODE
LOWcms/tests/test_placeholder_operation_signals.py201 self.assertEqual(call_kwargs['placeholder'], self._placeholder_1)CODE
LOWcms/tests/test_placeholder_operation_signals.py228 self.assertEqual(post_call_kwargs['placeholder'], self._placeholder_1)CODE
LOWcms/tests/test_placeholder_operation_signals.py666 self.assertEqual(call_kwargs['placeholder'], self._placeholder_1)CODE
LOWcms/tests/test_placeholder_operation_signals.py691 self.assertEqual(post_call_kwargs['placeholder'], self._placeholder_1)CODE
LOWcms/tests/test_menu.py2061 Department of Lorem IpsumSTRING
LOWcms/tests/test_permmod.py155 'body': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa, repellendus, 'CODE
LOWcms/tests/test_permmod.py155 'body': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa, repellendus, 'CODE
LOW⚡cms/tests/test_templatetags.py155 template, {"placeholder": placeholder, "user": self.get_superuser()}, request=requestSTRING
LOW⚡cms/tests/test_templatetags.py165 {"placeholder": placeholder, "user": self.get_staff_user_with_no_permissions()},STRING
LOWcms/tests/test_placeholder_app_admin.py72 placeholderconf = {'placeholder': {CODE
LOWcms/tests/frontend/unit/cms.structureboard.test.js2296 new FakePlugin('cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' }),CODE
LOWcms/tests/frontend/unit/cms.structureboard.test.js2302 ['cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' }],CODE
LOWcms/tests/frontend/unit/cms.structureboard.test.js2424 new FakePlugin('cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' }),CODE
LOWcms/tests/frontend/unit/cms.structureboard.test.js2640 new FakePlugin('cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' })CODE
LOWcms/tests/frontend/unit/cms.plugins.test.js146 type: 'placeholder',CODE
LOWcms/tests/frontend/unit/cms.plugins.test.js234 type: 'placeholder',CODE
LOWcms/tests/frontend/unit/cms.plugins.test.js308 type: 'placeholder',CODE
LOW⚡cms/tests/frontend/unit/cms.plugins.test.js332 type: 'placeholder',CODE
LOWcms/tests/frontend/unit/cms.plugins.test.js1152 type: 'placeholder',CODE
19 more matches not shown…
Decorative Section Separators19 hits · 74 pts
SeverityFileLineSnippetContext
MEDIUMcms/api.py73# ===============================================================================COMMENT
MEDIUMcms/api.py75# ===============================================================================COMMENT
MEDIUMcms/api.py141# ===============================================================================COMMENT
MEDIUMcms/api.py143# ===============================================================================COMMENT
MEDIUM⚡cms/utils/mptree.py774# ======================================================================COMMENT
MEDIUM⚡cms/utils/mptree.py776# ======================================================================COMMENT
MEDIUM⚡cms/utils/mptree.py782# ----------------------------------------------------------------------COMMENT
MEDIUM⚡cms/utils/mptree.py784# ----------------------------------------------------------------------COMMENT
MEDIUMcms/utils/mptree.py799# ----------------------------------------------------------------------COMMENT
MEDIUMcms/utils/mptree.py801# ----------------------------------------------------------------------COMMENT
MEDIUMcms/utils/mptree.py826# ----------------------------------------------------------------------COMMENT
MEDIUMcms/utils/mptree.py828# ----------------------------------------------------------------------COMMENT
MEDIUM⚡cms/utils/mptree.py840# ----------------------------------------------------------------------COMMENT
MEDIUM⚡cms/utils/mptree.py842# ----------------------------------------------------------------------COMMENT
MEDIUM⚡cms/utils/mptree.py852# ----------------------------------------------------------------------COMMENT
MEDIUM⚡cms/utils/mptree.py854# ----------------------------------------------------------------------COMMENT
MEDIUM⚡cms/utils/mptree.py870# ----------------------------------------------------------------------COMMENT
MEDIUM⚡cms/utils/mptree.py872# ----------------------------------------------------------------------COMMENT
MEDIUM⚡cms/utils/mptree.py878# ======================================================================COMMENT
Deep Nesting65 hits · 62 pts
SeverityFileLineSnippetContext
LOWcms/plugin_pool.py117CODE
LOWcms/app_registration.py177CODE
LOWcms/plugin_base.py34CODE
LOWcms/api.py78CODE
LOWcms/api.py437CODE
LOWcms/cms_toolbars.py405CODE
LOWcms/cms_toolbars.py507CODE
LOWcms/cms_toolbars.py598CODE
LOWcms/appresolver.py75CODE
LOWcms/cms_menus.py358CODE
LOWcms/views.py71CODE
LOWcms/views.py358CODE
LOWcms/templatetags/cms_tags.py60CODE
LOWcms/templatetags/cms_tags.py157CODE
LOWcms/templatetags/cms_tags.py252CODE
LOWcms/templatetags/cms_tags.py526CODE
LOWcms/templatetags/cms_tags.py638CODE
LOWcms/toolbar/toolbar.py153CODE
LOWcms/toolbar/toolbar.py225CODE
LOWcms/toolbar/toolbar.py489CODE
LOWcms/tests/test_scaling.py498CODE
LOWcms/tests/test_plugins.py1459CODE
LOWcms/tests/test_wizards.py730CODE
LOWcms/tests/test_page.py743CODE
LOWcms/tests/test_page_admin.py1771CODE
LOWcms/tests/test_po.py17CODE
LOWcms/tests/test_nested_plugins.py493CODE
LOWcms/tests/test_nested_plugins.py692CODE
LOWcms/tests/test_menu.py149CODE
LOWcms/admin/forms.py134CODE
LOWcms/admin/forms.py800CODE
LOWcms/admin/forms.py849CODE
LOWcms/admin/pageadmin.py101CODE
LOWcms/admin/pageadmin.py106CODE
LOWcms/admin/utils.py850CODE
LOWcms/admin/utils.py1114CODE
LOWcms/management/commands/startcmsproject.py120CODE
LOWcms/management/commands/startcmsproject.py214CODE
LOWcms/management/commands/startcmsproject.py250CODE
LOWcms/management/commands/startcmsproject.py452CODE
LOWcms/management/commands/startcmsproject.py694CODE
LOWcms/management/commands/startcmsproject.py958CODE
LOWcms/management/commands/subcommands/list.py104CODE
LOW…gement/commands/subcommands/delete_orphaned_plugins.py56CODE
LOWcms/management/commands/subcommands/copy.py54CODE
LOWcms/utils/placeholder.py207CODE
LOWcms/utils/plugins.py418CODE
LOWcms/utils/check.py197CODE
LOWcms/utils/check.py309CODE
LOWcms/utils/check.py380CODE
LOWcms/utils/check.py433CODE
LOWcms/utils/conf.py204CODE
LOWcms/utils/permissions.py160CODE
LOWcms/models/permissionmodels.py244CODE
LOWcms/models/permissionmodels.py267CODE
LOWcms/models/placeholdermodel.py276CODE
LOWcms/models/placeholdermodel.py390CODE
LOWcms/models/pagemodel.py313CODE
LOWcms/models/pagemodel.py880CODE
LOWcms/models/managers.py83CODE
5 more matches not shown…
Over-Commented Block46 hits · 44 pts
SeverityFileLineSnippetContext
LOWpyproject.toml61djangocms = "cms.management.djangocms:execute_from_command_line"COMMENT
LOWplaywright.config.js41COMMENT
LOWplaywright.config.js61 /* Run your local dev server before starting the tests */COMMENT
LOWdocs/requirements.txt1#COMMENT
LOWdocs/requirements.txt21black==26.5.1COMMENT
LOWdocs/requirements.txt41 # -r requirements.inCOMMENT
LOWdocs/requirements.txt61 # via django-cmsCOMMENT
LOWdocs/requirements.txt81imagesize==2.0.0COMMENT
LOWdocs/requirements.txt101pip-tools==7.5.3COMMENT
LOWdocs/requirements.txt121pytokens==0.4.1COMMENT
LOWdocs/requirements.txt141 # -r requirements.inCOMMENT
LOWdocs/requirements.txt201# pipCOMMENT
LOWdocs/conf.py1#COMMENT
LOWdocs/conf.py121# List of patterns, relative to source directory, that match files andCOMMENT
LOWdocs/conf.py181# Sphinx are currently 'default' and 'sphinxdoc'.COMMENT
LOWdocs/conf.py221 "custom.css",COMMENT
LOWdocs/conf.py241COMMENT
LOWdocs/conf.py281COMMENT
LOWcms/plugin_base.py261 require_parent = FalseCOMMENT
LOWcms/cache/__init__.py41COMMENT
LOWcms/tests/test_plugins.py501 # - columnsCOMMENT
LOWcms/tests/test_placeholder.py241 def test_inter_placeholder_nested_plugin_move(self):COMMENT
LOWcms/tests/test_placeholder_admin.py461 content_type.pk,COMMENT
LOWcms/tests/test_placeholder_admin.py521 # 5. SELECT "cms_pagecontent"."id", "cms_pagecontent"."language", "cms_pagecontent"."title", "cms_pagecontent"."COMMENT
LOWcms/tests/test_menu.py461 # get all page contentsCOMMENT
LOWcms/tests/test_helpers.py21COMMENT
LOWcms/tests/frontend/unit/setup.js41COMMENT
LOWcms/tests/frontend/unit/helpers/mock-ajax.js41// Event 'readystatechange' is should be a simple event.COMMENT
LOWcms/tests/frontend/integration/pageTypes.js41// this.click('.cms-toolbar-item-navigation > li + li > a');COMMENT
LOWcms/tests/frontend/integration/pageTypes.js61// .waitForSelector('.cms-ready', function() {COMMENT
LOWcms/tests/frontend/integration/pagetree.js381// .withFrame(0, function() {COMMENT
LOWcms/tests/frontend/integration/pagetree.js1401 // ])COMMENT
LOWcms/admin/settingsadmin.py121 return HttpResponse(request.toolbar.render())COMMENT
LOWcms/admin/forms.py1221 # user PKs in limit_choices_to in the query string of the popup we'reCOMMENT
LOWcms/utils/mptree.py781#COMMENT
LOWcms/utils/mptree.py801# ----------------------------------------------------------------------COMMENT
LOWcms/utils/mptree.py821# Fractional key invariant: for any two sibling keys A < B there is always a keyCOMMENT
LOWcms/utils/mptree.py841# GainsCOMMENT
LOWcms/utils/mptree.py861# in the SEP encoding. After this, hot-swapping BACK to treebeard is noCOMMENT
LOWcms/models/placeholdermodel.py541 # changed the absolute — and partly negative — intermediate values without affecting thatCOMMENT
LOWcms/models/pluginmodel.py121COMMENT
LOWcms/sitemaps/cms_sitemap.py61 - Not login_requiredCOMMENT
LOWcms/sitemaps/cms_sitemap.py81 #COMMENT
LOWcms/static/cms/js/admin/usersettings.js1// Loaded by templates/admin/cms/usersettings/change_form.html, which rendersCOMMENT
LOWcms/static/cms/js/libs/jstree/jstree.grid.min.js741 // if we are not first, and our previous peer (one before us) is closed, we go right after the previCOMMENT
LOW.github/requirements/build.txt1# Hash-pinned build tooling for the PyPI/TestPyPI publish workflows.COMMENT
Unused Imports43 hits · 42 pts
SeverityFileLineSnippetContext
LOWdocs/django_settings.py1CODE
LOWdocs/conf.py168CODE
LOWdocs/conf.py304CODE
LOWcms/plugin_base.py24CODE
LOWcms/forms/validators.py14CODE
LOWcms/cache/page.py1CODE
LOWcms/test_utils/project/brokenpluginapp/cms_plugins.py1CODE
LOWcms/signals/__init__.py17CODE
LOWcms/toolbar/utils.py1CODE
LOWcms/tests/test_plugins.py5CODE
LOWcms/tests/test_plugins.py1463CODE
LOWcms/admin/__init__.py1CODE
LOWcms/admin/__init__.py2CODE
LOWcms/admin/__init__.py3CODE
LOWcms/admin/__init__.py4CODE
LOWcms/admin/__init__.py5CODE
LOWcms/admin/pageadmin.py1CODE
LOWcms/models/__init__.py3CODE
LOWcms/models/__init__.py4CODE
LOWcms/models/__init__.py5CODE
LOWcms/models/__init__.py6CODE
LOWcms/models/__init__.py7CODE
LOWcms/models/__init__.py8CODE
LOWcms/models/__init__.py9CODE
LOWcms/models/__init__.py10CODE
LOWcms/models/__init__.py11CODE
LOWcms/models/__init__.py13CODE
LOWcms/models/pluginmodel.py1CODE
LOWcms/models/pluginmodel.py3CODE
LOWcms/models/pluginmodel.py6CODE
LOWcms/models/pluginmodel.py20CODE
LOWcms/extensions/__init__.py1CODE
LOWcms/extensions/__init__.py1CODE
LOWcms/extensions/__init__.py2CODE
LOWcms/extensions/__init__.py3CODE
LOWcms/extensions/__init__.py3CODE
LOWcms/sitemaps/__init__.py1CODE
LOWcms/wizards/helpers.py5CODE
LOWcms/wizards/helpers.py5CODE
LOWcms/wizards/wizard_pool.py5CODE
LOWcms/wizards/wizard_pool.py5CODE
LOWmenus/base.py2CODE
LOWmenus/templatetags/menu_tags.py7CODE
Docstring Block Structure8 hits · 40 pts
SeverityFileLineSnippetContext
HIGHcms/plugin_base.py535 Renders the close frame for a CMS plugin in the Django admin interface. This method is used to send inSTRING
HIGHcms/utils/plugins.py36 Get a list of plugins for a placeholder in a specified template. Respects the placeholder's cache. :param requSTRING
HIGHcms/utils/plugins.py498 Checks if the global maximum limit for plugins in a placeholder has been reached. If not then it checks if it hSTRING
HIGHmenus/utils.py16 Mark the descendants of each node in a list. Args: nodes (list): A list of nodes. Returns: STRING
HIGHmenus/utils.py105 Decorator function that sets the language changer before calling the wrapped function. Args: STRING
HIGHmenus/utils.py151 Initializer for the class. Args: request: The request object. Attributes: STRING
HIGHmenus/utils.py219 Get the path of a page for a specific language. Args: self (object): The object containingSTRING
HIGHmenus/utils.py276 Call the function with the given language parameter. Args: lang (str): The language parameSTRING
Cross-Language Confusion5 hits · 25 pts
SeverityFileLineSnippetContext
HIGHcms/plugin_rendering.py274 context.push()CODE
HIGHcms/templatetags/cms_tags.py515 context.push()CODE
HIGHcms/templatetags/cms_tags.py807 context.push()CODE
HIGHcms/templatetags/cms_tags.py859 context.push()CODE
HIGHcms/management/commands/subcommands/uninstall.py13 help_string = 'Uninstalls (sets to null) specified apphooks for all pages'CODE
Cross-File Repetition4 hits · 20 pts
SeverityFileLineSnippetContext
HIGH…est_utils/project/second_cms_urls_for_apphook_tests.py0if there are some application urls, add special resolver, so we will have standard reverse support.STRING
HIGH…test_utils/project/third_cms_urls_for_apphook_tests.py0if there are some application urls, add special resolver, so we will have standard reverse support.STRING
HIGH…est_utils/project/fourth_cms_urls_for_apphook_tests.py0if there are some application urls, add special resolver, so we will have standard reverse support.STRING
HIGHcms/test_utils/project/cms_urls_for_apphook_tests.py0if there are some application urls, add special resolver, so we will have standard reverse support.STRING
Excessive Try-Catch Wrapping16 hits · 18 pts
SeverityFileLineSnippetContext
LOWtestserver.py45 except Exception:CODE
LOWtestserver.py83 except Exception as e:CODE
LOWcms/app_registration.py198 except Exception: # NOQACODE
LOWcms/plugin_rendering.py302 except Exception as e:CODE
LOWcms/plugin_rendering.py537 except Exception:CODE
LOWcms/app_base.py151 except Exception:CODE
LOW⚡cms/cache/permissions.py29 except Exception:CODE
LOWcms/test_utils/util/grouper.py7 except Exception:CODE
LOWcms/toolbar/utils.py195 except Exception:CODE
LOWcms/tests/test_templates.py47 except Exception as e:CODE
MEDIUMcms/tests/test_templates.py48 print(f"An error occurred: {e}")CODE
LOWcms/management/commands/subcommands/copy.py64 except Exception:CODE
LOWcms/management/commands/subcommands/copy.py146 except Exception:CODE
LOWcms/management/commands/subcommands/copy.py150 except Exception:CODE
MEDIUMcms/management/commands/subcommands/copy.py143def handle(self, *args, **options):CODE
LOWcms/utils/apphook_reload.py103 except Exception as e:CODE
Redundant / Tautological Comments10 hits · 15 pts
SeverityFileLineSnippetContext
LOWcms/plugin_rendering.py379 # Check if page, if so delegate to render_page_placeholderCOMMENT
LOWcms/cms_toolbars.py581 # Check if the user has permissions to change at least one pageCOMMENT
LOWcms/views.py212 # Check if the page has a redirect url defined for this language.COMMENT
LOW⚡cms/tests/test_plugins.py1267 # Set CMS_PLACEHOLDER_CONF to restrict child_classes to a non-existent pluginCOMMENT
LOWcms/admin/placeholderadmin.py645 # Check if the user can copy plugins from source placeholder toCOMMENT
LOWcms/admin/pageadmin.py363 # Check if one of the affected pages either from the old homepageCOMMENT
LOWcms/utils/placeholder.py227 # Check if it quacks like a template object, if notCOMMENT
LOWcms/utils/plugins.py221 if plugin_class.cache_child_classes: # Check if child classes should be cachedCODE
LOWcms/models/placeholdermodel.py220 # Check if the GenericForeignKey is cached by looking for the _source_cache attributeCOMMENT
LOWcms/models/pagemodel.py949 # Check if the new path exists for this language on another page on the same siteCOMMENT
Modern Structural Boilerplate11 hits · 11 pts
SeverityFileLineSnippetContext
LOWcms/plugin_rendering.py42logger = logging.getLogger(__name__)CODE
LOWcms/cache/page.py206def set_xframe_cache(page: Page, xframe_options: int) -> None:CODE
LOWcms/signals/pagecontent.py12logger = logging.getLogger(__name__)CODE
LOWcms/signals/apphook.py10logger = logging.getLogger(__name__)CODE
LOWcms/tests/test_menu_page_viewperm_staff.py6__all__ = [CODE
LOWcms/tests/test_menu_page_viewperm.py21__all__ = ["ViewPermissionTreeBugTests", "ViewPermissionComplexMenuAllNodesTests"]CODE
LOWcms/admin/utils.py1114 def update_labels(self, fields: list[str]) -> None:CODE
LOWcms/utils/plugins.py22logger = logging.getLogger(__name__)CODE
LOWcms/utils/conf.py14__all__ = [CODE
LOWcms/utils/compat/dj.py5__all__ = ['is_installed', 'installed_apps']CODE
LOWcms/extensions/__init__.py5__all__ = [CODE
AI Slop Vocabulary5 hits · 8 pts
SeverityFileLineSnippetContext
LOWcms/tests/test_placeholder.py159 # Should not raise TemplateSyntaxError, just return empty listCOMMENT
LOWcms/tests/test_placeholder.py175 # Should not raise TemplateDoesNotExist, just return empty listCOMMENT
LOW⚡cms/utils/page_permissions.py57 # just return grant all markCOMMENT
LOWcms/sitemaps/cms_sitemap.py89 # included, simply create a new class inheriting from this one, andCOMMENT
LOWmenus/menu_pool.py200 # just set the value directly.COMMENT
AI Structural Patterns9 hits · 8 pts
SeverityFileLineSnippetContext
LOWcms/api.py147CODE
LOWcms/api.py314CODE
LOWcms/api.py494CODE
LOWcms/api.py553CODE
LOWcms/toolbar/items.py226CODE
LOWcms/toolbar/items.py472CODE
LOWcms/tests/test_placeholder_checks.py139CODE
LOWcms/tests/test_page_admin.py141CODE
LOWcms/tests/test_placeholder_app_admin.py51CODE
Overly Generic Function Names2 hits · 1 pts
SeverityFileLineSnippetContext
LOWcms/api.py23 def my_function():STRING
LOWcms/api.py35 def my_function():STRING