The easy-to-use and developer-friendly enterprise CMS powered by Django
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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1808 finding(s).
Are imports declared and package/API names verified? 180 finding(s).
Are wrappers, guards, and repeated structures necessary? 1715 finding(s).
Which changes need focused human review? 2073 finding(s).
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.
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.
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.
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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cms/plugin_pool.py | 43 | def global_template_restrictions(self) -> bool: | CODE |
| LOW | cms/plugin_pool.py | 205 | def get_all_plugins_for_model(self, model: type[models.Model]) -> list[type[CMSPluginBase]]: | CODE |
| LOW | cms/plugin_pool.py | 340 | def plugins_with_extra_placeholder_menu(self) -> list[type[CMSPluginBase]]: | CODE |
| LOW | cms/app_registration.py | 177 | def backwards_compatibility_config(): | CODE |
| LOW | cms/cms_config.py | 61 | def configure_toolbar_enabled_models(self, cms_config): | CODE |
| LOW | cms/plugin_base.py | 118 | def get_child_class_overrides(cls, slot: str, page: Optional[Page] = None, instance: Optional[CMSPlugin] = None) | STRING |
| LOW | cms/plugin_base.py | 763 | def get_empty_change_form_text(cls, obj=None): | CODE |
| LOW | cms/plugin_base.py | 772 | def get_child_class_overrides(cls, slot: str, page: Page | None = None, instance: CMSPlugin | None = None): | CODE |
| LOW | cms/plugin_base.py | 789 | def get_child_plugin_candidates(cls, slot: str, page: Page | None = None) -> list: | CODE |
| LOW | cms/plugin_base.py | 926 | def get_extra_placeholder_menu_items(cls, request: HttpRequest, placeholder: Placeholder) -> list["PluginMenuItem"] | CODE |
| LOW | cms/plugin_base.py | 936 | def get_extra_plugin_menu_items(cls, request: HttpRequest, plugin: CMSPlugin) -> list["PluginMenuItem"] | None: | CODE |
| LOW | cms/templates.py | 26 | def placeholder_plugin_menu_template(self): | CODE |
| LOW | cms/api.py | 112 | def _validate_path_uniqueness(page, path, language): | CODE |
| LOW | cms/plugin_rendering.py | 139 | def get_placeholder_plugin_menu(self, placeholder: Placeholder, page: Page | None = None): | CODE |
| LOW | cms/plugin_rendering.py | 148 | def get_placeholder_toolbar_js(self, placeholder, page: models.Model | None = None): | CODE |
| LOW⚡ | cms/plugin_rendering.py | 201 | def get_rendered_plugins_cache(self, placeholder: Placeholder): | CODE |
| LOW⚡ | cms/plugin_rendering.py | 209 | def get_rendered_placeholders(self) -> list[Placeholder]: | CODE |
| LOW⚡ | cms/plugin_rendering.py | 213 | def get_rendered_editable_placeholders(self) -> list[Placeholder]: | CODE |
| LOW | cms/plugin_rendering.py | 232 | def placeholder_cache_is_enabled(self): | CODE |
| LOW | cms/plugin_rendering.py | 355 | def get_editable_placeholder_context(self, placeholder: Placeholder, page: Page | None = None) -> dict: | CODE |
| LOW | cms/plugin_rendering.py | 583 | def _get_cached_placeholder_content(self, placeholder, language): | CODE |
| LOW | cms/plugin_rendering.py | 633 | def _preload_placeholders_for_page(self, page, language=None, slots=None, inherit=False): | CODE |
| LOW | cms/plugin_rendering.py | 773 | def get_editable_placeholder_context(self, placeholder, page=None): | STRING |
| LOW | cms/cms_toolbars.py | 115 | def render_object_editable_buttons(self): | CODE |
| LOW | cms/cms_toolbars.py | 156 | def _has_placeholder_change_perm(self): | CODE |
| LOW | cms/cms_toolbars.py | 166 | def _has_placeholder_view_perm(self): | CODE |
| LOW | cms/cms_toolbars.py | 453 | def has_page_change_permission(self): | CODE |
| LOW | cms/cms_toolbars.py | 480 | def get_on_delete_redirect_url(self): | CODE |
| LOW | cms/appresolver.py | 181 | def get_patterns_for_page_url(page_url): | CODE |
| LOW | cms/cms_menus.py | 28 | def get_visible_page_contents(request, page_contents: Iterable[PageContent], site) -> Iterable[PageContent]: | CODE |
| LOW | cms/cms_menus.py | 173 | def get_menu_node_for_page_content( | CODE |
| LOW | cms/cms_menus.py | 536 | def find_ancestors_and_remove_children(self, node, nodes, removed=None): | CODE |
| LOW | cms/plugin_processors.py | 4 | def plugin_meta_context_processor(instance, placeholder, context): | CODE |
| LOW | cms/plugin_processors.py | 20 | def mark_safe_plugin_processor(instance, placeholder, rendered_content, original_context): | CODE |
| LOW | cms/views.py | 346 | def render_placeholder_content(request, obj, context): | CODE |
| LOW | cms/templatetags/cms_tags.py | 151 | def _show_uncached_placeholder_by_id(context, *args, **kwargs): | CODE |
| LOW | cms/templatetags/cms_admin.py | 136 | def show_admin_menu_for_pages(context, descendants, depth=1): | CODE |
| LOW | cms/forms/utils.py | 28 | def get_page_choices_for_site(site, language): | CODE |
| LOW | cms/forms/utils.py | 62 | def update_site_and_page_choices(language=None): | CODE |
| LOW | cms/cache/placeholder.py | 28 | def _get_placeholder_cache_version_key(placeholder, lang, site_id): | CODE |
| LOW | cms/cache/placeholder.py | 53 | def _get_placeholder_cache_version(placeholder, lang, site_id): | CODE |
| LOW | cms/cache/placeholder.py | 71 | def _set_placeholder_cache_version(placeholder, lang, site_id, version, vary_on_list=None, duration=None): | CODE |
| LOW | cms/cache/placeholder.py | 88 | def _get_placeholder_cache_key(placeholder, lang, site_id, request, soft=False): | CODE |
| LOW | cms/cache/__init__.py | 37 | def invalidate_cms_page_cache(): | CODE |
| LOW | cms/cache/page.py | 75 | def _page_vary_headers_cache_key(request: HttpRequest) -> str: | CODE |
| LOW⚡ | cms/cache/permissions.py | 21 | def get_cache_permission_version_key(): | CODE |
| LOW⚡ | cms/cache/permissions.py | 25 | def get_cache_permission_version(): | CODE |
| LOW | cms/cache/permissions.py | 56 | def clear_user_permission_cache(user): | CODE |
| LOW | cms/test_utils/runners.py | 32 | def teardown_test_environment(self, **kwargs): | CODE |
| LOW | cms/test_utils/testcases.py | 221 | def get_staff_user_with_no_permissions(self): | CODE |
| LOW | cms/test_utils/testcases.py | 228 | def get_staff_user_with_std_permissions(self): | CODE |
| LOW | cms/test_utils/testcases.py | 268 | def get_new_page_data_dbfields(self, parent=None, site=None, | CODE |
| LOW | cms/test_utils/testcases.py | 282 | def get_pagedata_from_dbfields(self, page_data): | CODE |
| LOW | cms/test_utils/testcases.py | 479 | def load_template_from_string(self, template): | CODE |
| LOW | cms/test_utils/testcases.py | 501 | def get_permissions_test_page(self): | CODE |
| LOW | cms/test_utils/testcases.py | 546 | def get_page_delete_translation_uri(self, language, page): | CODE |
| LOW | cms/test_utils/testcases.py | 552 | def get_page_change_template_uri(self, language, page): | CODE |
| LOW | cms/test_utils/testcases.py | 640 | def get_clear_placeholder_url(self, placeholder, language=None): | CODE |
| LOW | cms/test_utils/testcases.py | 658 | def _add_plugin_to_placeholder(self, placeholder, plugin_type='LinkPlugin', language='en'): | CODE |
| LOW | cms/test_utils/util/context_managers.py | 180 | def override_placeholder_conf(CMS_PLACEHOLDER_CONF): | CODE |
| 1561 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | cms/plugin_pool.py | 20 | from cms.utils.helpers import normalize_name | CODE |
| CRITICAL | cms/api.py | 45 | from django.core.exceptions import FieldError, ValidationError | CODE |
| CRITICAL | cms/menu_bases.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | cms/views.py | 47 | from cms.utils.helpers import is_editable_model | CODE |
| CRITICAL | cms/middleware/toolbar.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | cms/forms/wizards.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | cms/forms/validators.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | cms/cache/placeholder.py | 25 | from cms.utils.helpers import get_header_name, get_timezone_name | CODE |
| CRITICAL | cms/cache/page.py | 24 | from cms.utils.helpers import get_timezone_name | CODE |
| CRITICAL | cms/test_utils/project/objectpermissionsapp/models.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | cms/tests/test_forms.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | cms/tests/test_page.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | cms/tests/test_helpers.py | 8 | from cms.utils.helpers import is_editable_model | CODE |
| CRITICAL | cms/tests/test_api.py | 8 | from django.core.exceptions import FieldError | CODE |
| CRITICAL | cms/tests/test_cache.py | 48 | from cms.utils.helpers import get_timezone_name | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.pagetree.test.js | 123 | CMS.API.Helpers._getWindow.and.returnValue({ | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.structureboard.test.js | 352 | CMS.API.Helpers.setSettings.and.callFake(function(input) { | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.structureboard.test.js | 522 | CMS.API.Helpers.setSettings.and.callFake(function(input) { | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.structureboard.test.js | 525 | CMS.API.Helpers.setSettings.calls.reset(); | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.structureboard.test.js | 2093 | CMS.API.Clipboard._isClipboardModalOpen.and.returnValue(true); | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.changetracker.test.js | 198 | CMS.ChangeTracker.prototype._trackChange.and.callThrough(); | CODE |
| CRITICAL | …/tests/frontend/unit/cms.pagetree.stickyheader.test.js | 94 | CMS.API.Helpers._getWindow.and.returnValue({ | CODE |
| CRITICAL | …/tests/frontend/unit/cms.pagetree.stickyheader.test.js | 108 | CMS.API.Helpers._getWindow.and.returnValue({ | CODE |
| CRITICAL⚡ | cms/tests/frontend/unit/cms.plugins.test.js | 329 | expect(CMS.Plugin.prototype._checkIfPasteAllowed.calls.count()).toEqual(1); | CODE |
| CRITICAL⚡ | cms/tests/frontend/unit/cms.plugins.test.js | 336 | expect(CMS.Plugin.prototype._checkIfPasteAllowed.calls.count()).toEqual(2); | CODE |
| CRITICAL⚡ | cms/tests/frontend/unit/cms.plugins.test.js | 339 | expect(CMS.Plugin.prototype._checkIfPasteAllowed.calls.count()).toEqual(2); | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.plugins.test.js | 635 | CMS.API.Helpers.addEventListener.calls.argsFor(0)[1]({}, { instance: plugin.modal }); | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.plugins.test.js | 717 | CMS.API.Helpers.addEventListener.calls.argsFor(0)[1]({}, { instance: plugin.modal }); | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.plugins.test.js | 1501 | CMS.API.Helpers.addEventListener.calls.argsFor(0)[1]({}, { instance: plugin.modal }); | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.clipboard.test.js | 265 | CMS.API.Toolbar.openAjax.calls.mostRecent().args[0].callback(); | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.toolbar.test.js | 136 | CMS.Toolbar.prototype._initialStates.and.callThrough(); | CODE |
| CRITICAL | cms/tests/frontend/unit/cms.toolbar.test.js | 137 | CMS.Toolbar.prototype._initialStates.calls.reset(); | CODE |
| CRITICAL | cms/tests/frontend/integration/dragndrop.js | 71 | CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0); | CODE |
| CRITICAL | cms/tests/frontend/integration/dragndrop.js | 159 | CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0); | CODE |
| CRITICAL | cms/tests/frontend/integration/dragndrop.js | 258 | CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0); | CODE |
| CRITICAL | cms/tests/frontend/integration/clipboard.js | 87 | CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0); | CODE |
| CRITICAL | cms/tests/frontend/integration/clipboard.js | 546 | CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0); | CODE |
| CRITICAL | cms/tests/frontend/integration/clipboard.js | 567 | CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0); | CODE |
| CRITICAL | cms/tests/frontend/integration/clipboard.js | 860 | CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0); | CODE |
| CRITICAL | cms/tests/frontend/integration/clipboard.js | 880 | CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0); | CODE |
| CRITICAL | cms/tests/frontend/integration/copy-from-language.js | 81 | CMS.API.StructureBoard.ui.sortables.nestedSortable('option', 'delay', 0); | CODE |
| CRITICAL | cms/admin/utils.py | 34 | from cms.utils.helpers import is_editable_model | CODE |
| CRITICAL | cms/admin/permissionadmin.py | 20 | from cms.utils.helpers import classproperty | CODE |
| CRITICAL | cms/utils/helpers.py | 17 | >>> from cms.utils.helpers import classproperty | STRING |
| CRITICAL | cms/static/cms/js/admin/actions.js | 9 | window.top.CMS.API.Sideframe.close(); | CODE |
| CRITICAL | cms/static/cms/js/admin/actions.js | 60 | window.top.CMS.API.Sideframe.close(); | CODE |
| CRITICAL | cms/static/cms/js/libs/jquery.min.js | 5 | return 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,t | CODE |
| CRITICAL | cms/static/cms/js/modules/cms.plugins.js | 336 | if (!CMS.API.StructureBoard.ui.container.hasClass('cms-structure-condensed')) { | CODE |
| CRITICAL | cms/static/cms/js/modules/cms.plugins.js | 346 | if (!CMS.API.StructureBoard.ui.container.hasClass('cms-structure-condensed')) { | CODE |
| CRITICAL | cms/static/cms/js/modules/cms.pagetree.js | 923 | window.top.CMS.API.Toolbar.showLoader(); | CODE |
| CRITICAL | cms/static/cms/js/modules/cms.pagetree.js | 932 | window.top.CMS.API.Toolbar.hideLoader(); | CODE |
| CRITICAL | cms/static/cms/js/modules/cms.pagetree.js | 944 | window.top.CMS.API.Toolbar.hideLoader(); | CODE |
| CRITICAL | menus/menu_pool.py | 8 | from django.core.exceptions import ValidationError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | testserver.py | 45 | except Exception: | CODE |
| HIGH | cms/plugin_pool.py | 164 | except TemplateSyntaxError: | CODE |
| HIGH | cms/page_rendering.py | 73 | except Resolver404: | CODE |
| HIGH | cms/plugin_base.py | 758 | except KeyError: | CODE |
| HIGH | cms/apphook_pool.py | 60 | except AppAlreadyRegistered: | CODE |
| HIGH | cms/appresolver.py | 45 | except Resolver404: | CODE |
| HIGH | cms/appresolver.py | 48 | except Page.DoesNotExist: | CODE |
| HIGH | cms/appresolver.py | 89 | except Resolver404: | CODE |
| HIGH | cms/templatetags/cms_tags.py | 100 | except MAIL_DELIVERY_ERRORS: | CODE |
| HIGH | cms/test_utils/testcases.py | 320 | except ObjectDoesNotExist: | CODE |
| HIGH | cms/test_utils/testcases.py | 74 | except: # noqa | CODE |
| HIGH | cms/test_utils/project/extensionapp/cms_toolbars.py | 38 | except NoReverseMatch: | CODE |
| HIGH | cms/test_utils/project/extensionapp/cms_toolbars.py | 69 | except NoReverseMatch: | CODE |
| HIGH | cms/test_utils/project/sampleapp/cms_menus.py | 26 | except NoReverseMatch: | CODE |
| HIGH | cms/test_utils/project/sampleapp/cms_menus.py | 77 | except NoReverseMatch: | CODE |
| HIGH | cms/toolbar/utils.py | 324 | except KeyError: | CODE |
| HIGH | cms/tests/test_views.py | 63 | except IndexError: | CODE |
| HIGH | cms/tests/test_cache.py | 123 | except PluginAlreadyRegistered: | CODE |
| HIGH | cms/tests/test_cache.py | 239 | except PluginAlreadyRegistered: | CODE |
| HIGH | cms/tests/test_cache.py | 318 | except PluginAlreadyRegistered: | CODE |
| HIGH | cms/tests/test_cache.py | 322 | except PluginAlreadyRegistered: | CODE |
| HIGH | cms/tests/test_cache.py | 478 | except PluginAlreadyRegistered: | CODE |
| HIGH | cms/admin/settingsadmin.py | 117 | except Resolver404: | CODE |
| HIGH | cms/admin/forms.py | 115 | except (IndexError, AttributeError): | CODE |
| HIGH | cms/admin/forms.py | 839 | except ObjectDoesNotExist: | CODE |
| HIGH | cms/utils/conf.py | 334 | except (TypeError, ValueError): | CODE |
| HIGH | cms/utils/page.py | 103 | except NoReverseMatch: | CODE |
| HIGH | cms/models/permissionmodels.py | 22 | except KeyError: | CODE |
| HIGH | cms/models/placeholdermodel.py | 269 | except LanguageError: | CODE |
| HIGH | cms/models/pluginmodel.py | 309 | except AttributeError: | CODE |
| HIGH | cms/models/managers.py | 109 | except self.model.DoesNotExist: | CODE |
| HIGH | cms/extensions/admin.py | 60 | except self.model.DoesNotExist: | CODE |
| HIGH | cms/extensions/admin.py | 107 | except self.model.DoesNotExist: | CODE |
| HIGH | cms/extensions/extension_pool.py | 51 | except KeyError: | CODE |
| HIGH | menus/utils.py | 318 | except NoReverseMatch: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/conf.py | 5 | # This file is execfile()d with the current directory set to its containing | COMMENT |
| MEDIUM⚡ | cms/tests/test_forms.py | 436 | # Create a child under parent1 with slug "test" | COMMENT |
| MEDIUM⚡ | cms/tests/test_forms.py | 439 | # Create a child under parent2 with the same slug "test" (this is allowed because they have different parents) | COMMENT |
| MEDIUM | cms/tests/test_forms.py | 242 | # Create a basic page structure | COMMENT |
| MEDIUM | cms/tests/test_forms.py | 487 | # Create a child under parent with the same slug | COMMENT |
| MEDIUM | cms/tests/test_admin.py | 229 | # Create a page in default language ("fr") | COMMENT |
| MEDIUM | cms/tests/test_plugin_renderers.py | 353 | # Create a CMS page placeholder as source model cms.pagecontent | COMMENT |
| MEDIUM | cms/tests/test_plugin_renderers.py | 401 | # Create an Example1 instance | COMMENT |
| MEDIUM⚡ | cms/tests/test_log_entries.py | 63 | # Create a page | COMMENT |
| MEDIUM⚡ | cms/tests/test_plugins.py | 1264 | # Create a plugin that allows children | COMMENT |
| MEDIUM⚡ | cms/tests/test_plugins.py | 1443 | # Create a single plugin with no parent | COMMENT |
| MEDIUM | cms/tests/test_plugins.py | 1804 | # Create a page | COMMENT |
| MEDIUM | cms/tests/test_placeholder.py | 1673 | # Create a single plugin as the first plugin of the target placeholder | COMMENT |
| MEDIUM | cms/tests/test_page_admin.py | 1873 | # Create a page with redirect | COMMENT |
| MEDIUM | cms/tests/test_page_admin.py | 1902 | # Create a page without redirect | COMMENT |
| MEDIUM | cms/tests/test_page_admin.py | 4137 | # Create a page permission row for the page which staff_user should NOT | COMMENT |
| MEDIUM | cms/tests/test_views.py | 404 | # Create a homepage with English and German versions | STRING |
| MEDIUM | cms/tests/test_multilingual.py | 45 | # Create a new page | COMMENT |
| MEDIUM | cms/tests/test_multilingual.py | 74 | # Create a different language using the edit admin page | COMMENT |
| MEDIUM | cms/tests/test_nested_plugins.py | 1223 | # Create an empty placeholder for language "en" | COMMENT |
| MEDIUM⚡ | cms/tests/test_toolbar.py | 2880 | # Create a QueryDict with test parameters | COMMENT |
| MEDIUM | cms/tests/test_apphook_reload_language_variants.py | 49 | # Create a page with an apphook in English | COMMENT |
| MEDIUM | cms/tests/test_apphook_reload_language_variants.py | 61 | # Create a new language variant via admin (simulating user action) | COMMENT |
| MEDIUM | cms/tests/test_apphook_reload_language_variants.py | 93 | # Create a page with an apphook in English | COMMENT |
| MEDIUM | cms/tests/test_apphook_reload_language_variants.py | 105 | # Create a new language variant (German) | COMMENT |
| MEDIUM⚡ | cms/tests/test_apphook_reload_language_variants.py | 122 | # Create a page without an apphook in English | COMMENT |
| MEDIUM⚡ | cms/tests/test_apphook_reload_language_variants.py | 132 | # Create a new language variant (German) | COMMENT |
| MEDIUM | cms/tests/test_apphook_reload_language_variants.py | 151 | # Create a page with an apphook | COMMENT |
| MEDIUM | cms/tests/test_apphook_reload_language_variants.py | 163 | # Create a new language variant | COMMENT |
| MEDIUM⚡ | cms/tests/test_apphook_reload_language_variants.py | 180 | # Create a page without an apphook | COMMENT |
| MEDIUM⚡ | cms/tests/test_apphook_reload_language_variants.py | 190 | # Create a new language variant | COMMENT |
| MEDIUM | cms/tests/test_apphook_reload_language_variants.py | 208 | # Create a page with an apphook | COMMENT |
| MEDIUM⚡ | cms/tests/test_app_registration.py | 504 | # Create a mock app with a contract | COMMENT |
| MEDIUM⚡ | cms/tests/test_app_registration.py | 526 | # Create a mock app without a contract attribute | COMMENT |
| MEDIUM | cms/tests/test_cache.py | 423 | # Create a test page | COMMENT |
| MEDIUM | cms/tests/test_cache.py | 432 | # Create a request object | COMMENT |
| MEDIUM | cms/tests/test_cache.py | 514 | # Create a test page | COMMENT |
| MEDIUM | cms/tests/test_cache.py | 557 | # Create a test page | COMMENT |
| MEDIUM | cms/tests/test_cache.py | 566 | # Create a request object | COMMENT |
| MEDIUM | cms/tests/test_apphooks.py | 1112 | # Create a page with an apphook attached | COMMENT |
| MEDIUM | cms/admin/placeholderadmin.py | 619 | # Create a PlaceholderReference plugin which in turn | COMMENT |
| MEDIUM | cms/management/commands/startcmsproject.py | 1259 | # Create a random SECRET_KEY to put it in the main settings. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cms/plugin_base.py | 56 | "exclude": ("position", "placeholder", "language", "plugin_type", "path", "depth"), | CODE |
| LOW | cms/plugin_base.py | 384 | context["placeholder"] = placeholder | CODE |
| LOW | cms/plugin_base.py | 638 | "placeholder": pl, | CODE |
| LOW | cms/constants.py | 71 | PLACEHOLDER_TOOLBAR_JS = _get_toolbar_js("placeholder") | CODE |
| LOW | cms/plugin_rendering.py | 57 | "placeholder", | CODE |
| LOW | cms/cms_menus.py | 437 | * Department of Lorem Ipsum | STRING |
| LOW | cms/templatetags/cms_tags.py | 310 | name = "placeholder" | CODE |
| LOW | cms/templatetags/cms_tags.py | 895 | Argument("placeholder"), | CODE |
| LOW | cms/templatetags/cms_tags.py | 974 | register.tag("placeholder", Placeholder) | CODE |
| LOW | cms/forms/wizards.py | 165 | 'placeholder': placeholder, | CODE |
| LOW | cms/test_utils/project/placeholderapp/models.py | 40 | return get_placeholder_from_slot(self.placeholders, "placeholder") | CODE |
| LOW | cms/test_utils/project/templates/simple.html | 9 | {% placeholder "placeholder" %} | CODE |
| LOW | …s/test_utils/project/templates/integration/simple.html | 9 | {% placeholder "placeholder" %} | CODE |
| LOW | …t_utils/project/pluginapp/plugins/multicolumn/forms.py | 29 | exclude = ('page', 'position', 'placeholder', 'language', 'plugin_type') | CODE |
| LOW | …roject/pluginapp/plugins/manytomany_rel/cms_plugins.py | 25 | 'placeholder': placeholder}) | CODE |
| LOW | …roject/pluginapp/plugins/manytomany_rel/cms_plugins.py | 48 | 'placeholder': placeholder}) | CODE |
| LOW | …est_utils/project/pluginapp/plugins/multiwrap/forms.py | 29 | exclude = ('page', 'position', 'placeholder', 'language', 'plugin_type') | CODE |
| LOW⚡ | cms/signals/log_entries.py | 41 | 'placeholder_kwarg': 'placeholder' | CODE |
| LOW⚡ | cms/signals/log_entries.py | 46 | 'placeholder_kwarg': 'placeholder' | CODE |
| LOW⚡ | cms/signals/log_entries.py | 56 | 'placeholder_kwarg': 'placeholder' | CODE |
| LOW | cms/signals/log_entries.py | 81 | 'placeholder_kwarg': 'placeholder' | CODE |
| LOW | cms/toolbar/toolbar.py | 292 | plugin = self.clipboard.get_plugins().select_related('placeholder')[0] | CODE |
| LOW | cms/toolbar/utils.py | 37 | 'type': 'placeholder', | CODE |
| LOW | cms/tests/test_admin.py | 57 | normal_guy = get_user_model().objects.create_user(USERNAME, "test@test.com", "test@test.com") | CODE |
| LOW | cms/tests/test_admin.py | 59 | normal_guy = get_user_model().objects.create_user(USERNAME, "test@test.com", USERNAME) | CODE |
| LOW | cms/tests/test_admin.py | 692 | self.client.login(username="test@test.com", password="test@test.com") | CODE |
| LOW⚡ | cms/tests/test_plugins.py | 1762 | self.assertEqual(out_context["placeholder"], 2) | CODE |
| LOW⚡ | cms/tests/test_mail.py | 72 | ["user@example.com"], | CODE |
| LOW⚡ | cms/tests/test_mail.py | 80 | self.assertEqual(message.to, ["user@example.com"]) | CODE |
| LOW⚡ | cms/tests/test_placeholder.py | 644 | output = self.render_template_obj(template, {"placeholder": placeholder}, request) | CODE |
| LOW⚡ | cms/tests/test_placeholder.py | 651 | output = self.render_template_obj(template, {"placeholder": placeholder}, request) | CODE |
| LOW⚡ | cms/tests/test_placeholder.py | 661 | output = self.render_template_obj(template, {"placeholder": placeholder, "language": "en"}, request) | CODE |
| LOW⚡ | cms/tests/test_placeholder.py | 666 | output = self.render_template_obj(template, {"placeholder": placeholder, "language": "de"}, request) | CODE |
| LOW | cms/tests/test_placeholder.py | 1807 | placeholder = Placeholder.objects.create(slot="placeholder") | CODE |
| LOW | cms/tests/test_placeholder_admin.py | 428 | ph_en = page.get_placeholders(lang).get(slot="placeholder") | CODE |
| LOW | cms/tests/test_page_admin.py | 1946 | "placeholder": source_placeholder, | CODE |
| LOW | cms/tests/test_page_admin.py | 1975 | "placeholder": source_placeholder, | CODE |
| LOW | cms/tests/test_placeholder_operation_signals.py | 83 | self.assertEqual(call_kwargs['placeholder'], self._placeholder_1) | CODE |
| LOW | cms/tests/test_placeholder_operation_signals.py | 119 | self.assertEqual(post_call_kwargs['placeholder'], self._placeholder_1) | CODE |
| LOW | cms/tests/test_placeholder_operation_signals.py | 148 | self.assertEqual(call_kwargs['placeholder'], self._placeholder_1) | CODE |
| LOW | cms/tests/test_placeholder_operation_signals.py | 176 | self.assertEqual(post_call_kwargs['placeholder'], self._placeholder_1) | CODE |
| LOW | cms/tests/test_placeholder_operation_signals.py | 201 | self.assertEqual(call_kwargs['placeholder'], self._placeholder_1) | CODE |
| LOW | cms/tests/test_placeholder_operation_signals.py | 228 | self.assertEqual(post_call_kwargs['placeholder'], self._placeholder_1) | CODE |
| LOW | cms/tests/test_placeholder_operation_signals.py | 666 | self.assertEqual(call_kwargs['placeholder'], self._placeholder_1) | CODE |
| LOW | cms/tests/test_placeholder_operation_signals.py | 691 | self.assertEqual(post_call_kwargs['placeholder'], self._placeholder_1) | CODE |
| LOW | cms/tests/test_menu.py | 2061 | Department of Lorem Ipsum | STRING |
| LOW | cms/tests/test_permmod.py | 155 | 'body': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa, repellendus, ' | CODE |
| LOW | cms/tests/test_permmod.py | 155 | 'body': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa, repellendus, ' | CODE |
| LOW⚡ | cms/tests/test_templatetags.py | 155 | template, {"placeholder": placeholder, "user": self.get_superuser()}, request=request | STRING |
| LOW⚡ | cms/tests/test_templatetags.py | 165 | {"placeholder": placeholder, "user": self.get_staff_user_with_no_permissions()}, | STRING |
| LOW | cms/tests/test_placeholder_app_admin.py | 72 | placeholderconf = {'placeholder': { | CODE |
| LOW | cms/tests/frontend/unit/cms.structureboard.test.js | 2296 | new FakePlugin('cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' }), | CODE |
| LOW | cms/tests/frontend/unit/cms.structureboard.test.js | 2302 | ['cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' }], | CODE |
| LOW | cms/tests/frontend/unit/cms.structureboard.test.js | 2424 | new FakePlugin('cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' }), | CODE |
| LOW | cms/tests/frontend/unit/cms.structureboard.test.js | 2640 | new FakePlugin('cms-placeholder-1', { placeholder_id: 1, type: 'placeholder' }) | CODE |
| LOW | cms/tests/frontend/unit/cms.plugins.test.js | 146 | type: 'placeholder', | CODE |
| LOW | cms/tests/frontend/unit/cms.plugins.test.js | 234 | type: 'placeholder', | CODE |
| LOW | cms/tests/frontend/unit/cms.plugins.test.js | 308 | type: 'placeholder', | CODE |
| LOW⚡ | cms/tests/frontend/unit/cms.plugins.test.js | 332 | type: 'placeholder', | CODE |
| LOW | cms/tests/frontend/unit/cms.plugins.test.js | 1152 | type: 'placeholder', | CODE |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cms/api.py | 73 | # =============================================================================== | COMMENT |
| MEDIUM | cms/api.py | 75 | # =============================================================================== | COMMENT |
| MEDIUM | cms/api.py | 141 | # =============================================================================== | COMMENT |
| MEDIUM | cms/api.py | 143 | # =============================================================================== | COMMENT |
| MEDIUM⚡ | cms/utils/mptree.py | 774 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | cms/utils/mptree.py | 776 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | cms/utils/mptree.py | 782 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cms/utils/mptree.py | 784 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | cms/utils/mptree.py | 799 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | cms/utils/mptree.py | 801 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | cms/utils/mptree.py | 826 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | cms/utils/mptree.py | 828 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cms/utils/mptree.py | 840 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cms/utils/mptree.py | 842 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cms/utils/mptree.py | 852 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cms/utils/mptree.py | 854 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cms/utils/mptree.py | 870 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cms/utils/mptree.py | 872 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cms/utils/mptree.py | 878 | # ====================================================================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cms/plugin_pool.py | 117 | CODE | |
| LOW | cms/app_registration.py | 177 | CODE | |
| LOW | cms/plugin_base.py | 34 | CODE | |
| LOW | cms/api.py | 78 | CODE | |
| LOW | cms/api.py | 437 | CODE | |
| LOW | cms/cms_toolbars.py | 405 | CODE | |
| LOW | cms/cms_toolbars.py | 507 | CODE | |
| LOW | cms/cms_toolbars.py | 598 | CODE | |
| LOW | cms/appresolver.py | 75 | CODE | |
| LOW | cms/cms_menus.py | 358 | CODE | |
| LOW | cms/views.py | 71 | CODE | |
| LOW | cms/views.py | 358 | CODE | |
| LOW | cms/templatetags/cms_tags.py | 60 | CODE | |
| LOW | cms/templatetags/cms_tags.py | 157 | CODE | |
| LOW | cms/templatetags/cms_tags.py | 252 | CODE | |
| LOW | cms/templatetags/cms_tags.py | 526 | CODE | |
| LOW | cms/templatetags/cms_tags.py | 638 | CODE | |
| LOW | cms/toolbar/toolbar.py | 153 | CODE | |
| LOW | cms/toolbar/toolbar.py | 225 | CODE | |
| LOW | cms/toolbar/toolbar.py | 489 | CODE | |
| LOW | cms/tests/test_scaling.py | 498 | CODE | |
| LOW | cms/tests/test_plugins.py | 1459 | CODE | |
| LOW | cms/tests/test_wizards.py | 730 | CODE | |
| LOW | cms/tests/test_page.py | 743 | CODE | |
| LOW | cms/tests/test_page_admin.py | 1771 | CODE | |
| LOW | cms/tests/test_po.py | 17 | CODE | |
| LOW | cms/tests/test_nested_plugins.py | 493 | CODE | |
| LOW | cms/tests/test_nested_plugins.py | 692 | CODE | |
| LOW | cms/tests/test_menu.py | 149 | CODE | |
| LOW | cms/admin/forms.py | 134 | CODE | |
| LOW | cms/admin/forms.py | 800 | CODE | |
| LOW | cms/admin/forms.py | 849 | CODE | |
| LOW | cms/admin/pageadmin.py | 101 | CODE | |
| LOW | cms/admin/pageadmin.py | 106 | CODE | |
| LOW | cms/admin/utils.py | 850 | CODE | |
| LOW | cms/admin/utils.py | 1114 | CODE | |
| LOW | cms/management/commands/startcmsproject.py | 120 | CODE | |
| LOW | cms/management/commands/startcmsproject.py | 214 | CODE | |
| LOW | cms/management/commands/startcmsproject.py | 250 | CODE | |
| LOW | cms/management/commands/startcmsproject.py | 452 | CODE | |
| LOW | cms/management/commands/startcmsproject.py | 694 | CODE | |
| LOW | cms/management/commands/startcmsproject.py | 958 | CODE | |
| LOW | cms/management/commands/subcommands/list.py | 104 | CODE | |
| LOW | …gement/commands/subcommands/delete_orphaned_plugins.py | 56 | CODE | |
| LOW | cms/management/commands/subcommands/copy.py | 54 | CODE | |
| LOW | cms/utils/placeholder.py | 207 | CODE | |
| LOW | cms/utils/plugins.py | 418 | CODE | |
| LOW | cms/utils/check.py | 197 | CODE | |
| LOW | cms/utils/check.py | 309 | CODE | |
| LOW | cms/utils/check.py | 380 | CODE | |
| LOW | cms/utils/check.py | 433 | CODE | |
| LOW | cms/utils/conf.py | 204 | CODE | |
| LOW | cms/utils/permissions.py | 160 | CODE | |
| LOW | cms/models/permissionmodels.py | 244 | CODE | |
| LOW | cms/models/permissionmodels.py | 267 | CODE | |
| LOW | cms/models/placeholdermodel.py | 276 | CODE | |
| LOW | cms/models/placeholdermodel.py | 390 | CODE | |
| LOW | cms/models/pagemodel.py | 313 | CODE | |
| LOW | cms/models/pagemodel.py | 880 | CODE | |
| LOW | cms/models/managers.py | 83 | CODE | |
| 5 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 61 | djangocms = "cms.management.djangocms:execute_from_command_line" | COMMENT |
| LOW | playwright.config.js | 41 | COMMENT | |
| LOW | playwright.config.js | 61 | /* Run your local dev server before starting the tests */ | COMMENT |
| LOW | docs/requirements.txt | 1 | # | COMMENT |
| LOW | docs/requirements.txt | 21 | black==26.5.1 | COMMENT |
| LOW | docs/requirements.txt | 41 | # -r requirements.in | COMMENT |
| LOW | docs/requirements.txt | 61 | # via django-cms | COMMENT |
| LOW | docs/requirements.txt | 81 | imagesize==2.0.0 | COMMENT |
| LOW | docs/requirements.txt | 101 | pip-tools==7.5.3 | COMMENT |
| LOW | docs/requirements.txt | 121 | pytokens==0.4.1 | COMMENT |
| LOW | docs/requirements.txt | 141 | # -r requirements.in | COMMENT |
| LOW | docs/requirements.txt | 201 | # pip | COMMENT |
| LOW | docs/conf.py | 1 | # | COMMENT |
| LOW | docs/conf.py | 121 | # List of patterns, relative to source directory, that match files and | COMMENT |
| LOW | docs/conf.py | 181 | # Sphinx are currently 'default' and 'sphinxdoc'. | COMMENT |
| LOW | docs/conf.py | 221 | "custom.css", | COMMENT |
| LOW | docs/conf.py | 241 | COMMENT | |
| LOW | docs/conf.py | 281 | COMMENT | |
| LOW | cms/plugin_base.py | 261 | require_parent = False | COMMENT |
| LOW | cms/cache/__init__.py | 41 | COMMENT | |
| LOW | cms/tests/test_plugins.py | 501 | # - columns | COMMENT |
| LOW | cms/tests/test_placeholder.py | 241 | def test_inter_placeholder_nested_plugin_move(self): | COMMENT |
| LOW | cms/tests/test_placeholder_admin.py | 461 | content_type.pk, | COMMENT |
| LOW | cms/tests/test_placeholder_admin.py | 521 | # 5. SELECT "cms_pagecontent"."id", "cms_pagecontent"."language", "cms_pagecontent"."title", "cms_pagecontent"." | COMMENT |
| LOW | cms/tests/test_menu.py | 461 | # get all page contents | COMMENT |
| LOW | cms/tests/test_helpers.py | 21 | COMMENT | |
| LOW | cms/tests/frontend/unit/setup.js | 41 | COMMENT | |
| LOW | cms/tests/frontend/unit/helpers/mock-ajax.js | 41 | // Event 'readystatechange' is should be a simple event. | COMMENT |
| LOW | cms/tests/frontend/integration/pageTypes.js | 41 | // this.click('.cms-toolbar-item-navigation > li + li > a'); | COMMENT |
| LOW | cms/tests/frontend/integration/pageTypes.js | 61 | // .waitForSelector('.cms-ready', function() { | COMMENT |
| LOW | cms/tests/frontend/integration/pagetree.js | 381 | // .withFrame(0, function() { | COMMENT |
| LOW | cms/tests/frontend/integration/pagetree.js | 1401 | // ]) | COMMENT |
| LOW | cms/admin/settingsadmin.py | 121 | return HttpResponse(request.toolbar.render()) | COMMENT |
| LOW | cms/admin/forms.py | 1221 | # user PKs in limit_choices_to in the query string of the popup we're | COMMENT |
| LOW | cms/utils/mptree.py | 781 | # | COMMENT |
| LOW | cms/utils/mptree.py | 801 | # ---------------------------------------------------------------------- | COMMENT |
| LOW | cms/utils/mptree.py | 821 | # Fractional key invariant: for any two sibling keys A < B there is always a key | COMMENT |
| LOW | cms/utils/mptree.py | 841 | # Gains | COMMENT |
| LOW | cms/utils/mptree.py | 861 | # in the SEP encoding. After this, hot-swapping BACK to treebeard is no | COMMENT |
| LOW | cms/models/placeholdermodel.py | 541 | # changed the absolute — and partly negative — intermediate values without affecting that | COMMENT |
| LOW | cms/models/pluginmodel.py | 121 | COMMENT | |
| LOW | cms/sitemaps/cms_sitemap.py | 61 | - Not login_required | COMMENT |
| LOW | cms/sitemaps/cms_sitemap.py | 81 | # | COMMENT |
| LOW | cms/static/cms/js/admin/usersettings.js | 1 | // Loaded by templates/admin/cms/usersettings/change_form.html, which renders | COMMENT |
| LOW | cms/static/cms/js/libs/jstree/jstree.grid.min.js | 741 | // if we are not first, and our previous peer (one before us) is closed, we go right after the previ | COMMENT |
| LOW | .github/requirements/build.txt | 1 | # Hash-pinned build tooling for the PyPI/TestPyPI publish workflows. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/django_settings.py | 1 | CODE | |
| LOW | docs/conf.py | 168 | CODE | |
| LOW | docs/conf.py | 304 | CODE | |
| LOW | cms/plugin_base.py | 24 | CODE | |
| LOW | cms/forms/validators.py | 14 | CODE | |
| LOW | cms/cache/page.py | 1 | CODE | |
| LOW | cms/test_utils/project/brokenpluginapp/cms_plugins.py | 1 | CODE | |
| LOW | cms/signals/__init__.py | 17 | CODE | |
| LOW | cms/toolbar/utils.py | 1 | CODE | |
| LOW | cms/tests/test_plugins.py | 5 | CODE | |
| LOW | cms/tests/test_plugins.py | 1463 | CODE | |
| LOW | cms/admin/__init__.py | 1 | CODE | |
| LOW | cms/admin/__init__.py | 2 | CODE | |
| LOW | cms/admin/__init__.py | 3 | CODE | |
| LOW | cms/admin/__init__.py | 4 | CODE | |
| LOW | cms/admin/__init__.py | 5 | CODE | |
| LOW | cms/admin/pageadmin.py | 1 | CODE | |
| LOW | cms/models/__init__.py | 3 | CODE | |
| LOW | cms/models/__init__.py | 4 | CODE | |
| LOW | cms/models/__init__.py | 5 | CODE | |
| LOW | cms/models/__init__.py | 6 | CODE | |
| LOW | cms/models/__init__.py | 7 | CODE | |
| LOW | cms/models/__init__.py | 8 | CODE | |
| LOW | cms/models/__init__.py | 9 | CODE | |
| LOW | cms/models/__init__.py | 10 | CODE | |
| LOW | cms/models/__init__.py | 11 | CODE | |
| LOW | cms/models/__init__.py | 13 | CODE | |
| LOW | cms/models/pluginmodel.py | 1 | CODE | |
| LOW | cms/models/pluginmodel.py | 3 | CODE | |
| LOW | cms/models/pluginmodel.py | 6 | CODE | |
| LOW | cms/models/pluginmodel.py | 20 | CODE | |
| LOW | cms/extensions/__init__.py | 1 | CODE | |
| LOW | cms/extensions/__init__.py | 1 | CODE | |
| LOW | cms/extensions/__init__.py | 2 | CODE | |
| LOW | cms/extensions/__init__.py | 3 | CODE | |
| LOW | cms/extensions/__init__.py | 3 | CODE | |
| LOW | cms/sitemaps/__init__.py | 1 | CODE | |
| LOW | cms/wizards/helpers.py | 5 | CODE | |
| LOW | cms/wizards/helpers.py | 5 | CODE | |
| LOW | cms/wizards/wizard_pool.py | 5 | CODE | |
| LOW | cms/wizards/wizard_pool.py | 5 | CODE | |
| LOW | menus/base.py | 2 | CODE | |
| LOW | menus/templatetags/menu_tags.py | 7 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | cms/plugin_base.py | 535 | Renders the close frame for a CMS plugin in the Django admin interface. This method is used to send in | STRING |
| HIGH | cms/utils/plugins.py | 36 | Get a list of plugins for a placeholder in a specified template. Respects the placeholder's cache. :param requ | STRING |
| HIGH | cms/utils/plugins.py | 498 | Checks if the global maximum limit for plugins in a placeholder has been reached. If not then it checks if it h | STRING |
| HIGH | menus/utils.py | 16 | Mark the descendants of each node in a list. Args: nodes (list): A list of nodes. Returns: | STRING |
| HIGH | menus/utils.py | 105 | Decorator function that sets the language changer before calling the wrapped function. Args: | STRING |
| HIGH | menus/utils.py | 151 | Initializer for the class. Args: request: The request object. Attributes: | STRING |
| HIGH | menus/utils.py | 219 | Get the path of a page for a specific language. Args: self (object): The object containing | STRING |
| HIGH | menus/utils.py | 276 | Call the function with the given language parameter. Args: lang (str): The language parame | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | cms/plugin_rendering.py | 274 | context.push() | CODE |
| HIGH | cms/templatetags/cms_tags.py | 515 | context.push() | CODE |
| HIGH | cms/templatetags/cms_tags.py | 807 | context.push() | CODE |
| HIGH | cms/templatetags/cms_tags.py | 859 | context.push() | CODE |
| HIGH | cms/management/commands/subcommands/uninstall.py | 13 | help_string = 'Uninstalls (sets to null) specified apphooks for all pages' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …est_utils/project/second_cms_urls_for_apphook_tests.py | 0 | if 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.py | 0 | if 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.py | 0 | if there are some application urls, add special resolver, so we will have standard reverse support. | STRING |
| HIGH | cms/test_utils/project/cms_urls_for_apphook_tests.py | 0 | if there are some application urls, add special resolver, so we will have standard reverse support. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | testserver.py | 45 | except Exception: | CODE |
| LOW | testserver.py | 83 | except Exception as e: | CODE |
| LOW | cms/app_registration.py | 198 | except Exception: # NOQA | CODE |
| LOW | cms/plugin_rendering.py | 302 | except Exception as e: | CODE |
| LOW | cms/plugin_rendering.py | 537 | except Exception: | CODE |
| LOW | cms/app_base.py | 151 | except Exception: | CODE |
| LOW⚡ | cms/cache/permissions.py | 29 | except Exception: | CODE |
| LOW | cms/test_utils/util/grouper.py | 7 | except Exception: | CODE |
| LOW | cms/toolbar/utils.py | 195 | except Exception: | CODE |
| LOW | cms/tests/test_templates.py | 47 | except Exception as e: | CODE |
| MEDIUM | cms/tests/test_templates.py | 48 | print(f"An error occurred: {e}") | CODE |
| LOW | cms/management/commands/subcommands/copy.py | 64 | except Exception: | CODE |
| LOW | cms/management/commands/subcommands/copy.py | 146 | except Exception: | CODE |
| LOW | cms/management/commands/subcommands/copy.py | 150 | except Exception: | CODE |
| MEDIUM | cms/management/commands/subcommands/copy.py | 143 | def handle(self, *args, **options): | CODE |
| LOW | cms/utils/apphook_reload.py | 103 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cms/plugin_rendering.py | 379 | # Check if page, if so delegate to render_page_placeholder | COMMENT |
| LOW | cms/cms_toolbars.py | 581 | # Check if the user has permissions to change at least one page | COMMENT |
| LOW | cms/views.py | 212 | # Check if the page has a redirect url defined for this language. | COMMENT |
| LOW⚡ | cms/tests/test_plugins.py | 1267 | # Set CMS_PLACEHOLDER_CONF to restrict child_classes to a non-existent plugin | COMMENT |
| LOW | cms/admin/placeholderadmin.py | 645 | # Check if the user can copy plugins from source placeholder to | COMMENT |
| LOW | cms/admin/pageadmin.py | 363 | # Check if one of the affected pages either from the old homepage | COMMENT |
| LOW | cms/utils/placeholder.py | 227 | # Check if it quacks like a template object, if not | COMMENT |
| LOW | cms/utils/plugins.py | 221 | if plugin_class.cache_child_classes: # Check if child classes should be cached | CODE |
| LOW | cms/models/placeholdermodel.py | 220 | # Check if the GenericForeignKey is cached by looking for the _source_cache attribute | COMMENT |
| LOW | cms/models/pagemodel.py | 949 | # Check if the new path exists for this language on another page on the same site | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cms/plugin_rendering.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | cms/cache/page.py | 206 | def set_xframe_cache(page: Page, xframe_options: int) -> None: | CODE |
| LOW | cms/signals/pagecontent.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | cms/signals/apphook.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | cms/tests/test_menu_page_viewperm_staff.py | 6 | __all__ = [ | CODE |
| LOW | cms/tests/test_menu_page_viewperm.py | 21 | __all__ = ["ViewPermissionTreeBugTests", "ViewPermissionComplexMenuAllNodesTests"] | CODE |
| LOW | cms/admin/utils.py | 1114 | def update_labels(self, fields: list[str]) -> None: | CODE |
| LOW | cms/utils/plugins.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | cms/utils/conf.py | 14 | __all__ = [ | CODE |
| LOW | cms/utils/compat/dj.py | 5 | __all__ = ['is_installed', 'installed_apps'] | CODE |
| LOW | cms/extensions/__init__.py | 5 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cms/tests/test_placeholder.py | 159 | # Should not raise TemplateSyntaxError, just return empty list | COMMENT |
| LOW | cms/tests/test_placeholder.py | 175 | # Should not raise TemplateDoesNotExist, just return empty list | COMMENT |
| LOW⚡ | cms/utils/page_permissions.py | 57 | # just return grant all mark | COMMENT |
| LOW | cms/sitemaps/cms_sitemap.py | 89 | # included, simply create a new class inheriting from this one, and | COMMENT |
| LOW | menus/menu_pool.py | 200 | # just set the value directly. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cms/api.py | 147 | CODE | |
| LOW | cms/api.py | 314 | CODE | |
| LOW | cms/api.py | 494 | CODE | |
| LOW | cms/api.py | 553 | CODE | |
| LOW | cms/toolbar/items.py | 226 | CODE | |
| LOW | cms/toolbar/items.py | 472 | CODE | |
| LOW | cms/tests/test_placeholder_checks.py | 139 | CODE | |
| LOW | cms/tests/test_page_admin.py | 141 | CODE | |
| LOW | cms/tests/test_placeholder_app_admin.py | 51 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cms/api.py | 23 | def my_function(): | STRING |
| LOW | cms/api.py | 35 | def my_function(): | STRING |