Self hosted FLOSS fitness/workout, nutrition and weight tracker
This report summarizes scanner evidence for wger-project/wger, a Python project with 7,094 GitHub stars. SynthScan examined 97,232 lines of code across 714 source files, recording 2740 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 46.0 (High 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? 2366 finding(s).
Are imports declared and package/API names verified? 177 finding(s).
Are wrappers, guards, and repeated structures necessary? 1471 finding(s).
Which changes need focused human review? 2740 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
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 2740 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 |
|---|---|---|---|---|
| MEDIUM | wger/tasks.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/tasks.py | 83 | # Create the database if necessary, or finish an interrupted setup | COMMENT |
| MEDIUM | wger/version.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/__init__.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/urls.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/__main__.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/__init__.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/forms.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/urls.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/helpers.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/helpers.py | 89 | # Create the valid weight entries | COMMENT |
| MEDIUM | wger/weight/views.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/tests/test_csv_import.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/tests/test_entry.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/tests/test_csv_export.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/tests/test_email_weight_reminder.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/tests/test_overview.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | …er/weight/management/commands/email-weight-reminder.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/api/filtersets.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/api/serializers.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/weight/api/views.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/mail.py | 1 | # This file is part of wger Workout Manager <https://github.com/wger-project>. | COMMENT |
| MEDIUM | wger/core/signals.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/powersync.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tasks.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/account_adapter.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/validators.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/__init__.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/apps.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/forms.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/backends.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/storage.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/demo.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/urls.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/middleware.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/templatetags/wger_extras.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_version.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_auth_social.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/base_testcase.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_oidc_provider.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/api_base_test.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_generator.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_preferences.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_user.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_mail.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_check_min_server_version.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_headless.py | 3 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_apikey.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_repetition_unit.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_user_profile_api.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_sitemap.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_password_reset.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_temporary_users.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_robots_txt.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_powersync.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_license.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_auth_proxy_middleware.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_app_auth_handoff.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_api_schema.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| MEDIUM | wger/core/tests/test_change_password.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| 460 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wger/weight/tests/test_entry.py | 58 | def test_post_creates_official_category(self): | CODE |
| LOW | wger/weight/tests/test_entry.py | 78 | def test_post_reuses_official_category(self): | CODE |
| LOW | wger/weight/tests/test_entry.py | 103 | def test_get_converts_to_profile_unit(self): | CODE |
| LOW | wger/weight/tests/test_entry.py | 118 | def test_post_stamps_profile_unit(self): | CODE |
| LOW | wger/weight/tests/test_entry.py | 134 | def test_patch_weight_restamps_unit(self): | CODE |
| LOW | wger/weight/tests/test_entry.py | 150 | def test_patch_weight_keeps_the_import_provenance(self): | CODE |
| LOW | wger/weight/tests/test_entry.py | 178 | def test_patch_date_keeps_unit(self): | CODE |
| LOW | wger/weight/tests/test_entry.py | 301 | def test_listing_does_not_query_per_entry(self): | CODE |
| LOW | wger/weight/tests/test_csv_export.py | 45 | def test_export_csv_logged_in(self): | CODE |
| LOW⚡ | wger/weight/tests/test_email_weight_reminder.py | 42 | def test_without_num_days_weight_reminder(self): | CODE |
| LOW⚡ | wger/weight/tests/test_email_weight_reminder.py | 53 | def test_with_num_days_weight_reminder(self): | CODE |
| LOW | wger/weight/tests/test_email_weight_reminder.py | 79 | def test_send_email_zero_days_diff(self): | CODE |
| LOW | wger/weight/tests/test_overview.py | 40 | def test_weight_overview_loged_in(self): | CODE |
| LOW | wger/core/signals.py | 76 | def delete_temporary_user_on_logout(sender, request, user, **kwargs): | CODE |
| LOW | wger/core/tasks.py | 58 | def flush_expired_jwt_tokens_task(): | CODE |
| LOW | wger/core/tasks.py | 72 | def flush_expired_long_lived_sessions_task(): | CODE |
| LOW | wger/core/tasks.py | 85 | def flush_expired_oidc_tokens_task(): | CODE |
| LOW | wger/core/account_adapter.py | 51 | def get_reset_password_from_key_url(self, key): | CODE |
| LOW | wger/core/account_adapter.py | 54 | def get_email_confirmation_url(self, request, emailconfirmation): | CODE |
| LOW | wger/core/account_adapter.py | 87 | def get_notification_language(self, context): | CODE |
| LOW | wger/core/templatetags/wger_extras.py | 123 | def _react_translation_paths_json(): | CODE |
| LOW⚡ | wger/core/tests/test_version.py | 39 | def test_version_string_is_semver(self): | CODE |
| LOW⚡ | wger/core/tests/test_version.py | 45 | def test_endpoint_reports_the_literal(self): | CODE |
| LOW⚡ | wger/core/tests/test_version.py | 52 | def test_git_sha_is_appended_as_build_metadata(self): | CODE |
| LOW | wger/core/tests/test_auth_social.py | 54 | def test_login_page_shows_social_section(self, _): | CODE |
| LOW | wger/core/tests/test_auth_social.py | 67 | def test_no_section_without_configured_providers(self): | CODE |
| LOW | wger/core/tests/test_auth_social.py | 83 | def test_link_shown_when_providers_configured(self, _): | CODE |
| LOW | wger/core/tests/test_auth_social.py | 92 | def test_link_hidden_without_providers(self, _): | CODE |
| LOW | wger/core/tests/test_auth_social.py | 108 | def test_use_social_auth_false_when_no_providers(self): | CODE |
| LOW | wger/core/tests/test_auth_social.py | 113 | def test_use_social_auth_true_when_providers_configured(self): | CODE |
| LOW | wger/core/tests/test_auth_social.py | 126 | def test_account_urls_have_no_language_prefix(self): | CODE |
| LOW | wger/core/tests/test_auth_social.py | 129 | def test_account_page_is_localized_from_accept_language(self): | CODE |
| LOW | wger/core/tests/base_testcase.py | 82 | def delete_testcase_add_methods(cls): | CODE |
| LOW | wger/core/tests/base_testcase.py | 312 | def test_delete_object_anonymous(self): | CODE |
| LOW | wger/core/tests/base_testcase.py | 318 | def test_delete_object_authorized(self): | CODE |
| LOW | wger/core/tests/base_testcase.py | 412 | def test_edit_object_anonymous(self): | CODE |
| LOW | wger/core/tests/base_testcase.py | 418 | def test_edit_object_authorized(self): | CODE |
| LOW | wger/core/tests/base_testcase.py | 515 | def test_add_object_anonymous(self): | CODE |
| LOW | wger/core/tests/base_testcase.py | 523 | def test_add_object_authorized(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 291 | def test_code_is_rejected_without_the_verifier(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 301 | def test_code_is_rejected_with_a_wrong_verifier(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 311 | def test_code_cannot_be_redeemed_twice(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 321 | def test_code_is_rejected_for_another_redirect_uri(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 561 | def test_token_of_a_deactivated_user_is_rejected(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 570 | def test_refresh_token_is_not_accepted_as_a_bearer(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 575 | def test_read_scope_allows_reading(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 585 | def test_read_scope_does_not_allow_writing(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 908 | def test_page_is_gone_while_the_provider_is_off(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 915 | def test_the_settings_page_links_here(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 921 | def test_the_settings_page_hides_the_link_while_the_provider_is_off(self): | CODE |
| LOW⚡ | wger/core/tests/test_oidc_provider.py | 926 | def test_anonymous_users_are_sent_to_the_login(self): | CODE |
| LOW | wger/core/tests/test_oidc_provider.py | 96 | def test_output_is_a_usable_env_value(self): | CODE |
| LOW | wger/core/tests/test_oidc_provider.py | 209 | def test_discovery_without_signing_key(self): | CODE |
| LOW | wger/core/tests/test_oidc_provider.py | 232 | def test_jwks_publishes_the_signing_key(self): | CODE |
| LOW | wger/core/tests/test_oidc_provider.py | 255 | def test_authorization_code_flow(self): | CODE |
| LOW | wger/core/tests/test_oidc_provider.py | 334 | def test_unknown_redirect_uri_never_redirects(self): | CODE |
| LOW | wger/core/tests/test_oidc_provider.py | 357 | def test_client_cannot_request_a_scope_it_has_not_been_given(self): | CODE |
| LOW | wger/core/tests/test_oidc_provider.py | 374 | def test_consent_cannot_grant_more_than_was_asked_for(self): | CODE |
| LOW | wger/core/tests/test_oidc_provider.py | 395 | def test_user_can_grant_less_than_the_application_asked_for(self): | CODE |
| LOW | wger/core/tests/test_oidc_provider.py | 425 | def test_consent_form_carries_a_csrf_token(self): | CODE |
| 1213 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wger/tasks.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/version.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/__init__.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/celery_configuration.py | 1 | # wger Workout Manager is free software: you can redistribute it and/or modify | COMMENT |
| LOW | wger/urls.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/__main__.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/weight/__init__.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/weight/forms.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/weight/urls.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/weight/helpers.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/weight/views.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/weight/tests/test_csv_import.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/weight/tests/test_entry.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/weight/tests/test_csv_export.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/weight/tests/test_email_weight_reminder.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/weight/tests/test_overview.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | …er/weight/management/commands/email-weight-reminder.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/weight/api/filtersets.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/weight/api/serializers.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/weight/api/views.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/core/mail.py | 1 | # This file is part of wger Workout Manager <https://github.com/wger-project>. | COMMENT |
| LOW | wger/core/signals.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/core/powersync.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tasks.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/account_adapter.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/validators.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/__init__.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/core/apps.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/forms.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/core/backends.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/storage.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/demo.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/core/urls.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/core/middleware.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/middleware.py | 61 | # Skip processing if not configured | COMMENT |
| LOW | wger/core/templatetags/wger_extras.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_version.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_auth_social.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/base_testcase.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_oidc_provider.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/core/tests/api_base_test.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_generator.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_preferences.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_preferences.py | 461 | # resource = UserProfile | COMMENT |
| LOW | wger/core/tests/test_user.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_mail.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_check_min_server_version.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_headless.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wger/core/tests/test_apikey.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_repetition_unit.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_user_profile_api.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_sitemap.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_sitemap.py | 41 | # reverse('django.contrib.sitemaps.views.sitemap', kwargs={'section': 'nutrition'}) | COMMENT |
| LOW | wger/core/tests/test_password_reset.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_temporary_users.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_robots_txt.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_powersync.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_license.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_auth_proxy_middleware.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| LOW | wger/core/tests/test_app_auth_handoff.py | 1 | # This file is part of wger Workout Manager. | COMMENT |
| 449 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | wger/core/signals.py | 35 | from wger.utils.helpers import disable_for_loaddata | CODE |
| CRITICAL | wger/core/forms.py | 25 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/core/middleware.py | 35 | from wger.utils.helpers import remove_language_code | CODE |
| CRITICAL | wger/core/tests/test_powersync.py | 19 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/core/management/wger_command.py | 18 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/core/management/commands/set-site-url.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/core/models/profile.py | 30 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/core/api/views.py | 23 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wger/core/views/languages.py | 50 | from wger.utils.helpers import remove_language_code | CODE |
| CRITICAL | wger/utils/validators.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/utils/viewsets.py | 23 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/utils/images.py | 16 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/utils/tests/test_remove_language_code.py | 19 | from wger.utils.helpers import remove_language_code | CODE |
| CRITICAL⚡ | wger/utils/tests/test_helpers.py | 23 | from wger.utils.helpers import password_generator | CODE |
| CRITICAL | wger/utils/tests/test_imagemixin.py | 5 | from wger.utils.helpers import BaseImageMixin | CODE |
| CRITICAL | wger/manager/validators.py | 17 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/manager/models/log.py | 22 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/manager/models/session.py | 23 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/manager/api/serializers.py | 20 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | wger/exercises/sync.py | 20 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/exercises/models/video.py | 22 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/exercises/models/image.py | 30 | from wger.utils.helpers import BaseImageMixin | CODE |
| CRITICAL | wger/gym/views/gym.py | 91 | from wger.utils.helpers import password_generator | CODE |
| CRITICAL | wger/nutrition/sync.py | 29 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/nutrition/management/commands/sync-ingredients.py | 16 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | wger/nutrition/models/image.py | 25 | from wger.utils.helpers import BaseImageMixin | CODE |
| CRITICAL | wger/measurements/dynamic/types.py | 22 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | wger/core/tests/test_powersync.py | 60 | response = self.push('PATCH', {'id': self.pk_owned, 'weight_unit': 'lb'}) | CODE |
| HIGH⚡ | wger/core/tests/test_powersync.py | 71 | response = self.push('DELETE', {'id': self.pk_owned}) | CODE |
| HIGH⚡ | wger/core/tests/test_powersync.py | 84 | response = self.push('PATCH', {'id': self.pk_owned, 'weight_unit': 'lb'}) | CODE |
| HIGH⚡ | wger/core/tests/test_powersync.py | 95 | response = self.push('PATCH', {'id': self.pk_owned, 'weight_unit': 'lb'}) | CODE |
| HIGH⚡ | wger/core/tests/test_powersync.py | 106 | response = self.push('PATCH', {'id': self.pk_owned, 'weight_unit': 'lb'}) | CODE |
| HIGH⚡ | wger/core/tests/test_powersync.py | 118 | response = self.push('PATCH', {'id': self.pk_owned, 'weight_unit': 'lb'}) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 109 | response = self.push('PUT', self.create_payload) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 118 | response = self.push('PUT', self.create_payload) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 137 | response = self.push('PUT', self.create_payload) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 155 | first = self.push('PUT', self.create_payload) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 161 | second = self.push('PUT', self.create_payload) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 183 | response = self.push('PUT', payload) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 200 | response = self.push('PUT', payload) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 233 | response = self.push('PATCH', self.update_payload) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 240 | response = self.push('PATCH', self.update_payload) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 253 | response = self.push('PATCH', self.update_payload) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 319 | response = self.push('DELETE', self._delete_payload()) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 329 | response = self.push('DELETE', self._delete_payload()) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 343 | first = self.push('DELETE', self._delete_payload()) | CODE |
| HIGH⚡ | wger/core/tests/powersync_base_test.py | 349 | second = self.push('DELETE', self._delete_payload()) | CODE |
| HIGH | wger/core/tests/powersync_base_test.py | 273 | response = self.push('PATCH', payload) | CODE |
| HIGH | wger/core/tests/powersync_base_test.py | 294 | response = self.push('PUT', self.create_payload or {}) | CODE |
| HIGH | wger/core/tests/powersync_base_test.py | 367 | response = self.push('DELETE', self._delete_payload()) | CODE |
| HIGH | wger/manager/tests/test_powersync.py | 112 | response = self.push( | CODE |
| HIGH | wger/manager/tests/test_powersync.py | 143 | response = self.push( | CODE |
| HIGH | wger/manager/tests/test_log_session_api.py | 172 | response = self.push( | CODE |
| HIGH | wger/manager/tests/test_log_session_api.py | 191 | response = self.push( | CODE |
| HIGH⚡ | wger/manager/tests/test_log_session_api.py | 208 | response = self.push('PATCH', {'id': OWN_LOG, 'session': FOREIGN_SESSION}) | CODE |
| HIGH⚡ | wger/manager/tests/test_log_session_api.py | 217 | response = self.push('PATCH', {'id': OWN_LOG, 'session': OWN_SESSION_OTHER_DATE}) | CODE |
| HIGH⚡ | wger/measurements/tests/test_powersync.py | 68 | response = self.push('PUT', payload) | CODE |
| HIGH⚡ | wger/measurements/tests/test_powersync.py | 84 | response = self.push('PATCH', payload) | CODE |
| HIGH | wger/measurements/tests/test_powersync.py | 118 | return self.push('PUT', payload) | CODE |
| HIGH | wger/measurements/tests/test_powersync.py | 158 | response = self.push( | CODE |
| HIGH⚡ | wger/measurements/tests/test_powersync.py | 204 | response = self.push('PUT', payload) | CODE |
| HIGH⚡ | wger/measurements/tests/test_powersync.py | 218 | response = self.push('PUT', payload) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wger/tasks.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/version.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/weight/helpers.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/weight/views.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/weight/tests/test_csv_import.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/weight/tests/test_csv_export.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/weight/tests/test_overview.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/mail.py | 43 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/tasks.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/backends.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/demo.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/middleware.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/tests/test_preferences.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/tests/test_apikey.py | 51 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/tests/test_change_password.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/tests/test_delete_user.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/tests/test_registration.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/tests/test_verification.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/management/commands/dummy-generator.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/management/commands/dummy-generator-users.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/api/serializers.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/api/views.py | 101 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/views/misc.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/views/user.py | 123 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/views/repetition_units.py | 44 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/views/weight_units.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/views/license.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/core/views/languages.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/config/models/gym_config.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/config/views/gym_config.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/gallery/api/views.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/trophies/signals.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/trophies/tasks.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/trophies/views.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/trophies/checkers/personal_record.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/trophies/checkers/registry.py | 43 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/trophies/tests/test_overview.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/trophies/api/serializers.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/trophies/services/__init__.py | 22 | __all__ = ['UserStatisticsService', 'TrophyService'] | CODE |
| LOW | wger/trophies/services/statistics.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/trophies/services/trophy.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/utils/powersync.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/utils/units.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/utils/fields.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/utils/viewsets.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/utils/generic_views.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/utils/api_token.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/utils/cache.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/utils/widgets.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/utils/language.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/utils/helpers.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/utils/middleware.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/software/views.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/manager/tests/test_copy_routine.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/manager/tests/test_change_config_model.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/manager/tests/test_weight_log.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/manager/tests/test_log_model.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | …anager/management/commands/dummy-generator-routines.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | …r/management/commands/dummy-generator-workout-diary.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | wger/manager/models/routine.py | 56 | logger = logging.getLogger(__name__) | CODE |
| 51 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …er/weight/management/commands/email-weight-reminder.py | 56 | except Measurement.DoesNotExist: | CODE |
| HIGH | wger/core/middleware.py | 95 | except ValueError: | CODE |
| HIGH | wger/core/middleware.py | 92 | except ValueError: | CODE |
| HIGH | wger/gallery/forms.py | 69 | except Exception: | CODE |
| HIGH | wger/trophies/signals.py | 116 | except User.DoesNotExist: | CODE |
| HIGH | wger/trophies/signals.py | 137 | except User.DoesNotExist: | CODE |
| HIGH | wger/trophies/signals.py | 175 | except User.DoesNotExist: | CODE |
| HIGH | wger/trophies/signals.py | 196 | except User.DoesNotExist: | CODE |
| HIGH | wger/trophies/signals.py | 69 | except User.DoesNotExist: | CODE |
| HIGH | wger/utils/powersync.py | 126 | except ValueError: | CODE |
| HIGH | wger/manager/signals.py | 67 | except ObjectDoesNotExist: | CODE |
| HIGH | wger/exercises/sync.py | 317 | except Exercise.DoesNotExist: | CODE |
| HIGH | wger/exercises/sync.py | 340 | except Exercise.DoesNotExist: | CODE |
| HIGH | wger/exercises/sync.py | 348 | except Translation.DoesNotExist: | CODE |
| HIGH | wger/exercises/sync.py | 356 | except ExerciseImage.DoesNotExist: | CODE |
| HIGH | wger/exercises/sync.py | 364 | except ExerciseVideo.DoesNotExist: | CODE |
| HIGH | wger/exercises/models/base.py | 189 | except (OperationalError, ProgrammingError): | CODE |
| HIGH | …/management/commands/migrate-ingredient-image-paths.py | 133 | except OSError: | CODE |
| HIGH | wger/nutrition/api/filtersets.py | 174 | except Language.DoesNotExist: | CODE |
| HIGH | wger/nutrition/views/ingredient.py | 112 | except (TypeError, ValueError): | CODE |
| HIGH | wger/nutrition/views/ingredient.py | 121 | except (TypeError, ValueError): | CODE |
| HIGH | settings/local_dev.py | 124 | except ImportError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wger/__init__.py | 17 | CODE | |
| LOW | wger/core/apps.py | 24 | CODE | |
| LOW | wger/core/apps.py | 25 | CODE | |
| LOW | wger/core/models/__init__.py | 18 | CODE | |
| LOW | wger/core/models/__init__.py | 19 | CODE | |
| LOW | wger/core/models/__init__.py | 20 | CODE | |
| LOW | wger/core/models/__init__.py | 21 | CODE | |
| LOW | wger/core/models/__init__.py | 22 | CODE | |
| LOW | wger/core/models/__init__.py | 23 | CODE | |
| LOW | wger/core/models/__init__.py | 24 | CODE | |
| LOW | wger/core/api/views.py | 72 | CODE | |
| LOW | wger/core/api/views.py | 73 | CODE | |
| LOW | wger/core/api/views.py | 74 | CODE | |
| LOW | wger/core/api/views.py | 75 | CODE | |
| LOW | wger/core/api/views.py | 76 | CODE | |
| LOW | wger/config/apps.py | 26 | CODE | |
| LOW | wger/config/models/__init__.py | 18 | CODE | |
| LOW | wger/gallery/models/__init__.py | 2 | CODE | |
| LOW | wger/trophies/apps.py | 26 | CODE | |
| LOW | wger/trophies/checkers/__init__.py | 20 | CODE | |
| LOW | wger/trophies/checkers/__init__.py | 21 | CODE | |
| LOW | wger/trophies/checkers/__init__.py | 22 | CODE | |
| LOW | wger/trophies/checkers/__init__.py | 23 | CODE | |
| LOW | wger/trophies/checkers/__init__.py | 24 | CODE | |
| LOW | wger/trophies/checkers/__init__.py | 25 | CODE | |
| LOW | wger/trophies/checkers/__init__.py | 26 | CODE | |
| LOW | wger/trophies/checkers/__init__.py | 27 | CODE | |
| LOW | wger/trophies/checkers/__init__.py | 28 | CODE | |
| LOW | wger/trophies/checkers/base.py | 33 | CODE | |
| LOW | wger/trophies/models/__init__.py | 18 | CODE | |
| LOW | wger/trophies/models/__init__.py | 19 | CODE | |
| LOW | wger/trophies/models/__init__.py | 20 | CODE | |
| LOW | wger/trophies/services/__init__.py | 18 | CODE | |
| LOW | wger/trophies/services/__init__.py | 19 | CODE | |
| LOW | wger/mailer/models/__init__.py | 18 | CODE | |
| LOW | wger/mailer/models/__init__.py | 19 | CODE | |
| LOW | wger/manager/apps.py | 26 | CODE | |
| LOW | wger/manager/models/__init__.py | 18 | CODE | |
| LOW | wger/manager/models/__init__.py | 19 | CODE | |
| LOW | wger/manager/models/__init__.py | 20 | CODE | |
| LOW | wger/manager/models/__init__.py | 21 | CODE | |
| LOW | wger/manager/models/__init__.py | 22 | CODE | |
| LOW | wger/manager/models/__init__.py | 22 | CODE | |
| LOW | wger/manager/models/__init__.py | 26 | CODE | |
| LOW | wger/manager/models/__init__.py | 26 | CODE | |
| LOW | wger/manager/models/__init__.py | 30 | CODE | |
| LOW | wger/manager/models/__init__.py | 30 | CODE | |
| LOW | wger/manager/models/__init__.py | 34 | CODE | |
| LOW | wger/manager/models/__init__.py | 35 | CODE | |
| LOW | wger/manager/models/__init__.py | 36 | CODE | |
| LOW | wger/manager/models/__init__.py | 36 | CODE | |
| LOW | wger/manager/models/__init__.py | 40 | CODE | |
| LOW | wger/manager/models/__init__.py | 41 | CODE | |
| LOW | wger/manager/models/__init__.py | 42 | CODE | |
| LOW | wger/manager/models/__init__.py | 42 | CODE | |
| LOW | wger/exercises/apps.py | 26 | CODE | |
| LOW | wger/exercises/models/__init__.py | 18 | CODE | |
| LOW | wger/exercises/models/__init__.py | 19 | CODE | |
| LOW | wger/exercises/models/__init__.py | 20 | CODE | |
| LOW | wger/exercises/models/__init__.py | 21 | CODE | |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | wger/core/tests/test_repetition_unit.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/core/tests/test_license.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/core/tests/test_weight_unit.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/core/tests/test_language.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/exercises/tests/test_muscles.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/exercises/tests/test_exercise_comments.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/exercises/tests/test_categories.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/exercises/tests/test_equipment.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/exercises/tests/test_exercise_translation.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/gym/tests/test_gym.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/nutrition/tests/test_ingredient.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/nutrition/tests/test_weight_unit_ingredient.py | 0 | test that the representation of an object is correct | STRING |
| HIGH | wger/exercises/models/video.py | 0 | globally unique id, to identify the image across installations | STRING |
| HIGH | wger/exercises/models/image.py | 0 | globally unique id, to identify the image across installations | STRING |
| HIGH | wger/nutrition/models/image.py | 0 | globally unique id, to identify the image across installations | STRING |
| HIGH | wger/gym/models/admin_user_note.py | 0 | while the model has a user foreign key, this is editable by all managers in the gym. | STRING |
| HIGH | wger/gym/models/user_document.py | 0 | while the model has a user foreign key, this is editable by all managers in the gym. | STRING |
| HIGH | wger/gym/models/user_config.py | 0 | while the model has a user foreign key, this is editable by all managers in the gym. | STRING |
| HIGH | wger/gym/models/contract.py | 0 | while the model has a user foreign key, this is editable by all managers in the gym. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wger/core/backends.py | 64 | except Exception as e: | CODE |
| LOW | wger/core/backends.py | 89 | except Exception as e: | CODE |
| LOW | wger/core/storage.py | 30 | except Exception: | CODE |
| LOW | wger/core/storage.py | 48 | except Exception: | CODE |
| MEDIUM | wger/core/storage.py | 27 | def stored_name(self, name): | CODE |
| MEDIUM | wger/core/storage.py | 45 | def converter(matchobj): | CODE |
| LOW | wger/core/management/commands/add-user-rest.py | 46 | except Exception as exc: | CODE |
| LOW | wger/core/api/views.py | 472 | except Exception as e: | CODE |
| LOW | wger/gallery/forms.py | 69 | except Exception: | CODE |
| MEDIUM | wger/gallery/forms.py | 60 | def _get_exif_date(self, image_file): | CODE |
| LOW | …er/gallery/management/commands/check_gallery_images.py | 159 | except Exception as e: | CODE |
| LOW⚡ | …er/gallery/management/commands/check_gallery_images.py | 210 | except Exception as e: | CODE |
| LOW | …er/gallery/management/commands/check_gallery_images.py | 230 | except Exception as e: | CODE |
| LOW | …er/gallery/management/commands/check_gallery_images.py | 248 | except Exception as e: | CODE |
| LOW | …er/gallery/management/commands/check_gallery_images.py | 284 | except Exception as e: | CODE |
| LOW | wger/trophies/signals.py | 71 | except Exception as e: | CODE |
| LOW | wger/trophies/signals.py | 118 | except Exception as e: | CODE |
| LOW | wger/trophies/signals.py | 139 | except Exception as e: | CODE |
| LOW | wger/trophies/signals.py | 177 | except Exception as e: | CODE |
| LOW | wger/trophies/signals.py | 198 | except Exception as e: | CODE |
| LOW | wger/trophies/tasks.py | 61 | except Exception as e: | CODE |
| LOW | wger/trophies/tasks.py | 87 | except Exception as e: | CODE |
| LOW | wger/trophies/tasks.py | 115 | except Exception as e: | CODE |
| LOW | wger/trophies/tasks.py | 136 | except Exception as e: | CODE |
| LOW | wger/trophies/checkers/personal_record.py | 100 | except Exception: | CODE |
| LOW | wger/trophies/checkers/personal_record.py | 127 | except Exception as e: | CODE |
| LOW | wger/trophies/checkers/registry.py | 145 | except Exception as e: | CODE |
| LOW | …trophies/management/commands/recalculate_statistics.py | 145 | except Exception as e: | CODE |
| LOW | wger/trophies/services/trophy.py | 121 | except Exception as e: | CODE |
| LOW | wger/trophies/services/trophy.py | 253 | except Exception as e: | CODE |
| LOW | wger/software/views.py | 56 | except Exception as e: | CODE |
| LOW | wger/nutrition/sync.py | 565 | except Exception: | CODE |
| LOW | wger/nutrition/sync.py | 573 | except Exception: | CODE |
| LOW | wger/nutrition/sync.py | 584 | except Exception: | CODE |
| LOW | wger/nutrition/sync.py | 599 | except Exception: | CODE |
| LOW | wger/nutrition/sync.py | 606 | except Exception: | CODE |
| LOW | wger/nutrition/management/products.py | 99 | except Exception as e: | CODE |
| LOW | wger/nutrition/management/products.py | 111 | except Exception as e: | CODE |
| LOW | wger/nutrition/management/products.py | 137 | except Exception as e: | CODE |
| LOW | wger/measurements/tasks.py | 63 | except Exception: | CODE |
| LOW | wger/measurements/dynamic/engine.py | 137 | except Exception: | CODE |
| MEDIUM | wger/measurements/dynamic/engine.py | 99 | def reconcile_by_id(category_id) -> None: | CODE |
| MEDIUM | extras/authors/generate_authors_api.py | 111 | print(f'Error fetching commits: {e}') | CODE |
| MEDIUM | extras/authors/generate_authors_api.py | 366 | print(f'Error copying {repo}-AUTHORS.md: {e}') | CODE |
| MEDIUM | extras/authors/generate_authors_api.py | 374 | print(f'Error copying {rst_file}: {e}') | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wger/tasks.py | 163 | CODE | |
| LOW | wger/core/backends.py | 38 | CODE | |
| LOW | wger/core/middleware.py | 55 | CODE | |
| LOW | wger/core/tests/base_testcase.py | 218 | CODE | |
| LOW | wger/config/models/gym_config.py | 67 | CODE | |
| LOW | …er/gallery/management/commands/check_gallery_images.py | 93 | CODE | |
| LOW | wger/trophies/signals.py | 77 | CODE | |
| LOW | …trophies/management/commands/recalculate_statistics.py | 70 | CODE | |
| LOW | wger/trophies/management/commands/evaluate_trophies.py | 70 | CODE | |
| LOW | wger/trophies/services/statistics.py | 137 | CODE | |
| LOW | wger/trophies/services/statistics.py | 347 | CODE | |
| LOW | wger/trophies/services/statistics.py | 416 | CODE | |
| LOW | wger/trophies/services/trophy.py | 183 | CODE | |
| LOW | wger/utils/context_processor.py | 28 | CODE | |
| LOW | wger/utils/generic_views.py | 82 | CODE | |
| LOW | wger/manager/dataclasses.py | 90 | CODE | |
| LOW | wger/manager/helpers.py | 189 | CODE | |
| LOW | wger/manager/tests/test_copy_routine.py | 38 | CODE | |
| LOW | …anager/management/commands/dummy-generator-routines.py | 72 | CODE | |
| LOW | …r/management/commands/dummy-generator-workout-diary.py | 53 | CODE | |
| LOW | wger/manager/models/routine.py | 177 | CODE | |
| LOW | wger/manager/models/day.py | 131 | CODE | |
| LOW | wger/exercises/sync.py | 291 | CODE | |
| LOW | wger/exercises/api/serializers.py | 475 | CODE | |
| LOW | wger/exercises/views/history.py | 177 | CODE | |
| LOW | wger/gym/management/commands/inactive-members.py | 38 | CODE | |
| LOW | wger/gym/management/commands/gym-user-config.py | 35 | CODE | |
| LOW | wger/nutrition/sync.py | 495 | CODE | |
| LOW | wger/nutrition/management/products.py | 89 | CODE | |
| LOW | wger/nutrition/management/products.py | 158 | CODE | |
| LOW | …ition/management/commands/dummy-generator-nutrition.py | 82 | CODE | |
| LOW | …/management/commands/migrate-ingredient-image-paths.py | 64 | CODE | |
| LOW | wger/nutrition/extract_info/off.py | 110 | CODE | |
| LOW | wger/measurements/signals.py | 50 | CODE | |
| LOW | …gement/commands/dummy-generator-health-measurements.py | 549 | CODE | |
| LOW | …ts/management/commands/dummy-generator-measurements.py | 65 | CODE | |
| LOW | extras/authors/generate_authors_api.py | 230 | CODE | |
| LOW | extras/authors/generate_authors_api.py | 293 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wger/tasks.py | 211 | # Check if we are in the wger source folder | COMMENT |
| LOW | wger/core/middleware.py | 79 | # Check if the request comes from a trusted IP or subnet | COMMENT |
| LOW | wger/core/tests/test_auth_proxy_middleware.py | 84 | # Check if the correct user is logged into the session | COMMENT |
| LOW | wger/core/views/user.py | 233 | # Check if we're switching back to our original account | COMMENT |
| LOW⚡ | …er/gallery/management/commands/check_gallery_images.py | 193 | # Check if file exists | COMMENT |
| LOW⚡ | …er/gallery/management/commands/check_gallery_images.py | 201 | # Check if file exists on disk | COMMENT |
| LOW | wger/trophies/checkers/time_based.py | 79 | # Check if user has ever worked out before the specified time | COMMENT |
| LOW | wger/trophies/checkers/time_based.py | 86 | # Check if user has ever worked out after the specified time | COMMENT |
| LOW | wger/trophies/checkers/inactivity_return.py | 66 | # Check if they've worked out after the inactive date | COMMENT |
| LOW | wger/trophies/services/statistics.py | 127 | # Check if user worked out on January 1st | COMMENT |
| LOW | wger/trophies/services/statistics.py | 179 | # Check if this is a new workout day | COMMENT |
| LOW | wger/trophies/services/statistics.py | 312 | # Check if current streak is active (includes today or yesterday) | COMMENT |
| LOW | wger/trophies/services/statistics.py | 391 | # Check if this is the next weekend (7 days apart) | COMMENT |
| LOW | wger/trophies/services/statistics.py | 443 | # Check if both days have workouts. TruncDate with an explicit tzinfo: | COMMENT |
| LOW | wger/trophies/services/trophy.py | 104 | # Check if already earned | COMMENT |
| LOW | wger/trophies/services/trophy.py | 276 | # Check if trophy system is globally disabled | COMMENT |
| LOW | wger/trophies/services/trophy.py | 280 | # Check if user has disabled trophies (if profile has this field) | COMMENT |
| LOW | wger/manager/views/routine.py | 50 | # Check if the user is a trainer and the routine belongs to a client, only if it does not | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | wger/weight/tests/test_email_weight_reminder.py | 44 | user.email = 'test@test.com' | CODE |
| LOW⚡ | wger/weight/tests/test_email_weight_reminder.py | 55 | user.email = 'test@test.com' | CODE |
| LOW | wger/weight/tests/test_email_weight_reminder.py | 66 | user.email = 'test@test.com' | CODE |
| LOW | wger/weight/tests/test_email_weight_reminder.py | 81 | user.email = 'test@test.com' | CODE |
| LOW | wger/core/tests/test_mail.py | 61 | to=['user@example.com'], | CODE |
| LOW⚡ | wger/core/tests/test_mail.py | 116 | self.assertEqual(mail.outbox[0].to, ['user@example.com']) | CODE |
| LOW | wger/core/tests/test_password_reset.py | 81 | self.client.post(reverse('account_reset_password'), {'email': 'admin@example.com'}) | CODE |
| LOW | wger/core/tests/test_verification.py | 69 | self.assertIn('admin@example.com', mail.outbox[0].to) | CODE |
| LOW | wger/gym/tests/test_contracts.py | 110 | 'note': 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr', | CODE |
| LOW | wger/gym/tests/test_contracts.py | 110 | 'note': 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr', | CODE |
| LOW | wger/gym/tests/test_inactive_members.py | 41 | 'admin@example.com', | CODE |
| LOW | wger/gym/tests/test_admin_user_notes.py | 95 | data = {'note': 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr'} | CODE |
| LOW | wger/gym/tests/test_admin_user_notes.py | 95 | data = {'note': 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr'} | CODE |
| LOW | wger/nutrition/tests/test_usda.py | 184 | 'foodDescription': 'Lorem ipsum', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | wger/exercises/models/image.py | 113 | help_text='Check if this image was generated by AI', | CODE |
| HIGH | wger/exercises/models/image.py | 116 | """A flag indicating whether the image was generated by AI""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | wger/gym/tests/test_user.py | 245 | # Step 1: legitimate hop — trainer1 (user 4) into test (user 2) | COMMENT |
| LOW⚡ | wger/gym/tests/test_user.py | 251 | # Step 2: chained hop — now-as-test, target manager1 (user 9, has manage_gym) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | wger/gym/tests/test_user.py | 245 | # Step 1: legitimate hop — trainer1 (user 4) into test (user 2) | COMMENT |
| LOW⚡ | wger/gym/tests/test_user.py | 251 | # Step 2: chained hop — now-as-test, target manager1 (user 9, has manage_gym) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wger/manager/models/slot.py | 117 | # If this is not a superset, adjust the sets and just return the data | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wger/manager/models/slot.py | 81 | CODE |