CKAN is an open-source DMS (data management system) for powering data hubs and data portals. CKAN makes it easy to publish, share and use data. It powers catalog.data.gov, open.canada.ca/data, data.humdata.org among many other sites.
This report presents the forensic synthetic code analysis of ckan/ckan, a Python project with 5,071 GitHub stars. SynthScan v2.0 examined 265,446 lines of code across 1794 source files, recording 2946 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 11.2 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2946 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ckan/authz.py | 59 | def _is_chained_auth_function(func: AuthFunction) -> bool: | CODE |
| LOW | ckan/authz.py | 145 | def clear_auth_functions_cache() -> None: | CODE |
| LOW | ckan/authz.py | 187 | def get_group_or_org_admin_ids(group_id: Optional[str]) -> list[str]: | CODE |
| LOW | ckan/authz.py | 259 | def get_collaborator_capacities() -> Collection[str]: | CODE |
| LOW | ckan/authz.py | 292 | def get_roles_with_permission(permission: str) -> list[str]: | CODE |
| LOW | ckan/authz.py | 302 | def has_user_permission_for_group_or_org(group_id: Optional[str], | CODE |
| LOW | ckan/authz.py | 338 | def _has_user_permission_for_groups( | CODE |
| LOW | ckan/authz.py | 366 | def users_role_for_group_or_org( | CODE |
| LOW | ckan/authz.py | 393 | def has_user_permission_for_some_org( | CODE |
| LOW | ckan/authz.py | 481 | def user_is_collaborator_on_dataset( | CODE |
| LOW | ckan/config/middleware/flask_app.py | 573 | def _register_plugins_blueprints(app: CKANApp): | CODE |
| LOW | ckan/config/middleware/flask_app.py | 585 | def _register_core_blueprints(app: CKANApp): | CODE |
| LOW | ckan/config/middleware/flask_app.py | 643 | def _setup_error_mail_handler(app: CKANApp): | CODE |
| LOW | ckan/config/declaration/serialize.py | 115 | def serialize_validation_schema(declaration: "Declaration") -> Dict[str, Any]: | CODE |
| LOW | ckan/plugins/interfaces.py | 110 | def make_error_log_middleware(self, app: 'CKANFlask', | STRING |
| LOW | ckan/plugins/interfaces.py | 169 | def get_item_additional_fields( | STRING |
| LOW | ckan/plugins/interfaces.py | 1288 | def prepare_dataset_blueprint(self, package_type: str, | STRING |
| LOW | ckan/plugins/interfaces.py | 1306 | def prepare_resource_blueprint(self, package_type: str, | STRING |
| LOW | ckan/plugins/interfaces.py | 1325 | def resource_validation_dependencies( | STRING |
| LOW | ckan/plugins/interfaces.py | 2227 | def dataset_blueprint_listener(sender, **kwargs): | STRING |
| LOW | ckan/plugins/interfaces.py | 2252 | def dataset_blueprint_listener(sender, **kwargs): | STRING |
| LOW⚡ | ckan/plugins/interfaces.py | 2319 | def files_get_storage_adapters(self) -> dict[str, type[Storage]]: | STRING |
| LOW⚡ | ckan/plugins/interfaces.py | 2324 | def files_get_storage_adapters(self): | STRING |
| LOW⚡ | ckan/plugins/interfaces.py | 2333 | def files_get_location_transformers(self) -> dict[str, types.LocationTransformer]: | STRING |
| LOW⚡ | ckan/plugins/interfaces.py | 2338 | def files_get_location_transformers(self): | STRING |
| LOW | ckan/plugins/blanket.py | 229 | def _declaration_file_extractor(plugin: type[p.Plugin]): | CODE |
| LOW | ckan/plugins/blanket.py | 270 | def _blueprint_implementation( | CODE |
| LOW | ckan/plugins/blanket.py | 310 | def _declaration_implementation(subject: Subject) -> Callable[..., None]: | CODE |
| LOW⚡ | ckan/tests/test_common.py | 96 | def test_setting_a_key_sets_it_on_flask_config_if_app_context(monkeypatch): | CODE |
| LOW⚡ | ckan/tests/test_common.py | 102 | def test_deleting_a_key_deletes_it_on_ckan_config(): | CODE |
| LOW⚡ | ckan/tests/test_common.py | 109 | def test_deleting_a_key_delets_it_on_flask_config(monkeypatch, ckan_config): | CODE |
| LOW⚡ | ckan/tests/test_common.py | 119 | def test_update_works_on_flask_config(): | CODE |
| LOW⚡ | ckan/tests/test_common.py | 129 | def test_config_option_update_action_works_on_flask(reset_db, ckan_config): | CODE |
| LOW⚡ | ckan/tests/test_common.py | 136 | def test_params_also_works_on_flask_request(test_request_context): | CODE |
| LOW⚡ | ckan/tests/test_common.py | 142 | def test_other_missing_attributes_raise_attributeerror_exceptions( | CODE |
| LOW⚡ | ckan/tests/test_common.py | 151 | def test_flask_g_is_used_on_a_flask_request(): | CODE |
| LOW⚡ | ckan/tests/test_common.py | 158 | def test_can_also_use_c_on_a_flask_request(): | CODE |
| LOW⚡ | ckan/tests/test_common.py | 167 | def test_accessing_missing_key_raises_error_on_flask_request(): | CODE |
| LOW⚡ | ckan/tests/test_coding_standards.py | 314 | def test_actions_have_auth_fn(self, results): | CODE |
| LOW⚡ | ckan/tests/test_coding_standards.py | 323 | def test_actions_have_auth_fn_blacklist(self, results): | CODE |
| LOW⚡ | ckan/tests/test_coding_standards.py | 332 | def test_auths_have_action_fn(self, results): | CODE |
| LOW⚡ | ckan/tests/test_coding_standards.py | 341 | def test_auths_have_action_fn_blacklist(self, results): | CODE |
| LOW⚡ | ckan/tests/test_authz.py | 13 | def test_config_overrides_default(): | CODE |
| LOW⚡ | ckan/tests/test_authz.py | 18 | def test_config_override_also_works_with_prefix(): | CODE |
| LOW⚡ | ckan/tests/test_authz.py | 23 | def test_unknown_permission_returns_false(): | CODE |
| LOW⚡ | ckan/tests/test_authz.py | 27 | def test_unknown_permission_not_in_config_returns_false(): | CODE |
| LOW⚡ | ckan/tests/test_authz.py | 31 | def test_default_roles_that_cascade_to_sub_groups_is_a_list(): | CODE |
| LOW⚡ | ckan/tests/test_authz.py | 38 | def test_roles_that_cascade_to_sub_groups_is_a_list(): | CODE |
| LOW | ckan/tests/test_authz.py | 52 | def test_get_user_returns_user_obj(): | CODE |
| LOW | ckan/tests/test_authz.py | 62 | def test_no_attributes_set_on_imported_auth_members(): | CODE |
| LOW | ckan/tests/factories.py | 282 | def test_resource_view_factory(): | STRING |
| LOW | ckan/tests/test_factories.py | 29 | def test_resource_view_factory(): | CODE |
| LOW | ckan/tests/test_factories.py | 39 | def test_dataset_factory_allows_creation_by_anonymous_user(): | CODE |
| LOW | ckan/tests/test_factories.py | 67 | def test_factory_model_with_explicit_composite_key(user_factory: types.TestFactory): | CODE |
| LOW | ckan/tests/test_factories.py | 83 | def test_factory_model_with_implicit_composite_key(user_factory: types.TestFactory): | CODE |
| LOW⚡ | ckan/tests/config/test_middleware.py | 68 | def test_flask_core_route_is_served(patched_app): | CODE |
| LOW⚡ | ckan/tests/config/test_middleware.py | 77 | def test_secret_key_is_used_if_present(app): | CODE |
| LOW⚡ | ckan/tests/config/test_middleware.py | 84 | def test_missing_secret_crashes_applicaiton(make_app): | CODE |
| LOW⚡ | ckan/tests/config/test_middleware.py | 93 | def test_all_plugin_blueprints_are_registered(app): | CODE |
| LOW | ckan/tests/config/test_middleware.py | 111 | def test_flask_config_values_are_parsed(app): | CODE |
| 2077 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ckan/common.py | 10 | CODE | |
| LOW | ckan/common.py | 29 | CODE | |
| LOW | ckan/common.py | 36 | CODE | |
| LOW | ckan/authz.py | 2 | CODE | |
| LOW | ckan/types/__init__.py | 1 | CODE | |
| LOW | ckan/types/__init__.py | 3 | CODE | |
| LOW | ckan/types/__init__.py | 20 | CODE | |
| LOW | ckan/types/__init__.py | 20 | CODE | |
| LOW | ckan/types/__init__.py | 22 | CODE | |
| LOW | ckan/types/__init__.py | 25 | CODE | |
| LOW | ckan/types/__init__.py | 28 | CODE | |
| LOW | ckan/types/__init__.py | 29 | CODE | |
| LOW | ckan/types/__init__.py | 31 | CODE | |
| LOW | ckan/types/__init__.py | 32 | CODE | |
| LOW | ckan/types/__init__.py | 33 | CODE | |
| LOW | ckan/types/logic/action_result.py | 1 | CODE | |
| LOW | ckan/types/logic/action_result.py | 8 | CODE | |
| LOW | ckan/types/logic/action_result.py | 9 | CODE | |
| LOW | ckan/config/environment.py | 3 | CODE | |
| LOW | ckan/config/middleware/common_middleware.py | 2 | CODE | |
| LOW | ckan/config/middleware/__init__.py | 4 | CODE | |
| LOW | ckan/config/middleware/flask_app.py | 1 | CODE | |
| LOW | ckan/config/declaration/serialize.py | 35 | CODE | |
| LOW | ckan/config/declaration/describe.py | 49 | CODE | |
| LOW | ckan/config/declaration/option.py | 5 | CODE | |
| LOW | ckan/config/declaration/__init__.py | 5 | CODE | |
| LOW | ckan/config/declaration/__init__.py | 29 | CODE | |
| LOW | ckan/config/declaration/load.py | 23 | CODE | |
| LOW | ckan/config/declaration/load.py | 37 | CODE | |
| LOW | ckan/plugins/interfaces.py | 7 | CODE | |
| LOW | ckan/plugins/interfaces.py | 26 | CODE | |
| LOW | ckan/plugins/interfaces.py | 29 | CODE | |
| LOW | ckan/plugins/interfaces.py | 30 | CODE | |
| LOW | ckan/plugins/interfaces.py | 31 | CODE | |
| LOW | ckan/plugins/toolkit.py | 12 | CODE | |
| LOW | ckan/plugins/toolkit.py | 17 | CODE | |
| LOW | ckan/plugins/toolkit.py | 17 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 20 | CODE | |
| LOW | ckan/plugins/toolkit.py | 40 | CODE | |
| LOW | ckan/plugins/toolkit.py | 41 | CODE | |
| LOW | ckan/plugins/toolkit.py | 42 | CODE | |
| LOW | ckan/plugins/toolkit.py | 42 | CODE | |
| LOW | ckan/plugins/toolkit.py | 42 | CODE | |
| LOW | ckan/plugins/toolkit.py | 47 | CODE | |
| LOW | ckan/plugins/toolkit.py | 48 | CODE | |
| LOW | ckan/plugins/toolkit.py | 48 | CODE | |
| LOW | ckan/plugins/toolkit.py | 48 | CODE | |
| LOW | ckan/plugins/toolkit.py | 53 | CODE | |
| 314 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ckan/model/package.py | 0 | jsonb_typeof(extras) = 'object' and not jsonb_path_exists(extras, '$.* ? (@.type() <> "string")') | STRING |
| HIGH | ckan/model/group.py | 0 | jsonb_typeof(extras) = 'object' and not jsonb_path_exists(extras, '$.* ? (@.type() <> "string")') | STRING |
| HIGH | …n/migration/versions/106_12d64978ab44_faster_extras.py | 0 | jsonb_typeof(extras) = 'object' and not jsonb_path_exists(extras, '$.* ? (@.type() <> "string")') | STRING |
| HIGH | ckan/migration/env.py | 0 | run migrations in 'offline' mode. this configures the context with just a url and not an engine, though an engine is acc | STRING |
| HIGH | contrib/alembic/generic/env.py | 0 | run migrations in 'offline' mode. this configures the context with just a url and not an engine, though an engine is acc | STRING |
| HIGH | ckanext/activity/migration/activity/env.py | 0 | run migrations in 'offline' mode. this configures the context with just a url and not an engine, though an engine is acc | STRING |
| HIGH | ckanext/tracking/migration/tracking/env.py | 0 | run migrations in 'offline' mode. this configures the context with just a url and not an engine, though an engine is acc | STRING |
| HIGH | …igrations/migration/example_database_migrations/env.py | 0 | run migrations in 'offline' mode. this configures the context with just a url and not an engine, though an engine is acc | STRING |
| HIGH | ckan/migration/env.py | 0 | run migrations in 'online' mode. in this scenario we need to create an engine and associate a connection with the contex | STRING |
| HIGH | contrib/alembic/generic/env.py | 0 | run migrations in 'online' mode. in this scenario we need to create an engine and associate a connection with the contex | STRING |
| HIGH | ckanext/activity/migration/activity/env.py | 0 | run migrations in 'online' mode. in this scenario we need to create an engine and associate a connection with the contex | STRING |
| HIGH | ckanext/tracking/migration/tracking/env.py | 0 | run migrations in 'online' mode. in this scenario we need to create an engine and associate a connection with the contex | STRING |
| HIGH | …igrations/migration/example_database_migrations/env.py | 0 | run migrations in 'online' mode. in this scenario we need to create an engine and associate a connection with the contex | STRING |
| HIGH | ckanext/example_theme_docs/v22_webassets/plugin.py | 0 | return a sorted list of the groups with the most datasets. | STRING |
| HIGH | …anext/example_theme_docs/v14_more_custom_css/plugin.py | 0 | return a sorted list of the groups with the most datasets. | STRING |
| HIGH | ckanext/example_theme_docs/v11_HTML_and_CSS/plugin.py | 0 | return a sorted list of the groups with the most datasets. | STRING |
| HIGH | ckanext/example_theme_docs/v10_custom_snippet/plugin.py | 0 | return a sorted list of the groups with the most datasets. | STRING |
| HIGH | …ext/example_theme_docs/custom_config_setting/plugin.py | 0 | return a sorted list of the groups with the most datasets. | STRING |
| HIGH | ckanext/example_theme_docs/v09_snippet/plugin.py | 0 | return a sorted list of the groups with the most datasets. | STRING |
| HIGH | …next/example_theme_docs/v12_extra_public_dir/plugin.py | 0 | return a sorted list of the groups with the most datasets. | STRING |
| HIGH | ckanext/example_theme_docs/v15_webassets/plugin.py | 0 | return a sorted list of the groups with the most datasets. | STRING |
| HIGH | …xample_theme_docs/v08_custom_helper_function/plugin.py | 0 | return a sorted list of the groups with the most datasets. | STRING |
| HIGH | ckanext/example_theme_docs/v13_custom_css/plugin.py | 0 | return a sorted list of the groups with the most datasets. | STRING |
| HIGH | ckanext/example_theme_docs/v22_webassets/plugin.py | 0 | register the most_popular_groups() function above as a template helper function. | STRING |
| HIGH | …anext/example_theme_docs/v14_more_custom_css/plugin.py | 0 | register the most_popular_groups() function above as a template helper function. | STRING |
| HIGH | ckanext/example_theme_docs/v11_HTML_and_CSS/plugin.py | 0 | register the most_popular_groups() function above as a template helper function. | STRING |
| HIGH | ckanext/example_theme_docs/v10_custom_snippet/plugin.py | 0 | register the most_popular_groups() function above as a template helper function. | STRING |
| HIGH | …ext/example_theme_docs/custom_config_setting/plugin.py | 0 | register the most_popular_groups() function above as a template helper function. | STRING |
| HIGH | ckanext/example_theme_docs/v09_snippet/plugin.py | 0 | register the most_popular_groups() function above as a template helper function. | STRING |
| HIGH | …next/example_theme_docs/v12_extra_public_dir/plugin.py | 0 | register the most_popular_groups() function above as a template helper function. | STRING |
| HIGH | ckanext/example_theme_docs/v15_webassets/plugin.py | 0 | register the most_popular_groups() function above as a template helper function. | STRING |
| HIGH | …xample_theme_docs/v08_custom_helper_function/plugin.py | 0 | register the most_popular_groups() function above as a template helper function. | STRING |
| HIGH | ckanext/example_theme_docs/v13_custom_css/plugin.py | 0 | register the most_popular_groups() function above as a template helper function. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ckan/common.py | 264 | CODE | |
| LOW | ckan/authz.py | 210 | CODE | |
| LOW | ckan/authz.py | 66 | CODE | |
| LOW | ckan/config/middleware/flask_app.py | 585 | CODE | |
| LOW | ckan/config/declaration/serialize.py | 44 | CODE | |
| LOW | ckan/config/declaration/serialize.py | 125 | CODE | |
| LOW | ckan/config/declaration/serialize.py | 179 | CODE | |
| LOW | ckan/config/declaration/describe.py | 102 | CODE | |
| LOW | ckan/config/declaration/option.py | 409 | CODE | |
| LOW | ckan/config/declaration/load.py | 103 | CODE | |
| LOW | ckan/plugins/blanket.py | 310 | CODE | |
| LOW | ckan/plugins/blanket.py | 322 | CODE | |
| LOW | ckan/plugins/toolkit_sphinx_extension.py | 152 | CODE | |
| LOW | ckan/tests/test_coding_standards.py | 98 | CODE | |
| LOW | ckan/tests/helpers.py | 480 | CODE | |
| LOW | ckan/tests/pytest_ckan/fixtures.py | 480 | CODE | |
| LOW | ckan/tests/controllers/test_home.py | 66 | CODE | |
| LOW | ckan/logic/validators.py | 38 | CODE | |
| LOW | ckan/logic/validators.py | 714 | CODE | |
| LOW | ckan/logic/validators.py | 895 | CODE | |
| LOW | ckan/logic/__init__.py | 244 | CODE | |
| LOW | ckan/logic/__init__.py | 448 | CODE | |
| LOW | ckan/logic/__init__.py | 91 | CODE | |
| LOW | ckan/logic/__init__.py | 115 | CODE | |
| LOW | ckan/logic/__init__.py | 117 | CODE | |
| LOW | ckan/logic/__init__.py | 562 | CODE | |
| LOW | ckan/logic/__init__.py | 564 | CODE | |
| LOW | ckan/logic/action/update.py | 234 | CODE | |
| LOW | ckan/logic/action/update.py | 1259 | CODE | |
| LOW | ckan/logic/action/__init__.py | 59 | CODE | |
| LOW | ckan/logic/action/file.py | 48 | CODE | |
| LOW | ckan/logic/action/file.py | 108 | CODE | |
| LOW | ckan/logic/action/file.py | 142 | CODE | |
| LOW | ckan/logic/action/get.py | 307 | CODE | |
| LOW | ckan/logic/action/get.py | 623 | CODE | |
| LOW | ckan/logic/action/get.py | 800 | CODE | |
| LOW | ckan/logic/action/get.py | 1664 | CODE | |
| LOW | ckan/logic/action/get.py | 1975 | CODE | |
| LOW | ckan/cli/clean.py | 21 | CODE | |
| LOW | ckan/cli/__init__.py | 141 | CODE | |
| LOW | ckan/cli/__init__.py | 103 | CODE | |
| LOW | ckan/cli/file.py | 199 | CODE | |
| LOW | ckan/cli/file.py | 273 | CODE | |
| LOW | ckan/cli/file.py | 365 | CODE | |
| LOW | ckan/cli/translation.py | 182 | CODE | |
| LOW | ckan/cli/views.py | 41 | CODE | |
| LOW | ckan/cli/views.py | 277 | CODE | |
| LOW | ckan/model/base.py | 192 | CODE | |
| LOW | ckan/lib/plugins.py | 201 | CODE | |
| LOW | ckan/lib/plugins.py | 256 | CODE | |
| LOW | ckan/lib/app_globals.py | 98 | CODE | |
| LOW | ckan/lib/authenticator.py | 15 | CODE | |
| LOW | ckan/lib/formatters.py | 69 | CODE | |
| LOW | ckan/lib/formatters.py | 88 | CODE | |
| LOW | ckan/lib/config_tool.py | 180 | CODE | |
| LOW | ckan/lib/jinja_extensions.py | 76 | CODE | |
| LOW | ckan/lib/i18n.py | 270 | CODE | |
| LOW | ckan/lib/create_test_data.py | 138 | CODE | |
| LOW | ckan/lib/create_test_data.py | 302 | CODE | |
| LOW | ckan/lib/helpers.py | 396 | CODE | |
| 65 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ckan/common.py | 3 | # This file contains commonly used parts of external libraries. The idea is | COMMENT |
| MEDIUM | ckan/plugins/toolkit.py | 2 | """This module is intended to make functions/objects consistently available to | STRING |
| MEDIUM | ckan/tests/factories.py | 20 | # Create a user with the factory's default attributes, and get back a | STRING |
| MEDIUM | ckan/tests/factories.py | 37 | # Create a user and specify your own user name and email (this works | STRING |
| MEDIUM⚡ | ckan/tests/logic/action/test_get.py | 2128 | # Create an organization so we can test that it does not get returned. | COMMENT |
| MEDIUM⚡ | ckan/tests/logic/action/test_get.py | 2147 | # Create a second organization just so we can test that it does not get | COMMENT |
| MEDIUM⚡ | ckan/tests/logic/action/test_get.py | 2487 | # Create an organization so we can test that it doesn't get returned. | COMMENT |
| MEDIUM | ckan/tests/logic/action/test_get.py | 611 | # Create a member user and an admin user of the group. | COMMENT |
| MEDIUM | ckan/tests/logic/action/test_get.py | 629 | # Create a user who isn't a member of any group or organization. | COMMENT |
| MEDIUM | ckan/tests/logic/action/test_get.py | 2178 | # Create a second organization just so we can test that it does not get | COMMENT |
| MEDIUM | ckan/tests/pytest_ckan/ckan_setup.py | 52 | # Create the snapshot of the initial configuration | COMMENT |
| MEDIUM | ckan/tests/cli/test_db.py | 208 | # Create a dataset | COMMENT |
| MEDIUM⚡ | ckan/tests/cli/test_search_index.py | 193 | # Create a dataset | COMMENT |
| MEDIUM | ckan/tests/cli/test_search_index.py | 241 | # Create a dataset | COMMENT |
| MEDIUM | ckan/logic/action/create.py | 529 | # Create a Package Relationship. | COMMENT |
| MEDIUM | ckan/lib/plugins.py | 109 | # Create the mappings and register the fallback behaviour if one is found. | COMMENT |
| MEDIUM | ckan/lib/plugins.py | 142 | # Create the mappings and register the fallback behaviour if one is found. | COMMENT |
| MEDIUM | ckan/lib/jobs.py | 308 | # This method is called in a worker's work horse process right | STRING |
| MEDIUM | ckan/lib/create_test_data.py | 112 | # Create a couple of vocabularies. | COMMENT |
| MEDIUM | ckan/lib/create_test_data.py | 568 | # Create a couple of vocabularies. | COMMENT |
| MEDIUM | ckan/lib/pagination.py | 541 | # Create a link to the first page (unless we are on the first page | STRING |
| MEDIUM | ckan/lib/pagination.py | 578 | # Create a link to the very last page (unless we are on the last | STRING |
| MEDIUM | ckan/lib/pagination.py | 611 | # Create the URL to load a certain page | STRING |
| MEDIUM | ckan/lib/pagination.py | 615 | # Create the URL to load the page area part of a certain page (AJAX | STRING |
| MEDIUM | ckanext/activity/tests/test_views.py | 630 | # Create a custom Activity object. This one is inspired by: | COMMENT |
| MEDIUM | ckanext/activity/tests/test_views.py | 722 | # Create an Activity object as it was in earlier versions of CKAN. | COMMENT |
| MEDIUM | ckanext/datapusher/tests/test_default_views.py | 33 | # Create a task for `datapusher_hook` to update | COMMENT |
| MEDIUM | ckanext/datapusher/tests/test_default_views.py | 82 | # Create a task for `datapusher_hook` to update | COMMENT |
| MEDIUM | ckanext/datapusher/tests/test_interfaces.py | 85 | # Create a task for `datapusher_hook` to update | COMMENT |
| MEDIUM | ckanext/datapusher/tests/test_action.py | 104 | # Create a task with a state pending to mimic an ongoing job | COMMENT |
| MEDIUM | ckanext/datapusher/tests/test_action.py | 138 | # Create a task with a state pending to mimic an ongoing job | COMMENT |
| MEDIUM | ckanext/datapusher/tests/test_action.py | 187 | # Create a task with a state pending to mimic an ongoing job | COMMENT |
| MEDIUM | ckanext/datapusher/tests/test_action.py | 239 | # Create a task with a state pending to mimic an ongoing job | COMMENT |
| MEDIUM | ckanext/datapusher/tests/test_action.py | 290 | # Create a task with a state pending to mimic an ongoing job | COMMENT |
| MEDIUM | ckanext/example_flask_iblueprint/plugin.py | 99 | # Create a second Blueprint for plugin if needed | COMMENT |
| MEDIUM⚡ | …le_iauthfunctions/tests/test_example_iauthfunctions.py | 110 | # Create a user who will *not* be a member of the curators group. | COMMENT |
| MEDIUM⚡ | …le_iauthfunctions/tests/test_example_iauthfunctions.py | 113 | # Create a user who will be a member of the curators group. | COMMENT |
| MEDIUM⚡ | …le_iauthfunctions/tests/test_example_iauthfunctions.py | 116 | # Create the curators group, with the 'curator' user as a member. | COMMENT |
| MEDIUM | .github/workflows/github-release.yml | 3 | # Create a GitHub release when a tag is pushed | COMMENT |
| MEDIUM | doc/conf.py | 6 | # This file is execfile()d with the current directory set to its containing dir. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cypress/e2e/plugins/jquery.slug-preview.cy.js | 27 | var target = this.element.slugPreview({placeholder: 'placeholder'}); | CODE |
| LOW | cypress/e2e/plugins/jquery.slug-preview.cy.js | 28 | assert.equal(target.find('.slug-preview-value').text(), 'placeholder'); | CODE |
| LOW | ckan/config/declaration/describe.py | 172 | data["placeholder"] = option.placeholder | CODE |
| LOW | ckan/config/declaration/option.py | 217 | "placeholder", | CODE |
| LOW | ckan/config/declaration/load.py | 136 | if details["placeholder"]: | CODE |
| LOW | ckan/config/declaration/load.py | 137 | option.set_placeholder(details["placeholder"]) | CODE |
| LOW⚡ | ckan/tests/logic/test_validators.py | 193 | factories.User(username="user01", email="some_email@example.org") | CODE |
| LOW⚡ | ckan/tests/logic/test_validators.py | 198 | factories.User(email="Some_Email@example.org") | CODE |
| LOW⚡ | ckan/tests/logic/action/test_create.py | 1547 | factories.User(email="some_email@example.org") | STRING |
| LOW⚡ | ckan/tests/logic/action/test_create.py | 1553 | email="Some_Email@example.org", | STRING |
| LOW⚡ | ckan/tests/cli/test_generate.py | 18 | result = cli.invoke(generate, ["fake-data", "organization"]) | CODE |
| LOW⚡ | ckan/tests/cli/test_generate.py | 28 | generate, ["fake-data", "ckan.tests.factories:Dataset"] | CODE |
| LOW⚡ | ckan/tests/cli/test_generate.py | 40 | ["fake-data", "--factory-class", "ckan.tests.factories:Dataset"], | CODE |
| LOW⚡ | ckan/tests/cli/test_generate.py | 52 | generate, ["fake-data", "resource", f"--name={name}"] | CODE |
| LOW⚡ | ckan/tests/cli/test_generate.py | 68 | ["fake-data", "ckan.tests.factories:User", f"--fullname={name}"], | CODE |
| LOW⚡ | ckan/tests/cli/test_generate.py | 79 | result = cli.invoke(generate, ["fake-data", "organization"]) | CODE |
| LOW⚡ | ckan/tests/cli/test_generate.py | 88 | "fake-data", | CODE |
| LOW⚡ | ckan/tests/cli/test_clean.py | 33 | fake_user = { | CODE |
| LOW⚡ | ckan/tests/cli/test_clean.py | 34 | "name": "fake-user", | CODE |
| LOW⚡ | ckan/tests/cli/test_clean.py | 35 | "email": "fake-user@example.com", | CODE |
| LOW⚡ | ckan/tests/cli/test_clean.py | 41 | fake_user = create_with_upload( | CODE |
| LOW⚡ | ckan/tests/cli/test_clean.py | 42 | "<html><body>hello world</body></html>", "index.html", **fake_user | CODE |
| LOW | ckan/tests/cli/test_clean.py | 59 | f"User {fake_user['name']} has an invalid image:" | CODE |
| LOW | ckan/tests/cli/test_clean.py | 60 | f" {fake_user['image_url']}" | CODE |
| LOW⚡ | ckan/tests/cli/test_clean.py | 74 | fake_user = { | CODE |
| LOW⚡ | ckan/tests/cli/test_clean.py | 75 | "name": "fake-user", | CODE |
| LOW⚡ | ckan/tests/cli/test_clean.py | 76 | "email": "fake-user@example.com", | CODE |
| LOW⚡ | ckan/tests/cli/test_clean.py | 81 | fake_user = create_with_upload( | CODE |
| LOW⚡ | ckan/tests/cli/test_clean.py | 82 | "<html><body>hello world</body></html>", "index.html", **fake_user | CODE |
| LOW | ckan/tests/cli/test_clean.py | 99 | assert f"Deleted user: {fake_user['name']}" in result.output | CODE |
| LOW | ckan/tests/cli/test_config.py | 98 | "placeholder": "%(ckan.site_url)s", | CODE |
| LOW | ckan/tests/cli/test_sysadmin.py | 61 | "email=test123@example.org", | CODE |
| LOW | ckan/logic/schema/__init__.py | 936 | "placeholder": [default(""), unicode_safe], | CODE |
| LOW | ckan/cli/generate.py | 257 | def fake_data(ctx: click.Context, category: Optional[str], | CODE |
| LOW⚡ | ckan/cli/generate.py | 274 | ckan generate fake-data dataset | STRING |
| LOW⚡ | ckan/cli/generate.py | 275 | ckan generate fake-data dataset --title="My test dataset" | STRING |
| LOW⚡ | ckan/cli/generate.py | 276 | ckan generate fake-data \\ | STRING |
| LOW⚡ | ckan/cli/generate.py | 285 | owner_org=$(ckan generate fake-data organization | jq .id -r) | STRING |
| LOW⚡ | ckan/cli/generate.py | 286 | ckan generate fake-data dataset --owner_org=$owner_org | STRING |
| LOW⚡ | ckan/templates-midnight-blue/macros/autoform.html | 14 | {'name': 'ckan.site_title', 'control': 'input', 'label': _('Site Title'), 'placeholder': ''}, | CODE |
| LOW⚡ | ckan/templates-midnight-blue/macros/autoform.html | 15 | {'name': 'ckan.theme', 'control': 'select', 'options': styles, 'label': _('Style'), 'placeholder': ''}, | CODE |
| LOW⚡ | ckan/templates-midnight-blue/macros/autoform.html | 16 | {'name': 'ckan.site_description', 'control': 'input', 'label': _('Site Tag Line'), 'placeholder': ''}, | CODE |
| LOW⚡ | ckan/templates-midnight-blue/macros/autoform.html | 17 | {'name': 'ckan.site_logo', 'control': 'input', 'label': _('Site Tag Logo'), 'placeholder': ''}, | CODE |
| LOW⚡ | ckan/templates-midnight-blue/macros/autoform.html | 18 | {'name': 'ckan.site_about', 'control': 'markdown', 'label': _('About'), 'placeholder': _('About page text')}, | CODE |
| LOW⚡ | ckan/templates-midnight-blue/macros/autoform.html | 19 | {'name': 'ckan.site_intro_text', 'control': 'markdown', 'label': _('Intro Text'), 'placeholder': _('Text on home p | CODE |
| LOW⚡ | ckan/templates-midnight-blue/macros/autoform.html | 20 | {'name': 'ckan.site_custom_css', 'control': 'textarea', 'label': _('Custom CSS'), 'placeholder': _('Customisable c | CODE |
| LOW | ckan/public/base/javascript/modules/autocomplete.js | 107 | if ( this.el.attr('placeholder') ) { | CODE |
| LOW | ckan/public/base/javascript/modules/autocomplete.js | 108 | settings.placeholder = this.el.attr('placeholder'); | CODE |
| LOW⚡ | ckan/templates/macros/autoform.html | 14 | {'name': 'ckan.site_title', 'control': 'input', 'label': _('Site Title'), 'placeholder': ''}, | CODE |
| LOW⚡ | ckan/templates/macros/autoform.html | 15 | {'name': 'ckan.theme', 'control': 'select', 'options': styles, 'label': _('Style'), 'placeholder': ''}, | CODE |
| LOW⚡ | ckan/templates/macros/autoform.html | 16 | {'name': 'ckan.site_description', 'control': 'input', 'label': _('Site Tag Line'), 'placeholder': ''}, | CODE |
| LOW⚡ | ckan/templates/macros/autoform.html | 17 | {'name': 'ckan.site_logo', 'control': 'input', 'label': _('Site Tag Logo'), 'placeholder': ''}, | CODE |
| LOW⚡ | ckan/templates/macros/autoform.html | 18 | {'name': 'ckan.site_about', 'control': 'markdown', 'label': _('About'), 'placeholder': _('About page text')}, | CODE |
| LOW⚡ | ckan/templates/macros/autoform.html | 19 | {'name': 'ckan.site_intro_text', 'control': 'markdown', 'label': _('Intro Text'), 'placeholder': _('Text on home p | CODE |
| LOW⚡ | ckan/templates/macros/autoform.html | 20 | {'name': 'ckan.site_custom_css', 'control': 'textarea', 'label': _('Custom CSS'), 'placeholder': _('Customisable c | CODE |
| LOW | …-midnight-blue/base/javascript/modules/autocomplete.js | 107 | if ( this.el.attr('placeholder') ) { | CODE |
| LOW | …-midnight-blue/base/javascript/modules/autocomplete.js | 108 | settings.placeholder = this.el.attr('placeholder'); | CODE |
| LOW | ckanext/tabledesigner/column_types.py | 242 | example = 'user@example.com' | STRING |
| LOW | ckanext/example_flask_streaming/tests/10lines.txt | 5 | Amet justo donec enim diam, vulputate ut pharetra sit amet, aliquam. Non quam lacus suspendisse faucibus interdum posuer | CODE |
| LOW | ckanext/example_flask_streaming/tests/10lines.txt | 5 | Amet justo donec enim diam, vulputate ut pharetra sit amet, aliquam. Non quam lacus suspendisse faucibus interdum posuer | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | ckan/tests/lib/test_helpers.py | 29 | self.request_context.push() | CODE |
| HIGH | ckan/lib/pagination.py | 443 | },null); return false;" | STRING |
| HIGH | ckan/lib/helpers.py | 375 | _auto_flask_context.push() | CODE |
| HIGH | ckan/lib/helpers.py | 568 | _auto_flask_context.push() | CODE |
| HIGH | …n/migration/versions/106_12d64978ab44_faster_extras.py | 91 | encode(substring(sha256((p.id || j.key)::bytea) for 16), 'hex') | STRING |
| HIGH | …n/migration/versions/106_12d64978ab44_faster_extras.py | 121 | encode(substring(sha256((g.id || j.key)::bytea) for 16), 'hex') | STRING |
| HIGH | ckanext/tabledesigner/column_constraints.py | 81 | errors := errors || ARRAY[[{colname}, {error} || ': "' | CODE |
| HIGH | ckanext/tabledesigner/column_constraints.py | 88 | errors := errors || ARRAY[[{colname}, {error} ||': "' | CODE |
| HIGH | ckanext/tabledesigner/column_types.py | 74 | errors := errors || ARRAY[ | CODE |
| HIGH | ckanext/tabledesigner/column_types.py | 196 | errors := errors || ARRAY[[{colname}, 'Invalid choice: "' | CODE |
| HIGH | ckanext/tabledesigner/column_types.py | 252 | errors := errors || ARRAY[{colname}, {error}]; | CODE |
| HIGH | ckanext/example_icolumntypes/plugin.py | 51 | errors := errors || ARRAY[[ | CODE |
| HIGH | ckanext/datatablesview/tests/test_ajax.py | 25 | {'a': 'a < b && a > 0', 'b': None} | CODE |
| HIGH | ckanext/example_icolumnconstraints/plugin.py | 59 | errors := errors || ARRAY[[ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ckan/types/__init__.py | 35 | __all__ = [ | CODE |
| LOW | ckan/config/environment.py | 103 | def update_config() -> None: | CODE |
| LOW | ckan/config/declaration/__init__.py | 32 | __all__ = ["Declaration", "Key", "Flag"] | CODE |
| LOW | ckan/plugins/interfaces.py | 44 | __all__ = [ | STRING |
| LOW | ckan/plugins/interfaces.py | 788 | def update_config(self, config: 'CKANConfig') -> None: | STRING |
| LOW | ckan/plugins/toolkit.py | 93 | __all__ = [ | CODE |
| LOW | ckan/plugins/blanket.py | 139 | __all__ = [ | CODE |
| LOW | ckan/plugins/core.py | 24 | __all__ = [ | CODE |
| LOW | ckan/cli/__init__.py | 38 | def _update_defaults(self, new_defaults: dict[str, Any]) -> None: | CODE |
| LOW | ckan/cli/__init__.py | 48 | def _update_config(self) -> None: | CODE |
| LOW | ckan/model/package.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | ckan/model/package.py | 44 | __all__ = ['Package', 'package_table', 'PackageMember', 'package_member_table', | CODE |
| LOW | ckan/model/package.py | 436 | def set_license(self, license: Any) -> None: | CODE |
| LOW | ckan/model/domain_object.py | 21 | __all__ = ['DomainObject', 'DomainObjectOperation'] | CODE |
| LOW | ckan/model/package_relationship.py | 26 | __all__ = ['PackageRelationship', 'package_relationship_table'] | CODE |
| LOW | ckan/model/user.py | 263 | def set_pending(self) -> None: | CODE |
| LOW | ckan/model/user.py | 362 | def set_user_last_active(self) -> None: | CODE |
| LOW | ckan/model/term_translation.py | 7 | __all__ = ['term_translation_table'] | CODE |
| LOW | ckan/model/modification.py | 11 | __all__ = ['DomainObjectModificationExtension'] | CODE |
| LOW | ckan/model/api_token.py | 17 | __all__ = [u"ApiToken", u"api_token_table"] | CODE |
| LOW | ckan/model/api_token.py | 76 | def set_extra(self, key: str, value: Any, commit: bool = False) -> None: | CODE |
| LOW | ckan/model/system_info.py | 21 | __all__ = ['system_info_table', 'SystemInfo', | CODE |
| LOW | ckan/model/resource.py | 23 | __all__ = ['Resource', 'resource_table'] | CODE |
| LOW | ckan/model/__init__.py | 116 | __all__ = [ | CODE |
| LOW | ckan/model/resource_view.py | 14 | __all__ = ['ResourceView', 'resource_view_table'] | CODE |
| LOW | ckan/model/types.py | 12 | __all__ = ['make_uuid', 'JsonType', 'JsonDictType'] | CODE |
| LOW | ckan/model/task_status.py | 13 | __all__ = ['TaskStatus', 'task_status_table'] | CODE |
| LOW | ckan/model/group.py | 21 | __all__ = ['group_table', 'Group', | CODE |
| LOW | ckan/model/group.py | 214 | def set_approval_status(self, status: str) -> None: | CODE |
| LOW | ckan/model/tag.py | 23 | __all__ = ['tag_table', 'package_tag_table', 'Tag', 'PackageTag', | CODE |
| LOW | ckan/model/meta.py | 12 | __all__ = ['Session'] | CODE |
| LOW | ckan/lib/plugins.py | 194 | def set_default_package_plugin() -> None: | CODE |
| LOW | ckan/lib/plugins.py | 306 | def set_default_group_plugin() -> None: | CODE |
| LOW | ckan/lib/app_globals.py | 69 | def set_theme(asset: str) -> None: | CODE |
| LOW | ckan/lib/app_globals.py | 87 | def set_app_global(key: str, value: str) -> None: | CODE |
| LOW | ckan/lib/i18n.py | 245 | def set_lang(language_code: str) -> None: | CODE |
| LOW | ckan/lib/search/index.py | 80 | def update_dict(self, data: dict[str, Any], defer_commit: bool = False) -> None: | CODE |
| LOW | ckan/lib/files/__init__.py | 28 | __all__ = [ | CODE |
| LOW | ckan/lib/files/default/__init__.py | 5 | __all__ = [ | CODE |
| LOW⚡ | ckan/views/__init__.py | 101 | def set_controller_and_action() -> None: | STRING |
| LOW⚡ | ckan/views/__init__.py | 105 | def set_ckan_current_url(environ: Any) -> None: | STRING |
| LOW | ckanext/activity/model/activity.py | 35 | __all__ = ["Activity", "ActivityDetail"] | CODE |
| LOW | ckanext/activity/model/__init__.py | 11 | __all__ = ["Activity"] | CODE |
| LOW | ckanext/example_blanket_implementation/cli.py | 5 | __all__ = [u"blanket"] | CODE |
| LOW | ckanext/example_blanket_implementation/views.py | 5 | __all__ = [u"blanket"] | CODE |
| LOW | ckanext/example_blanket_implementation/logic/auth.py | 5 | __all__ = [u"sleep", u"wake_up"] | CODE |
| LOW | …ext/example_blanket_implementation/logic/validators.py | 5 | __all__ = [u"is_blanket"] | CODE |
| LOW | …xample_blanket_implementation/logic/action/__init__.py | 6 | __all__ = [u"sleep", u"wake_up"] | CODE |
| LOW | ckanext/tracking/model.py | 27 | __all__ = ['TrackingSummary', 'TrackingRaw'] | CODE |
| LOW | ckanext/tracking/plugin.py | 34 | def update_config(self, config: CKANConfig) -> None: | CODE |
| LOW | ckanext/tracking/middleware.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | ckanext/stats/tests/conftest.py | 3 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 1 | # | COMMENT |
| LOW | requirements.txt | 21 | cachelib==0.13.0 | COMMENT |
| LOW | requirements.txt | 41 | # via -r requirements.in | COMMENT |
| LOW | requirements.txt | 61 | itsdangerous==2.2.0 | COMMENT |
| LOW | requirements.txt | 81 | # werkzeug | COMMENT |
| LOW | requirements.txt | 101 | pysolr==3.11.0 | COMMENT |
| LOW | requirements.txt | 121 | # via rq | COMMENT |
| LOW | requirements.txt | 141 | # via | COMMENT |
| LOW | requirements.txt | 161 | # flask-login | COMMENT |
| LOW | pyproject.toml | 221 | "E", # pycodestyle error | COMMENT |
| LOW | cypress/plugins/index.js | 1 | // *********************************************************** | COMMENT |
| LOW | cypress/support/e2e.js | 1 | // *********************************************************** | COMMENT |
| LOW | ckan/config/declaration/__init__.py | 221 | # storages. Load such declarations here to make them discoverable via | COMMENT |
| LOW | ckan/public/base/javascript/plugins/jquery.masonry.js | 1101 | } | COMMENT |
| LOW | ckan/lib/dictization/model_save.py | 121 | if old_list == obj_list: | COMMENT |
| LOW | ckan/migration/alembic.ini | 1 | # A generic, single database configuration. | COMMENT |
| LOW | ckan/migration/alembic.ini | 21 | # the 'revision' command, regardless of autogenerate | COMMENT |
| LOW | …}/ckanext/{{cookiecutter.project_shortname}}/plugin.py | 1 | import ckan.plugins as plugins | COMMENT |
| LOW | …}/ckanext/{{cookiecutter.project_shortname}}/plugin.py | 41 | COMMENT | |
| LOW | …{cookiecutter.project_shortname}}/assets/webassets.yml | 1 | # {{ cookiecutter.project_shortname }}-js: | COMMENT |
| LOW | ckanext/activity/migration/activity/alembic.ini | 1 | # A generic, single database configuration. | COMMENT |
| LOW | ckanext/activity/migration/activity/alembic.ini | 21 | # the 'revision' command, regardless of autogenerate | COMMENT |
| LOW | …anext/example_theme_docs/v07_helper_function/plugin.py | 21 | # that CKAN will use this plugin's custom templates. | COMMENT |
| LOW | ckanext/example_theme_docs/v02_empty_template/plugin.py | 21 | # that CKAN will use this plugin's custom templates. | COMMENT |
| LOW | ckanext/example_theme_docs/v05_block/plugin.py | 21 | # that CKAN will use this plugin's custom templates. | COMMENT |
| LOW | ckanext/example_theme_docs/v04_ckan_extends/plugin.py | 21 | # that CKAN will use this plugin's custom templates. | COMMENT |
| LOW | ckanext/example_theme_docs/v06_super/plugin.py | 21 | # that CKAN will use this plugin's custom templates. | COMMENT |
| LOW | ckanext/example_theme_docs/v03_jinja/plugin.py | 21 | # that CKAN will use this plugin's custom templates. | COMMENT |
| LOW | ckanext/tracking/migration/tracking/alembic.ini | 1 | # A generic, single database configuration. | COMMENT |
| LOW | ckanext/tracking/migration/tracking/alembic.ini | 21 | # the 'revision' command, regardless of autogenerate | COMMENT |
| LOW | …ions/migration/example_database_migrations/alembic.ini | 1 | # A generic, single database configuration. | COMMENT |
| LOW | …ions/migration/example_database_migrations/alembic.ini | 21 | # the 'revision' command, regardless of autogenerate | COMMENT |
| LOW | doc/conf.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | doc/conf.py | 421 | # There are two options for replacing |today|: either, you set today to some | COMMENT |
| LOW | doc/conf.py | 481 | COMMENT | |
| LOW | doc/conf.py | 501 | ] | COMMENT |
| LOW | doc/conf.py | 521 | #html_split_index = False | COMMENT |
| LOW | doc/conf.py | 541 | # The paper size ('letter' or 'a4'). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ckan/tests/cli/test_db.py | 232 | except Exception: | CODE |
| LOW | ckan/cli/db.py | 67 | except Exception as e: | CODE |
| LOW | ckan/cli/db.py | 230 | except Exception as e: | CODE |
| LOW | ckan/cli/search_index.py | 62 | except Exception as e: | CODE |
| LOW | ckan/cli/search_index.py | 209 | except Exception as e: | CODE |
| LOW | ckan/cli/profile.py | 44 | except Exception: | CODE |
| LOW | ckan/model/base.py | 52 | except Exception as inst: | CODE |
| LOW | ckan/lib/jobs.py | 320 | except Exception: | STRING |
| LOW | ckan/lib/jobs.py | 325 | except Exception: | STRING |
| LOW | ckan/lib/redis.py | 56 | except Exception: | CODE |
| LOW | ckan/lib/search/index.py | 306 | except Exception as e: | CODE |
| LOW | ckan/lib/search/index.py | 317 | except Exception as e: | CODE |
| MEDIUM | ckan/lib/search/index.py | 302 | def commit(self) -> None: | CODE |
| LOW | ckan/lib/search/__init__.py | 185 | except Exception as e: | CODE |
| LOW | ckan/lib/search/common.py | 43 | except Exception as e: | CODE |
| LOW⚡ | ckan/lib/navl/validators.py | 324 | except Exception: | CODE |
| LOW⚡ | ckan/lib/navl/validators.py | 328 | except Exception: | CODE |
| LOW | ckan/views/dataset.py | 611 | except Exception: # We don't like bare excepts | CODE |
| LOW | ckan/views/dataset.py | 748 | except Exception: # We don't like bare excepts | CODE |
| LOW | ckan/views/api.py | 121 | except Exception as inst: | STRING |
| LOW | ckan/views/api.py | 340 | except Exception as e: | STRING |
| LOW | ckanext/datatablesview/blueprint.py | 136 | except Exception: | STRING |
| LOW | ckanext/datapusher/cli.py | 73 | except Exception as e: | STRING |
| LOW⚡ | ckanext/datastore/tests/test_plugin.py | 42 | except Exception as e: | CODE |
| LOW | ckanext/datastore/backend/postgres.py | 1852 | except Exception: | STRING |
| LOW | ckanext/datastore/backend/postgres.py | 2301 | except Exception: | STRING |
| LOW | ckanext/example_igroupform/tests/test_controllers.py | 44 | except Exception as e: | CODE |
| LOW | ckanext/tracking/middleware.py | 52 | except Exception as e: | CODE |
| LOW | ckanext/tracking/cli/tracking.py | 298 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ckan/authz.py | 477 | # Check if user is a collaborator with admin role | COMMENT |
| LOW | ckan/logic/validators.py | 910 | # Check if the dataset actually has an owner_org, even if not provided | COMMENT |
| LOW | ckan/logic/action/create.py | 667 | # Check if collaborator already exists | COMMENT |
| LOW | ckan/lib/datapreview.py | 204 | # Check if a view of this type already exists | COMMENT |
| LOW | ckan/lib/datapreview.py | 208 | # Check if a view of this type can preview this resource | COMMENT |
| LOW | ckan/lib/helpers.py | 441 | # Check if this a relative path | COMMENT |
| LOW | ckan/lib/mailer.py | 75 | # Check if extension is setting reply-to via headers or use config option | COMMENT |
| LOW | ckan/lib/dictization/model_dictize.py | 55 | # Set options to avoid any SOLR queries for each group, which would | COMMENT |
| LOW | ckan/views/api.py | 236 | # Check if action exists | STRING |
| LOW | ckanext/datapusher/logic/action.py | 251 | # Check if the uploaded file has been modified in the meantime | COMMENT |
| LOW | ckanext/datapusher/logic/action.py | 264 | # Check if the URL of the file has been modified in the meantime | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ckan/authz.py | 551 | CODE | |
| LOW | ckan/tests/helpers.py | 242 | CODE | |
| LOW | ckan/tests/helpers.py | 249 | CODE | |
| LOW | ckan/tests/helpers.py | 257 | CODE | |
| LOW | ckan/logic/action/create.py | 758 | CODE | |
| LOW | ckan/logic/action/create.py | 1489 | CODE | |
| LOW | ckan/model/group.py | 303 | CODE | |
| LOW | ckan/lib/pagination.py | 266 | CODE | |
| LOW | ckan/lib/helpers.py | 2249 | CODE | |
| LOW | …ext/example_theme_docs/custom_config_setting/plugin.py | 25 | CODE | |
| LOW | ckanext/datastore/backend/postgres.py | 1161 | CODE | |
| LOW | ckanext/example_igroupform/tests/test_controllers.py | 23 | CODE | |
| LOW | ckanext/stats/stats.py | 196 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ckan/tests/factories.py | 48 | # If you later want to create a user using these attributes, just pass them | STRING |
| LOW⚡ | ckan/logic/auth/delete.py | 132 | ## just return true as logic runs through member_delete | COMMENT |
| LOW⚡ | ckan/logic/auth/delete.py | 138 | ## just return true as logic runs through member_delete | COMMENT |
| MEDIUM | ckan/views/user.py | 319 | # and we can utilize it for later use. | COMMENT |
| LOW | ckanext/activity/views.py | 454 | # if the time difference is negative, just return the change that put us | COMMENT |
| LOW | ckanext/activity/views.py | 709 | # if the time difference is negative, just return the change that put us | COMMENT |
| MEDIUM | …tatablesview/templates/datatables/datatables_view.html | 85 | {#- we create tooltip here instead of javascript so we can leverage the automatic-local-datetime class date conversion C | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | ckan/tests/controllers/test_pagination.py | 107 | user.name if factories.User._meta.model.VALID_NAME.match(user.name) else user[0].id | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ckan/model/package.py | 107 | ## ------------------- | COMMENT |
| MEDIUM | doc/conf.py | 32 | # --------------------- | COMMENT |
| MEDIUM | doc/conf.py | 453 | # ----------------------- | STRING |
| MEDIUM | doc/conf.py | 539 | # ------------------------ | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bin/remove-old-git-branches.sh | 20 | # you can replace python's section with something like `| jq '.[] | .head.label' -r |` | COMMENT |
| LOW | ckan/model/package_relationship.py | 64 | # don't forget to add specs to Solr's schema.xml | COMMENT |
| LOW | ckan/model/package_relationship.py | 64 | # don't forget to add specs to Solr's schema.xml | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ckan/tests/plugins/plugin_order/plugins.py | 19 | def helper(self): | CODE |
| LOW | ckan/tests/plugins/plugin_order/plugins.py | 39 | def helper(self): | CODE |
| LOW | ckan/lib/i18n.py | 227 | def handle_request(request: Request, tmpl_context: Any) -> str: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ckan/public/base/javascript/htmx-ckan.js | 147 | // The event is triggered on every trigger for a request, so we need to check if the element | COMMENT |
| LOW | ckan/public-midnight-blue/base/javascript/htmx-ckan.js | 147 | // The event is triggered on every trigger for a request, so we need to check if the element | COMMENT |