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

kobotoolbox / kpi / 37910937617
84%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 09 Oct 2026 09:26AM UTC
Jobs 10
Files 920
Run time 2min
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

09 Oct 2026 09:23AM UTC coverage: 83.14% (+0.008%) from 83.132%
37910937617

push

github

web-flow
refactor(enketo): remove broken enketo_flush_cached_preview task DEV-3000 (#7678)

### đŸ“Ŗ Summary

Removed a background cleanup job that ran after every form preview and
never worked.

### 📖 Description

Opening a form preview used to schedule a cleanup job for 30 minutes
later. That job failed almost every time, so all it did was add errors
on the server. It's gone now, and previews work exactly as before.

### 💭 Notes

- In production the flush gets a 404 from Enketo's `DELETE
/api/v2/survey/cache` on basically every run, so each preview queued a
celery task that failed 30 min later.
- Enketo already expires these cache entries itself (it sets a 30-day
TTL when it writes them, see `cache-model.js`), so nothing piles up
without the flush.
- Self-hosted caveat: where the flush does succeed (it does on a local
kobo-install once the preview has loaded), preview cache entries now
stay until Enketo's 30-day expiry instead of 30 min.
- Flush tasks still queued at deploy time get logged as unregistered and
dropped, once. They would have 404'd anyway.

### 👀 Preview steps

1. â„šī¸ have a project with a form
2. in the celery worker container, run `celery -A kobo inspect scheduled
| grep -c enketo_flush_cached_preview` and note the number
3. open the project's **Form** tab and click the eye icon (**Preview**)
4. run the same command again
5. 🔴 [on main] the number went up by 1 (a flush task is now scheduled
~30 min out)
6. đŸŸĸ [on PR] the number didn't change, and the preview still opens
normally

10499 of 13860 branches covered (75.75%)

33479 of 40268 relevant lines covered (83.14%)

5.49 hits per line

Coverage Regressions

Lines Coverage ∆ File
667
5.22
-74.11% kpi/utils/query_parser/canopy_autogenerated_parser/__init__.py
336
24.66
-45.28% kpi/models/import_export_task.py
312
0.0
-91.23% kobo/apps/openrosa/apps/viewer/pandas_mongo_bridge.py
211
56.05
-31.54% kobo/apps/openrosa/libs/utils/logger_tools.py
209
19.68
-56.33% kobo/apps/openrosa/libs/utils/export_tools.py
206
0.0
-86.19% kobo/apps/openrosa/libs/utils/briefcase_client.py
192
34.42
-29.77% kpi/serializers/v2/asset.py
177
61.5
-30.15% kpi/models/asset.py
135
25.26
-71.05% kpi/utils/query_parser/query_parser.py
130
25.98
-21.24% kpi/deployment_backends/openrosa_backend.py
123
28.84
-33.15% kpi/views/v2/asset.py
122
25.27
-67.03% kobo/apps/openrosa/apps/logger/utils/attachment_restore.py
101
43.33
-24.05% kpi/deployment_backends/base_backend.py
97
30.58
-47.09% kobo/apps/project_ownership/models/transfer.py
94
26.26
-47.47% kobo/apps/openapi_validator/middleware.py
87
0.0
-87.88% kobo/apps/openrosa/libs/utils/backup_tools.py
80
71.12
-21.8% kpi/mixins/object_permission.py
73
0.0
-96.05% kobo/apps/openrosa/apps/logger/utils/suspension.py
71
43.7
-52.59% kpi/utils/mailer.py
70
64.46
-24.39% kobo/apps/openrosa/apps/logger/xform_instance_parser.py
70
23.4
-74.47% kpi/utils/xlsform_preprocessors/kobomatrix_handler.py
67
25.35
-31.46% kpi/filters.py
66
33.33
-59.46% kobo/apps/openrosa/apps/viewer/views.py
64
12.36
-71.91% kobo/apps/reports/report_data.py
58
0.0
-90.63% kobo/apps/openrosa/libs/data/query.py
58
31.46
-65.17% kpi/deployment_backends/mock_backend.py
54
35.34
-40.6% kpi/paginators.py
50
27.72
-49.5% kpi/password_validation.py
49
51.59
-38.89% kobo/apps/openrosa/apps/logger/signals.py
49
0.0
-57.65% kobo/apps/openrosa/apps/logger/tasks.py
49
23.85
-37.69% kobo/apps/openrosa/apps/logger/utils/instance.py
49
28.57
-43.75% kobo/apps/openrosa/apps/logger/views.py
48
59.0
-24.0% kpi/utils/xml.py
44
45.72
-16.36% kobo/apps/openrosa/apps/viewer/models/data_dictionary.py
44
37.61
-37.61% kpi/models/asset_snapshot.py
41
57.5
-17.08% kobo/apps/openrosa/apps/viewer/models/parsed_instance.py
40
0.0
-40.82% kobo/apps/openrosa/apps/viewer/xls_writer.py
40
23.29
-54.79% kobo/apps/openrosa/libs/utils/image_tools.py
39
35.2
-31.2% kpi/models/paired_data.py
39
52.34
-30.47% kpi/utils/django_orm_helper.py
38
24.14
-32.76% kobo/apps/openrosa/apps/viewer/tasks.py
38
41.18
-27.94% kpi/utils/autoname.py
36
24.49
-73.47% kobo/apps/openrosa/apps/logger/import_tools.py
35
18.75
-72.92% kpi/utils/xlsform_preprocessors/koborank_handler.py
33
49.02
-32.35% kobo/apps/openrosa/apps/viewer/models/export.py
32
53.57
-16.33% kpi/mixins/formpack_xlsform_utils.py
32
53.92
-31.37% kpi/models/asset_file.py
30
59.68
-24.19% kobo/apps/openrosa/apps/logger/models/attachment.py
29
47.62
-17.26% kobo/apps/openrosa/apps/main/models/meta_data.py
29
47.89
-40.85% kpi/utils/hash.py
29
21.95
-70.73% kpi/utils/xlsform_preprocessors/koboscore_handler.py
28
30.14
-19.18% kobo/apps/openrosa/libs/utils/viewer_tools.py
28
17.07
-68.29% kpi/utils/submission.py
27
15.52
-15.52% kobo/apps/project_ownership/utils.py
27
33.96
-50.94% kpi/fields/file.py
24
33.33
-66.67% kobo/apps/openrosa/libs/utils/decorators.py
24
29.67
-26.37% kobo/apps/openrosa/libs/utils/user_auth.py
24
40.0
-53.33% kpi/fields/jsonschema_form_field.py
23
51.06
-48.94% kpi/views/v2/authorized_application_user.py
21
71.79
-10.77% kobo/apps/openrosa/apps/logger/models/instance.py
21
55.0
-17.5% kobo/apps/openrosa/libs/utils/middleware.py
21
65.45
-9.55% kpi/permissions.py
21
43.06
-9.72% kpi/renderers.py
21
50.0
-45.65% kpi/serializers/v2/asset_version.py
21
23.08
-53.85% kpi/utils/asset_translation_utils.py
21
40.58
-30.43% kpi/utils/data_exports.py
21
26.47
-61.76% kpi/utils/export_cleanup.py
21
66.83
-10.24% kpi/utils/mongo_helper.py
19
74.41
-9.0% kobo/apps/openrosa/apps/logger/models/xform.py
19
58.18
-34.55% kpi/signals.py
18
37.84
-48.65% kpi/serializers/v2/create_user.py
18
60.56
-25.35% kpi/utils/sluggify.py
18
37.93
-62.07% kpi/views/token.py
17
16.22
-45.95% kobo/apps/openrosa/apps/logger/utils/database_query.py
17
39.73
-7.76% kobo/apps/organizations/views.py
15
31.71
-36.59% kobo/apps/openrosa/apps/logger/xform_fs.py
14
44.0
-56.0% kobo/apps/openrosa/libs/utils/model_tools.py
13
54.84
-41.94% kobo/apps/openrosa/libs/authentication.py
13
26.09
-56.52% kpi/fields/relative_prefix_hyperlinked_related.py
13
46.34
-15.73% kpi/tasks.py
12
43.6
-2.7% kobo/apps/audit_log/models.py
12
23.4
-25.53% kobo/apps/openrosa/apps/logger/utils/attachment.py
12
44.9
-24.49% kobo/apps/openrosa/apps/logger/utils/counters.py
12
43.06
-16.67% kobo/apps/project_ownership/serializers/invite.py
12
82.76
-13.79% kpi/utils/asset_content_analyzer.py
12
22.73
-54.55% kpi/utils/bugfix.py
11
59.76
-13.41% kobo/apps/project_ownership/models/invite.py
11
67.86
-19.64% kpi/context_processors.py
11
69.44
-30.56% kpi/models/asset_user_partial_permission.py
11
23.31
-3.09% kpi/serializers/v2/asset_permission_assignment.py
11
55.56
-40.74% kpi/utils/xlsform_preprocessors/base_handlers.py
10
21.43
-35.71% kobo/apps/subsequences/utils/supplement_data.py
10
14.8
-5.1% kobo/apps/subsequences/utils/versioning.py
10
77.42
-16.13% kpi/utils/kobo_to_xlsform.py
10
35.29
-58.82% kpi/utils/strings.py
10
38.1
-23.81% kpi/utils/urls.py
9
18.63
-5.59% kobo/apps/stripe/utils/subscription_limits.py
9
35.29
-52.94% kpi/serializers/v1/authorized_application_user.py
7
61.76
-20.59% kobo/apps/storage_backends/base.py
7
57.14
-33.33% kpi/fields/paginated_api.py
7
53.33
-46.67% kpi/maintenance_tasks.py
7
70.37
-25.93% kpi/models/extra_project_metadata_field.py
7
75.71
-10.0% kpi/utils/cache.py
7
72.38
-6.67% kpi/utils/object_permission.py
7
71.43
-20.0% kpi/utils/project_views.py
6
55.71
-4.29% kobo/apps/audit_log/signals.py
6
20.0
-60.0% kobo/apps/openapi_validator/utils.py
6
56.22
-3.24% kobo/apps/organizations/models.py
6
43.75
-37.5% kobo/apps/project_ownership/filters.py
6
72.09
-13.95% kobo/apps/project_ownership/serializers/transfer.py
6
0.0
-100.0% kobo/apps/project_views/tasks.py
6
42.86
-42.86% kpi/mixins/asset.py
6
22.12
-5.31% kpi/utils/models.py
5
60.53
-13.16% kobo/apps/data_collectors/signals.py
5
84.75
-8.47% kobo/apps/openrosa/apps/logger/exceptions.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
30.0
-7.14% kobo/apps/organizations/permissions.py
5
46.34
-12.2% kobo/apps/organizations/tasks.py
5
53.85
-6.41% kpi/deployment_backends/kc_access/utils.py
5
87.72
-8.77% kpi/deployment_backends/mixin.py
5
57.14
-23.81% kpi/fields/writable_json.py
5
83.33
-10.42% kpi/models/asset_version.py
5
75.0
-20.83% kpi/models/authorized_application.py
5
29.41
-14.71% kpi/utils/rename_xls_sheet.py
5
36.14
-6.02% kpi/utils/storage.py
4
77.5
-10.0% kobo/apps/kobo_auth/signals.py
4
45.45
-36.36% kobo/apps/openrosa/koboform/__init__.py
4
50.0
-10.53% kobo/apps/organizations/utils.py
4
78.79
-12.12% kobo/urls.py
4
33.33
-66.67% kpi/utils/chunked_delete.py
4
80.0
-20.0% kpi/views/v1_api_gone.py
3
95.76
-2.54% kobo/apps/openrosa/apps/api/viewsets/xform_submission_api.py
3
80.0
-20.0% kobo/apps/openrosa/apps/viewer/signals.py
3
89.19
-8.11% kobo/apps/project_views/models/project_view.py
3
76.47
-17.65% kpi/utils/pyxform_compatibility.py
3
61.54
-23.08% kpi/versioning.py
2
0.0
-100.0% kobo/apps/openrosa/apps/logger/constants.py
2
91.3
-8.7% kobo/apps/project_ownership/views/invite.py
2
66.67
-2.56% kpi/authentication.py
2
86.92
-1.54% kpi/exceptions.py
2
64.52
-6.45% kpi/mixins/standardize_searchable_field.py
2
96.36
-3.64% kpi/mixins/xls_exportable.py
2
90.0
-10.0% kpi/utils/absolute_paths.py
2
81.48
-7.41% kpi/utils/ssrf.py
2
64.23
-1.63% kpi/utils/usage_calculator.py
2
43.61
-0.09% kpi/views/v2/asset_snapshot.py
1
33.33
-1.19% kobo/apps/audit_log/base_views.py
1
84.21
-5.26% kobo/apps/audit_log/middleware.py
1
86.11
-2.78% kobo/apps/openrosa/apps/logger/fields.py
1
91.3
-4.35% kobo/apps/openrosa/libs/permissions.py
1
94.12
-1.18% kobo/apps/openrosa/libs/renderers/renderers.py
1
68.75
-6.25% kobo/apps/openrosa/libs/utils/string.py
1
85.0
-5.0% kobo/settings/utils.py
1
57.89
-2.63% kpi/db_routers.py
1
79.49
-2.56% kpi/deployment_backends/kc_access/storage.py
1
96.67
-3.33% kpi/fields/kpi_uid.py
Jobs
ID Job ID Ran Files Coverage
1 37910937617.1 09 Oct 2026 09:26AM UTC 915
43.46
2 37910937617.2 09 Oct 2026 09:28AM UTC 917
50.79
3 37910937617.3 09 Oct 2026 09:28AM UTC 915
49.55
4 37910937617.4 09 Oct 2026 09:29AM UTC 915
52.54
5 37910937617.5 09 Oct 2026 09:29AM UTC 917
44.73
6 37910937617.6 09 Oct 2026 09:30AM UTC 917
53.78
7 37910937617.7 09 Oct 2026 09:31AM UTC 915
58.35
8 37910937617.8 09 Oct 2026 09:32AM UTC 918
67.84
9 37910937617.9 09 Oct 2026 09:33AM UTC 917
59.42
10 37910937617.10 09 Oct 2026 09:33AM UTC 920
70.27
Source Files on build 37910937617
  • Tree
  • List 920
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 9cdfb6ca on github
  • Prev Build on main (#37812413393)
  • Next Build on main (#37912521491)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc