Repository Analysis

django-cms/django-cms

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

15.3 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of django-cms/django-cms, a Python project with 10,650 GitHub stars. SynthScan v2.0 examined 143,840 lines of code across 817 source files, recording 1730 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 15.3 places this repository in the Moderate 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).

15.3
Adjusted Score
15.3
Raw Score
100%
Time Factor
2026-07-13
Last Push
10.7K
Stars
Python
Language
143.8K
Lines of Code
817
Files
1.7K
Pattern Hits
2026-07-14
Scan Date
0.09
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 53HIGH 17MEDIUM 48LOW 1612

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 1730 distinct pattern matches across 17 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 Identifiers1338 hits · 1151 pts
SeverityFileLineSnippetContext
LOWcms/plugin_pool.py43 def global_template_restrictions(self) -> bool:CODE
LOWcms/plugin_pool.py202 def get_all_plugins_for_model(self, model: type[models.Model]) -> list[type[CMSPluginBase]]:CODE
LOWcms/plugin_pool.py335 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.py117 def get_child_class_overrides(cls, slot: str, page: Optional[Page] = None, instance: Optional[CMSPlugin] = None)STRING
LOWcms/plugin_base.py759 def get_empty_change_form_text(cls, obj=None):CODE
LOWcms/plugin_base.py768 def get_child_class_overrides(cls, slot: str, page: Page | None = None, instance: CMSPlugin | None = None):CODE
LOWcms/plugin_base.py785 def get_child_plugin_candidates(cls, slot: str, page: Page | None = None) -> list:CODE
LOWcms/plugin_base.py880 def get_extra_placeholder_menu_items(cls, request: HttpRequest, placeholder: Placeholder) -> list["PluginMenuItem"] CODE
LOWcms/plugin_base.py890 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/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
LOWcms/plugin_rendering.py201 def get_rendered_plugins_cache(self, placeholder: Placeholder):CODE
LOWcms/plugin_rendering.py209 def get_rendered_placeholders(self) -> list[Placeholder]:CODE
LOWcms/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.py116 def render_object_editable_buttons(self):CODE
LOWcms/cms_toolbars.py157 def _has_placeholder_change_perm(self):CODE
LOWcms/cms_toolbars.py167 def _has_placeholder_view_perm(self):CODE
LOWcms/cms_toolbars.py454 def has_page_change_permission(self):CODE
LOWcms/cms_toolbars.py481 def get_on_delete_redirect_url(self):CODE
LOWcms/appresolver.py181def get_patterns_for_page_url(page_url):CODE
LOWcms/cms_menus.py27def get_visible_page_contents(request, page_contents: Iterable[PageContent], site) -> Iterable[PageContent]:CODE
LOWcms/cms_menus.py163 def get_menu_node_for_page_content(CODE
LOWcms/cms_menus.py505 def find_ancestors_and_remove_children(self, node, nodes):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.py340def render_placeholder_content(request, obj, context):CODE
LOWcms/templatetags/cms_tags.py145def _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
LOWcms/cache/permissions.py15def get_cache_permission_version_key():CODE
LOWcms/cache/permissions.py19def get_cache_permission_version():CODE
LOWcms/cache/permissions.py50def 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
LOWcms/test_utils/util/static_analysis.py9def _pyflakes_report_with_nopyflakes(self, messageClass, node, *args, **kwargs):CODE
1278 more matches not shown…
Hallucination Indicators53 hits · 540 pts
SeverityFileLineSnippetContext
CRITICALcms/plugin_pool.py20from cms.utils.helpers import normalize_nameCODE
CRITICALcms/api.py44from 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.js112 CMS.API.Helpers._getWindow.and.returnValue({CODE
CRITICALcms/tests/frontend/unit/cms.structureboard.test.js303 CMS.API.Helpers.setSettings.and.callFake(function(input) {CODE
CRITICALcms/tests/frontend/unit/cms.structureboard.test.js473 CMS.API.Helpers.setSettings.and.callFake(function(input) {CODE
CRITICALcms/tests/frontend/unit/cms.structureboard.test.js476 CMS.API.Helpers.setSettings.calls.reset();CODE
CRITICALcms/tests/frontend/unit/cms.structureboard.test.js2044 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.js95 CMS.API.Helpers._getWindow.and.returnValue({CODE
CRITICAL…/tests/frontend/unit/cms.pagetree.stickyheader.test.js109 CMS.API.Helpers._getWindow.and.returnValue({CODE
CRITICALcms/tests/frontend/unit/cms.plugins.test.js305 expect(CMS.Plugin.prototype._checkIfPasteAllowed.calls.count()).toEqual(1);CODE
CRITICALcms/tests/frontend/unit/cms.plugins.test.js312 expect(CMS.Plugin.prototype._checkIfPasteAllowed.calls.count()).toEqual(2);CODE
CRITICALcms/tests/frontend/unit/cms.plugins.test.js315 expect(CMS.Plugin.prototype._checkIfPasteAllowed.calls.count()).toEqual(2);CODE
CRITICALcms/tests/frontend/unit/cms.plugins.test.js609 CMS.API.Helpers.addEventListener.calls.argsFor(0)[1]({}, { instance: plugin.modal });CODE
CRITICALcms/tests/frontend/unit/cms.plugins.test.js690 CMS.API.Helpers.addEventListener.calls.argsFor(0)[1]({}, { instance: plugin.modal });CODE
CRITICALcms/tests/frontend/unit/cms.plugins.test.js1469 CMS.API.Helpers.addEventListener.calls.argsFor(0)[1]({}, { instance: plugin.modal });CODE
CRITICALcms/tests/frontend/unit/cms.clipboard.test.js257 CMS.API.Toolbar.openAjax.calls.mostRecent().args[0].callback();CODE
CRITICALcms/tests/frontend/unit/cms.toolbar.test.js99 CMS.Toolbar.prototype._initialStates.and.callThrough();CODE
CRITICALcms/tests/frontend/unit/cms.toolbar.test.js100 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.js49 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.js910 window.top.CMS.API.Toolbar.showLoader();CODE
CRITICALcms/static/cms/js/modules/cms.pagetree.js919 window.top.CMS.API.Toolbar.hideLoader();CODE
CRITICALcms/static/cms/js/modules/cms.pagetree.js931 window.top.CMS.API.Toolbar.hideLoader();CODE
CRITICALmenus/menu_pool.py6from django.core.exceptions import ValidationErrorCODE
Self-Referential Comments42 hits · 142 pts
SeverityFileLineSnippetContext
MEDIUMdocs/conf.py5# This file is execfile()d with the current directory set to its containingCOMMENT
MEDIUMcms/tests/test_forms.py318 # Create a child under parent1 with slug "test"COMMENT
MEDIUMcms/tests/test_forms.py321 # Create a child under parent2 with the same slug "test" (this is allowed because they have different parents)COMMENT
MEDIUMcms/tests/test_forms.py241 # Create a basic page structureCOMMENT
MEDIUMcms/tests/test_forms.py349 # 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
MEDIUMcms/tests/test_log_entries.py63 # Create a pageCOMMENT
MEDIUMcms/tests/test_plugins.py1085 # Create a plugin that allows childrenCOMMENT
MEDIUMcms/tests/test_plugins.py1264 # Create a single plugin with no parentCOMMENT
MEDIUMcms/tests/test_plugins.py1625 # Create a pageCOMMENT
MEDIUMcms/tests/test_placeholder.py1641 # Create a single plugin as the first plugin of the target placeholderCOMMENT
MEDIUMcms/tests/test_page_admin.py1756 # Create a page with redirectCOMMENT
MEDIUMcms/tests/test_page_admin.py1785 # Create a page without redirectCOMMENT
MEDIUMcms/tests/test_page_admin.py3873 # Create a page permission row for the page which staff_user should NOTCOMMENT
MEDIUMcms/tests/test_views.py377 # 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
MEDIUMcms/tests/test_toolbar.py2727 # 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
MEDIUMcms/tests/test_apphook_reload_language_variants.py122 # Create a page without an apphook in EnglishCOMMENT
MEDIUMcms/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
MEDIUMcms/tests/test_apphook_reload_language_variants.py180 # Create a page without an apphookCOMMENT
MEDIUMcms/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
MEDIUMcms/tests/test_app_registration.py504 # Create a mock app with a contractCOMMENT
MEDIUMcms/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.py1066 # Create a page with an apphook attachedCOMMENT
MEDIUMcms/admin/placeholderadmin.py589 # 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 Data77 hits · 73 pts
SeverityFileLineSnippetContext
LOWcms/plugin_base.py55 "exclude": ("position", "placeholder", "language", "plugin_type", "path", "depth"),CODE
LOWcms/plugin_base.py383 context["placeholder"] = placeholderCODE
LOWcms/plugin_base.py637 "placeholder": pl,CODE
LOWcms/constants.py71PLACEHOLDER_TOOLBAR_JS = _get_toolbar_js("placeholder")CODE
LOWcms/plugin_rendering.py57 "placeholder",CODE
LOWcms/cms_menus.py422 * Department of Lorem IpsumSTRING
LOWcms/templatetags/cms_tags.py304 name = "placeholder"CODE
LOWcms/templatetags/cms_tags.py877 Argument("placeholder"),CODE
LOWcms/templatetags/cms_tags.py956register.tag("placeholder", Placeholder)CODE
LOWcms/forms/wizards.py163 '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
LOWcms/signals/log_entries.py41 'placeholder_kwarg': 'placeholder'CODE
LOWcms/signals/log_entries.py46 'placeholder_kwarg': 'placeholder'CODE
LOWcms/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.py677 self.client.login(username="test@test.com", password="test@test.com")CODE
LOWcms/tests/test_plugins.py1583 self.assertEqual(out_context["placeholder"], 2)CODE
LOWcms/tests/test_placeholder.py612 output = self.render_template_obj(template, {"placeholder": placeholder}, request)CODE
LOWcms/tests/test_placeholder.py619 output = self.render_template_obj(template, {"placeholder": placeholder}, request)CODE
LOWcms/tests/test_placeholder.py629 output = self.render_template_obj(template, {"placeholder": placeholder, "language": "en"}, request)CODE
LOWcms/tests/test_placeholder.py634 output = self.render_template_obj(template, {"placeholder": placeholder, "language": "de"}, request)CODE
LOWcms/tests/test_placeholder.py1775 placeholder = Placeholder.objects.create(slot="placeholder")CODE
LOWcms/tests/test_placeholder_admin.py397 ph_en = page.get_placeholders(lang).get(slot="placeholder")CODE
LOWcms/tests/test_page_admin.py1829 "placeholder": source_placeholder,CODE
LOWcms/tests/test_page_admin.py1858 "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.py1994 Department of Lorem IpsumSTRING
LOWcms/tests/test_permmod.py154 'body': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa, repellendus, 'CODE
LOWcms/tests/test_permmod.py154 'body': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa, repellendus, 'CODE
LOWcms/tests/test_templatetags.py150 template, {"placeholder": placeholder, "user": self.get_superuser()}, request=requestSTRING
LOWcms/tests/test_templatetags.py160 {"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.js2247 new FakePlugin('cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' }),CODE
LOWcms/tests/frontend/unit/cms.structureboard.test.js2253 ['cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' }],CODE
LOWcms/tests/frontend/unit/cms.structureboard.test.js2357 new FakePlugin('cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' }),CODE
LOWcms/tests/frontend/unit/cms.structureboard.test.js2569 new FakePlugin('cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' })CODE
LOWcms/tests/frontend/unit/cms.plugins.test.js122 type: 'placeholder',CODE
LOWcms/tests/frontend/unit/cms.plugins.test.js210 type: 'placeholder',CODE
LOWcms/tests/frontend/unit/cms.plugins.test.js284 type: 'placeholder',CODE
LOWcms/tests/frontend/unit/cms.plugins.test.js308 type: 'placeholder',CODE
LOWcms/tests/frontend/unit/cms.plugins.test.js1122 type: 'placeholder',CODE
LOWcms/admin/placeholderadmin.py319 real_queryset = plugin_class.get_render_queryset().select_related('parent', 'placeholder')CODE
LOWcms/admin/placeholderadmin.py412 'placeholder': plugin_data['placeholder_id'],CODE
17 more matches not shown…
Deep Nesting61 hits · 59 pts
SeverityFileLineSnippetContext
LOWcms/plugin_pool.py114CODE
LOWcms/app_registration.py177CODE
LOWcms/plugin_base.py33CODE
LOWcms/api.py77CODE
LOWcms/api.py416CODE
LOWcms/cms_toolbars.py406CODE
LOWcms/cms_toolbars.py508CODE
LOWcms/cms_toolbars.py599CODE
LOWcms/appresolver.py75CODE
LOWcms/cms_menus.py348CODE
LOWcms/views.py71CODE
LOWcms/views.py352CODE
LOWcms/templatetags/cms_tags.py151CODE
LOWcms/templatetags/cms_tags.py246CODE
LOWcms/templatetags/cms_tags.py520CODE
LOWcms/templatetags/cms_tags.py620CODE
LOWcms/toolbar/toolbar.py153CODE
LOWcms/toolbar/toolbar.py225CODE
LOWcms/toolbar/toolbar.py489CODE
LOWcms/tests/test_plugins.py1280CODE
LOWcms/tests/test_page.py721CODE
LOWcms/tests/test_page_admin.py1654CODE
LOWcms/tests/test_po.py17CODE
LOWcms/tests/test_nested_plugins.py493CODE
LOWcms/tests/test_nested_plugins.py692CODE
LOWcms/tests/test_menu.py147CODE
LOWcms/admin/forms.py128CODE
LOWcms/admin/forms.py804CODE
LOWcms/admin/forms.py853CODE
LOWcms/admin/pageadmin.py102CODE
LOWcms/admin/pageadmin.py107CODE
LOWcms/admin/utils.py818CODE
LOWcms/admin/utils.py1082CODE
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.py203CODE
LOWcms/utils/plugins.py408CODE
LOWcms/utils/check.py197CODE
LOWcms/utils/check.py309CODE
LOWcms/utils/check.py380CODE
LOWcms/utils/check.py433CODE
LOWcms/utils/conf.py204CODE
LOWcms/models/permissionmodels.py244CODE
LOWcms/models/permissionmodels.py267CODE
LOWcms/models/placeholdermodel.py276CODE
LOWcms/models/placeholdermodel.py390CODE
LOWcms/models/pagemodel.py750CODE
LOWcms/models/managers.py84CODE
LOWmenus/menu_pool.py27CODE
LOWmenus/utils.py49CODE
LOWmenus/utils.py264CODE
LOWmenus/templatetags/menu_tags.py53CODE
LOWmenus/templatetags/menu_tags.py134CODE
1 more matches not shown…
Unused Imports44 hits · 42 pts
SeverityFileLineSnippetContext
LOWdocs/django_settings.py1CODE
LOWdocs/conf.py160CODE
LOWdocs/conf.py296CODE
LOWcms/plugin_base.py23CODE
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.py1284CODE
LOWcms/tests/test_page_admin.py24CODE
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.py1CODE
LOWmenus/templatetags/menu_tags.py7CODE
Docstring Block Structure8 hits · 40 pts
SeverityFileLineSnippetContext
HIGHcms/plugin_base.py534 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.py488 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.py94 Decorator function that sets the language changer before calling the wrapped function. Args: STRING
HIGHmenus/utils.py140 Initializer for the class. Args: request: The request object. Attributes: STRING
HIGHmenus/utils.py208 Get the path of a page for a specific language. Args: self (object): The object containingSTRING
HIGHmenus/utils.py265 Call the function with the given language parameter. Args: lang (str): The language parameSTRING
Over-Commented Block41 hits · 38 pts
SeverityFileLineSnippetContext
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.txt61django-sekizai==4.1.0COMMENT
LOWdocs/requirements.txt81 # viaCOMMENT
LOWdocs/requirements.txt101 # wheelCOMMENT
LOWdocs/requirements.txt121 # viaCOMMENT
LOWdocs/requirements.txt141 # via beautifulsoup4COMMENT
LOWdocs/requirements.txt201# pipCOMMENT
LOWdocs/conf.py1#COMMENT
LOWdocs/conf.py121#today_fmt = '%B %d, %Y'COMMENT
LOWdocs/conf.py181# Add any paths that contain custom themes here, relative to this directory.COMMENT
LOWdocs/conf.py221# typographically correct entities.COMMENT
LOWdocs/conf.py241#html_show_sourcelink = TrueCOMMENT
LOWdocs/conf.py261#latex_font_size = '10pt'COMMENT
LOWdocs/conf.py281# Documents to append as an appendix to all manuals.COMMENT
LOWcms/plugin_base.py261COMMENT
LOWcms/forms/validators.py21def validate_url(value):COMMENT
LOWcms/cache/__init__.py41COMMENT
LOWcms/tests/test_plugins.py341 returned_3 = copy_plugins_to_placeholder([text_2], placeholder, "en", root_plugin=column_2) # ID 8COMMENT
LOWcms/tests/test_wizards.py661 # are cached. Clear this cache because installed apps changeCOMMENT
LOWcms/tests/test_placeholder.py241 # small number of plugins, between similarly size placeholders and a small number of plugins toCOMMENT
LOWcms/tests/test_placeholder_admin.py441 # 2. SELECT "django_content_type"."id", "django_content_type"."app_label", "django_content_type"."model" FROM "dCOMMENT
LOWcms/tests/test_placeholder_admin.py481 with CaptureQueriesContext(connection) as queries:COMMENT
LOWcms/tests/test_helpers.py21COMMENT
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.py1201COMMENT
LOWcms/admin/utils.py261 As a result, the change form can (but does not have to) contain both grouper model fields and content modelCOMMENT
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 # http://example.com/sub/sitemap.xmlCOMMENT
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
Cross-Language Confusion5 hits · 25 pts
SeverityFileLineSnippetContext
HIGHcms/plugin_rendering.py274 context.push()CODE
HIGHcms/templatetags/cms_tags.py509 context.push()CODE
HIGHcms/templatetags/cms_tags.py789 context.push()CODE
HIGHcms/templatetags/cms_tags.py841 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.py44 except Exception:CODE
LOWtestserver.py82 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
LOWcms/cache/permissions.py23 except Exception:CODE
LOWcms/test_utils/util/grouper.py7 except Exception:CODE
LOWcms/toolbar/utils.py194 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.py147 except Exception:CODE
LOWcms/management/commands/subcommands/copy.py151 except Exception:CODE
MEDIUMcms/management/commands/subcommands/copy.py144def 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.py582 # Check if the user has permissions to change at least one pageCOMMENT
LOWcms/views.py206 # Check if the page has a redirect url defined for this language.COMMENT
LOWcms/tests/test_plugins.py1088 # Set CMS_PLACEHOLDER_CONF to restrict child_classes to a non-existent pluginCOMMENT
LOWcms/admin/placeholderadmin.py615 # Check if the user can copy plugins from source placeholder toCOMMENT
LOWcms/admin/pageadmin.py350 # Check if one of the affected pages either from the old homepageCOMMENT
LOWcms/utils/placeholder.py223 # Check if it quacks like a template object, if notCOMMENT
LOWcms/utils/plugins.py220 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.py800 # Check if the new path exists for this language on another page on the same siteCOMMENT
Decorative Section Separators4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMcms/api.py72# ===============================================================================COMMENT
MEDIUMcms/api.py74# ===============================================================================COMMENT
MEDIUMcms/api.py122# ===============================================================================COMMENT
MEDIUMcms/api.py124# ===============================================================================COMMENT
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.py1082 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.py157 # Should not raise TemplateSyntaxError, just return empty listCOMMENT
LOWcms/tests/test_placeholder.py173 # Should not raise TemplateDoesNotExist, just return empty listCOMMENT
LOWcms/utils/page_permissions.py57 # just return grant all markCOMMENT
LOWcms/sitemaps/cms_sitemap.py88 # 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.py128CODE
LOWcms/api.py295CODE
LOWcms/api.py473CODE
LOWcms/api.py532CODE
LOWcms/toolbar/items.py226CODE
LOWcms/toolbar/items.py472CODE
LOWcms/tests/test_placeholder_checks.py102CODE
LOWcms/tests/test_page_admin.py142CODE
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