• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kobotoolbox / kpi / 26280905494
82%
master: 76%

Build:
Build:
LAST BUILD BRANCH: dev-2239-bulk-action-skip-conflicts
DEFAULT BRANCH: master
Ran 22 May 2026 09:56AM UTC
Jobs 10
Files 915
Run time 3min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 May 2026 09:51AM UTC coverage: 82.268%. Remained the same
26280905494

push

github

web-flow
fix(constance): isolate cache backend to avoid rolling deploy collisions DEV-2148 (#7066)

### 📣 Summary

Fixes Constance 4.x upgrade cache key conflicts.

### 📖 Description

During a rolling deploy, old uWSGI workers (constance 3.x) and new
workers (constance 4.x) coexist briefly and share the same Redis cache.
Their serialization formats are incompatible, causing deserialization
errors.

Fixes this by adding a dedicated constance cache backend with
`KEY_PREFIX='constance_4x'`, isolating each worker generation into its
own Redis namespace.

9021 of 12125 branches covered (74.4%)

1 of 1 new or added line in 1 file covered. (100.0%)

6417 existing lines in 224 files now uncovered.

29846 of 36279 relevant lines covered (82.27%)

5.77 hits per line

Coverage Regressions

Lines Coverage ∆ File
321
0.0
-90.68% kobo/apps/openrosa/apps/viewer/pandas_mongo_bridge.py
221
44.76
-41.39% kobo/apps/openrosa/libs/utils/logger_tools.py
215
18.97
-52.96% kobo/apps/openrosa/libs/utils/export_tools.py
206
0.0
-86.19% kobo/apps/openrosa/libs/utils/briefcase_client.py
194
31.18
-54.49% kpi/serializers/v2/asset_permission_assignment.py
150
40.73
-54.55% kobo/apps/organizations/serializers.py
126
19.9
-64.29% kobo/apps/subsequences/utils/versioning.py
121
32.11
-63.68% kobo/apps/subsequences/actions/automatic_bedrock_qual.py
110
40.5
-45.45% kobo/apps/subsequences/actions/base.py
107
15.7
-47.98% kobo/apps/superuser_stats/tasks.py
93
33.96
-58.49% kobo/apps/openrosa/apps/api/permissions.py
93
42.11
-48.95% kobo/apps/openrosa/apps/api/viewsets/xform_list_api.py
91
19.51
-73.98% kobo/apps/subsequences/actions/qual.py
91
46.79
-14.99% kpi/deployment_backends/openrosa_backend.py
87
0.0
-87.88% kobo/apps/openrosa/libs/utils/backup_tools.py
86
28.67
-60.14% kobo/apps/openrosa/apps/viewer/views.py
85
59.93
-28.62% kpi/views/v2/data.py
81
33.11
-53.64% kobo/apps/openrosa/apps/api/viewsets/briefcase_api.py
81
0.0
-93.1% kobo/apps/stripe/serializers.py
75
0.0
-41.9% kobo/apps/stripe/views.py
71
33.62
-61.21% kobo/apps/openrosa/libs/filters.py
66
32.23
-54.55% kobo/apps/openrosa/apps/api/viewsets/data_viewset.py
65
41.03
-41.67% kobo/apps/organizations/admin/organization_user.py
65
26.05
-54.62% kobo/apps/stripe/utils/subscription_limits.py
65
69.75
-18.21% kpi/views/v2/asset.py
64
22.35
-75.29% kobo/apps/subsequences/actions/mixins.py
63
0.0
-51.64% kobo/apps/stripe/models.py
63
34.55
-57.27% kpi/views/v2/paired_data.py
62
27.87
-50.82% kobo/apps/project_ownership/tasks.py
60
34.67
-40.0% kobo/apps/project_ownership/utils.py
60
26.85
-55.56% kpi/serializers/v2/paired_data.py
59
46.96
-51.3% kobo/apps/openrosa/apps/api/viewsets/xform_submission_api.py
58
0.0
-90.63% kobo/apps/openrosa/libs/data/query.py
57
60.26
-37.75% kobo/apps/organizations/views.py
56
46.62
-42.11% kobo/apps/subsequences/models.py
55
31.62
-47.01% kpi/serializers/v2/export_task.py
52
34.81
-32.91% kobo/apps/openrosa/apps/api/viewsets/xform_viewset.py
52
60.5
-26.0% kpi/utils/xml.py
51
57.87
-20.08% kobo/apps/openrosa/apps/viewer/models/parsed_instance.py
50
0.0
-47.17% kobo/apps/openrosa/apps/logger/tasks.py
49
28.57
-43.75% kobo/apps/openrosa/apps/logger/views.py
49
20.21
-52.13% kobo/apps/stripe/utils/billing_dates.py
46
54.92
-37.7% kobo/apps/openrosa/libs/serializers/xform_serializer.py
43
46.1
-15.99% kobo/apps/openrosa/apps/viewer/models/data_dictionary.py
43
23.29
-58.9% kobo/apps/openrosa/libs/utils/image_tools.py
43
31.43
-40.95% kobo/apps/organizations/admin/organization.py
43
57.36
-33.33% kobo/apps/trash_bin/utils/trash.py
43
41.18
-50.59% kpi/views/environment.py
42
0.0
-79.25% kobo/apps/user_reports/tasks.py
41
32.81
-64.06% kobo/apps/trash_bin/utils/account.py
40
0.0
-40.82% kobo/apps/openrosa/apps/viewer/xls_writer.py
40
61.21
-24.24% kobo/apps/organizations/models.py
40
55.23
-23.26% kpi/serializers/current_user.py
39
23.08
-30.0% kobo/apps/openrosa/apps/viewer/tasks.py
38
37.14
-54.29% kobo/apps/organizations/permissions.py
37
61.11
-29.37% kobo/apps/openrosa/apps/logger/signals.py
37
32.97
-40.66% kobo/apps/openrosa/libs/serializers/metadata_serializer.py
36
24.49
-73.47% kobo/apps/openrosa/apps/logger/import_tools.py
36
55.29
-42.35% kobo/apps/openrosa/libs/renderers/renderers.py
35
77.61
-17.41% kobo/apps/project_ownership/models/transfer.py
34
37.96
-31.48% kobo/apps/openrosa/apps/logger/utils/instance.py
33
49.51
-32.04% kobo/apps/openrosa/apps/viewer/models/export.py
33
70.66
-5.73% kpi/serializers/v2/asset.py
32
70.97
-7.94% kpi/deployment_backends/base_backend.py
32
50.75
-47.76% kpi/views/v2/asset_export_settings.py
31
26.42
-58.49% kobo/apps/trash_bin/utils/project.py
30
0.0
-75.0% kobo/apps/openrosa/apps/django_digest_backends/cache.py
30
26.83
-73.17% kobo/apps/subsequences/tasks.py
29
40.48
-17.26% kobo/apps/openrosa/apps/main/models/meta_data.py
29
30.14
-19.86% kobo/apps/openrosa/libs/utils/viewer_tools.py
29
63.16
-30.53% kpi/views/v2/asset_permission_assignment.py
28
41.27
-44.44% kobo/apps/openrosa/libs/serializers/data_serializer.py
27
34.0
-54.0% kobo/apps/data_collectors/authentication.py
27
49.06
-50.94% kobo/apps/openrosa/libs/serializers/attachment_serializer.py
27
45.16
-43.55% kpi/views/v2/attachment.py
26
35.71
-61.9% kobo/apps/openrosa/libs/mixins/labels_mixin.py
26
27.78
-72.22% kobo/apps/openrosa/libs/utils/decorators.py
26
55.56
-19.26% kpi/views/v2/asset_snapshot.py
25
41.86
-58.14% kobo/apps/subsequences/serializers.py
25
31.11
-55.56% kpi/serializers/v2/data.py
25
74.76
-24.27% kpi/utils/usage_calculator.py
24
59.72
-33.33% kobo/apps/project_ownership/serializers/invite.py
24
59.32
-40.68% kpi/views/v2/export_task.py
23
55.46
-19.33% kobo/apps/openrosa/apps/logger/models/attachment.py
23
27.4
-31.51% kobo/apps/trackers/utils.py
23
62.82
-29.49% kpi/authentication.py
21
57.45
-22.34% kobo/apps/openrosa/libs/utils/middleware.py
21
0.0
-84.0% kobo/apps/stripe/signals.py
20
29.67
-21.98% kobo/apps/openrosa/libs/utils/user_auth.py
20
71.43
-23.81% kpi/serializers/v2/service_usage.py
19
51.22
-23.17% kobo/apps/accounts/mfa/views.py
19
26.0
-38.0% kobo/apps/service_health/views.py
19
0.0
-65.52% kobo/apps/stripe/admin.py
19
47.73
-43.18% kobo/apps/trash_bin/models/attachment.py
19
51.28
-48.72% kobo/apps/trash_bin/tasks/__init__.py
19
38.24
-55.88% kpi/parsers.py
19
51.06
-40.43% kpi/views/v2/import_task.py
18
66.4
-14.4% kpi/models/paired_data.py
17
16.22
-45.95% kobo/apps/openrosa/apps/logger/utils/database_query.py
17
81.25
-6.64% kobo/apps/openrosa/apps/logger/xform_instance_parser.py
17
42.5
-42.5% kpi/views/__init__.py
16
0.0
-100.0% kobo/apps/service_health/test_service_health.py
16
31.0
-16.0% kobo/apps/subsequences/integrations/google/google_translate.py
15
20.0
-60.0% kobo/apps/openrosa/apps/api/utils/xml.py
15
31.71
-36.59% kobo/apps/openrosa/apps/logger/xform_fs.py
15
41.94
-48.39% kobo/apps/openrosa/libs/authentication.py
15
34.78
-65.22% kobo/apps/openrosa/libs/models/signals.py
15
0.0
-100.0% kobo/conftest.py
15
40.48
-35.71% kpi/serializers/v2/deployment.py
14
0.0
-41.18% kobo/apps/accounts/mfa/adapter.py
14
44.0
-56.0% kobo/apps/openrosa/libs/utils/model_tools.py
14
31.82
-31.82% kobo/apps/stripe/utils/limit_enforcement.py
14
41.3
-30.43% kobo/apps/subsequences/prompts.py
13
75.39
-6.81% kobo/apps/openrosa/apps/logger/models/xform.py
13
61.11
-36.11% kobo/apps/organizations/tasks.py
13
60.53
-34.21% kobo/apps/organizations/utils.py
13
45.71
-37.14% kobo/apps/user_reports/seralizers.py
13
75.94
-9.77% kpi/paginators.py
13
33.33
-48.15% kpi/utils/prerequisite_migration_checker.py
12
28.21
-30.77% kobo/apps/accounts/mfa/flows.py
12
76.02
-6.12% kobo/apps/openrosa/apps/logger/models/instance.py
12
44.9
-24.49% kobo/apps/openrosa/apps/logger/utils/counters.py
12
70.0
-30.0% kobo/apps/openrosa/libs/serializers/user_profile_serializer.py
12
35.0
-60.0% kobo/apps/stripe/utils/import_management.py
12
43.48
-52.17% kobo/apps/subsequences/throttling.py
12
30.12
-14.46% kpi/utils/storage.py
11
62.5
-34.38% kobo/apps/openrosa/apps/api/viewsets/attachment_viewset.py
11
70.18
-19.3% kpi/utils/mailer.py
10
58.33
-41.67% kobo/apps/openrosa/apps/api/viewsets/note_viewset.py
10
80.28
-14.08% kobo/apps/project_ownership/models/invite.py
10
75.0
-25.0% kobo/apps/subsequences/views.py
9
41.49
-9.57% kobo/apps/accounts/mfa/models.py
9
30.56
-8.33% kobo/apps/openrosa/apps/api/tools.py
9
62.07
-31.03% kobo/apps/openrosa/apps/api/viewsets/metadata_viewset.py
9
0.0
-29.03% kobo/apps/stripe/utils/manual_subscription.py
9
42.5
-11.25% kobo/apps/subsequences/integrations/google/base.py
9
79.21
-4.46% kpi/filters.py
9
87.79
-4.23% kpi/permissions.py
9
75.12
-4.39% kpi/utils/mongo_helper.py
8
0.0
-100.0% kobo/apps/service_health/test_service_health_minimal.py
8
0.0
-100.0% kobo/apps/stripe/urls.py
8
77.78
-8.08% kpi/password_validation.py
7
31.25
-43.75% kobo/apps/openrosa/libs/utils/string.py
7
0.0
-100.0% kobo/apps/stripe/apps.py
7
50.0
-31.82% kobo/apps/trash_bin/mixins/admin.py
7
53.33
-46.67% kobo/apps/trash_bin/utils/attachment.py
7
87.14
-10.0% kpi/utils/cache.py
7
74.07
-25.93% kpi/views/v2/attachment_delete.py
7
75.86
-24.14% kpi/views/v2/tag.py
6
66.67
-28.57% kobo/apps/openrosa/apps/api/viewsets/connect_viewset.py
6
69.57
-26.09% kobo/apps/openrosa/libs/permissions.py
6
0.0
-100.0% kobo/apps/stripe/exceptions.py
6
0.0
-37.5% kobo/apps/stripe/utils/view_utils.py
6
68.42
-31.58% kobo/apps/subsequences/schemas.py
6
75.0
-21.43% kobo/apps/subsequences/utils/supplement_data.py
6
58.46
-4.62% kobo/apps/trash_bin/admin.py
6
62.96
-22.22% kobo/apps/trash_bin/models/account.py
6
64.29
-14.29% kpi/utils/urls.py
5
66.59
-1.22% kobo/apps/audit_log/models.py
5
72.22
-27.78% kobo/apps/openrosa/apps/logger/models/daily_xform_submission_counter.py
5
75.0
-25.0% kobo/apps/openrosa/apps/logger/models/monthly_xform_submission_counter.py
5
0.0
-38.46% kobo/apps/openrosa/apps/main/context_processors.py
5
50.0
-50.0% kobo/apps/openrosa/libs/mixins/openrosa_headers_mixin.py
5
66.67
-33.33% kobo/apps/openrosa/libs/serializers/note_serializer.py
5
65.22
-21.74% kobo/apps/trash_bin/tasks/project.py
5
82.35
-14.71% kobo/apps/user_reports/views.py
5
76.0
-20.0% kpi/views/v2/asset_counts.py
5
61.54
-38.46% kpi/views/v2/logout.py
4
63.33
-6.67% kobo/apps/openrosa/apps/main/models/user_profile.py
4
45.45
-36.36% kobo/apps/openrosa/koboform/__init__.py
4
72.22
-22.22% kobo/apps/subsequences/actions/automatic_google_transcription.py
4
72.22
-22.22% kobo/apps/subsequences/actions/automatic_google_translation.py
4
83.33
-16.67% kobo/apps/trackers/models.py
4
68.18
-18.18% kobo/apps/trash_bin/tasks/account.py
4
37.5
-5.0% kobo/apps/trash_bin/tasks/attachment.py
4
80.95
-19.05% kobo/apps/trash_bin/utils/signals.py
4
20.0
-80.0% kpi/utils/placeholders.py
3
85.71
-6.12% kobo/apps/openrosa/apps/logger/exceptions.py
3
80.0
-20.0% kobo/apps/openrosa/apps/viewer/signals.py
3
50.0
-37.5% kobo/apps/openrosa/libs/mixins/anonymous_user_public_forms_mixin.py
3
46.67
-20.0% kobo/apps/openrosa/libs/serializers/tag_list_serializer.py
3
42.86
-4.29% kobo/apps/project_ownership/admin.py
3
85.71
-8.57% kobo/apps/project_views/models/assignment.py
3
75.0
-25.0% kobo/apps/superuser_stats/admin.py
3
86.27
-5.88% kpi/context_processors.py
3
87.61
-2.65% kpi/exceptions.py
3
95.1
-2.94% kpi/models/asset_file.py
3
78.57
-10.71% kpi/utils/submission.py
3
30.67
-4.0% kpi/utils/two_database_configuration_checker.py
3
86.67
-10.0% kpi/views/v2/asset_version.py
3
75.0
-25.0% kpi/views/v2/open_rosa.py
2
90.8
-2.3% kobo/apps/audit_log/signals.py
2
76.6
-4.26% kobo/apps/kobo_auth/models.py
2
61.54
-15.38% kobo/apps/openrosa/libs/utils/gravatar.py
2
58.06
-6.45% kobo/apps/organizations/admin/organization_owner.py
2
42.86
-28.57% kobo/apps/subsequences/utils/time.py
2
82.14
-7.14% kobo/urls.py
2
60.26
-2.56% kpi/deployment_backends/kc_access/utils.py
2
80.0
-20.0% kpi/mixins/mfa.py
2
92.41
-0.36% kpi/models/asset.py
2
92.73
-3.64% kpi/signals.py
2
75.0
-12.5% kpi/utils/drf_exceptions.py
2
88.24
-11.76% kpi/views/v2/service_usage.py
1
80.0
-20.0% kobo/apps/accounts/mfa/permissions.py
1
0.0
-100.0% kobo/apps/openrosa/apps/logger/constants.py
1
75.0
-25.0% kobo/apps/openrosa/libs/utils/storage.py
1
84.27
-1.12% kobo/apps/reports/report_data.py
1
87.5
-12.5% kobo/apps/service_health/middleware.py
1
88.89
-11.11% kobo/apps/subsequences/actions/manual_qual.py
1
92.31
-7.69% kobo/apps/user_reports/utils/migrations.py
1
70.97
-3.23% kpi/admin.py
1
93.02
-2.33% kpi/backends.py
1
96.67
-3.33% kpi/fields/kpi_uid.py
1
82.61
-4.35% kpi/fields/relative_prefix_hyperlinked_related.py
1
94.43
-0.28% kpi/mixins/object_permission.py
1
81.2
-0.17% kpi/models/import_export_task.py
1
50.7
-0.47% kpi/renderers.py
1
62.5
-12.5% kpi/utils/datetime.py
1
93.94
-1.01% kpi/utils/django_orm_helper.py
1
78.57
-0.89% kpi/utils/models.py
1
86.67
-0.95% kpi/utils/object_permission.py
1
92.31
-7.69% kpi/versioning.py
1
90.0
-2.5% kpi/views/v1/import_task.py
1
93.33
-6.67% kpi/views/v2/asset_usage.py
Jobs
ID Job ID Ran Files Coverage
1 26280905494.1 22 May 2026 09:56AM UTC 911
52.43
2 26280905494.2 22 May 2026 09:56AM UTC 911
54.05
3 26280905494.3 22 May 2026 09:57AM UTC 913
53.69
4 26280905494.4 22 May 2026 09:58AM UTC 913
55.33
5 26280905494.5 22 May 2026 09:58AM UTC 911
52.69
6 26280905494.6 22 May 2026 09:58AM UTC 911
59.93
7 26280905494.7 22 May 2026 09:58AM UTC 913
66.02
8 26280905494.8 22 May 2026 10:00AM UTC 913
61.1
9 26280905494.9 22 May 2026 10:00AM UTC 913
54.07
10 26280905494.10 22 May 2026 10:01AM UTC 915
68.37
Source Files on build 26280905494
  • Tree
  • List 915
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 60bb5f69 on github
  • Prev Build on release/2.026.13 (#26101325867)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc