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

kobotoolbox / kpi / 30269159095
82%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 27 Jul 2026 01:16PM UTC
Jobs 10
Files 892
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

27 Jul 2026 01:11PM UTC coverage: 81.491% (+0.003%) from 81.488%
30269159095

push

github

web-flow
fix(submissions): use correct Mongo indexes on `root_uuid`/`_uuid` fields INFRA-551 (#7307)

### 👷 Description for instance maintainers

This is the application-side counterpart to kobotoolbox/kobo-docker#381,
which reworks the MongoDB indexes on the `instances` collection (drops
indexes that only backed dead code, adds indexes matching how the app
actually queries `meta/rootUuid`/`_uuid`). Both PRs should land together
on an instance.

Two changes here:

- `kobo/apps/long_running_migrations/jobs/0028_sync_mongo_root_uuid.py`:
simplifies the "still missing root_uuid" query to a plain
`meta/rootUuid: {$exists: False}` (was also matching `None`/`''`, which
the backfill never produces), matching the shape of the new
`id_rootUuid_idx` index from kobo-docker#381. Also tightens
`_check_lrm_0027_is_completed` to require LRM 0027's status to be
strictly `completed` before 0028 runs, instead of accepting `completed`
or `failed`.
- `kpi/views/v2/data.py` (`_get_submission_by_id_or_root_uuid`): the
legacy UUID-lookup fallback now queries `_uuid` instead of
`meta/instanceID`, matching the `{_userform_id, _uuid}` index added in
kobotoolbox/kobo-docker#381 rather than relying on an index we're
retiring.

### 💭 Notes

Related to kobotoolbox/kobo-docker#381.

9309 of 12656 branches covered (73.55%)

30343 of 37235 relevant lines covered (81.49%)

5.51 hits per line

Coverage Regressions

Lines Coverage ∆ File
667
5.22
-74.11% kpi/utils/query_parser/canopy_autogenerated_parser/__init__.py
306
27.96
-50.33% kpi/models/import_export_task.py
188
59.1
-32.58% kpi/models/asset.py
188
34.8
-29.47% kpi/serializers/v2/asset.py
123
28.65
-33.24% kpi/views/v2/asset.py
117
25.28
-65.73% kpi/utils/query_parser/query_parser.py
75
0.0
-41.9% kobo/apps/stripe/views.py
70
23.4
-74.47% kpi/utils/xlsform_preprocessors/kobomatrix_handler.py
66
21.6
-52.8% kobo/apps/stripe/utils/subscription_limits.py
54
35.34
-40.6% kpi/paginators.py
50
0.0
-47.17% kobo/apps/openrosa/apps/logger/tasks.py
49
51.59
-38.89% kobo/apps/openrosa/apps/logger/signals.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
49
28.28
-49.49% kpi/password_validation.py
48
59.0
-24.0% kpi/utils/xml.py
44
37.07
-37.93% kpi/models/asset_snapshot.py
39
35.2
-31.2% kpi/models/paired_data.py
37
38.83
-35.92% kpi/utils/usage_calculator.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
34
37.14
-48.57% kpi/utils/cache.py
33
39.68
-26.19% kpi/utils/autoname.py
32
53.92
-31.37% kpi/models/asset_file.py
31
62.63
-31.31% kpi/utils/django_orm_helper.py
30
58.33
-25.0% kobo/apps/openrosa/apps/logger/models/attachment.py
29
21.95
-70.73% kpi/utils/xlsform_preprocessors/koboscore_handler.py
27
76.95
-10.55% kobo/apps/openrosa/apps/logger/xform_instance_parser.py
24
54.84
-38.71% kpi/utils/kobo_to_xlsform.py
23
51.06
-48.94% kpi/views/v2/authorized_application_user.py
22
31.58
-38.6% kpi/utils/mailer.py
21
71.79
-10.77% kobo/apps/openrosa/apps/logger/models/instance.py
21
64.65
-9.77% kpi/permissions.py
21
42.79
-9.77% kpi/renderers.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
58.18
-34.55% kpi/signals.py
18
37.84
-48.65% kpi/serializers/v2/create_user.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
17.86
-60.71% kpi/utils/submission.py
16
31.82
-36.36% kobo/apps/stripe/utils/limit_enforcement.py
15
31.71
-36.59% kobo/apps/openrosa/apps/logger/xform_fs.py
14
47.62
-8.33% kobo/apps/openrosa/apps/main/models/meta_data.py
13
47.13
-14.94% kpi/tasks.py
13
67.61
-18.31% kpi/utils/sluggify.py
12
44.9
-24.49% kobo/apps/openrosa/apps/logger/utils/counters.py
12
35.0
-60.0% kobo/apps/stripe/utils/import_management.py
12
82.76
-13.79% kpi/utils/asset_content_analyzer.py
12
22.73
-54.55% kpi/utils/bugfix.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
72.92
-20.83% kpi/models/asset_version.py
10
35.29
-58.82% kpi/utils/strings.py
10
38.1
-23.81% kpi/utils/urls.py
9
77.49
-4.71% kobo/apps/openrosa/apps/logger/models/xform.py
9
0.0
-29.03% kobo/apps/stripe/utils/manual_subscription.py
9
35.29
-52.94% kpi/serializers/v1/authorized_application_user.py
7
70.37
-25.93% kpi/models/extra_project_metadata_field.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
0.0
-37.5% kobo/apps/stripe/utils/view_utils.py
6
53.85
-46.15% kpi/utils/files.py
6
22.32
-5.36% kpi/utils/models.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
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
44.14
-0.92% kobo/apps/audit_log/models.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
76.47
-17.65% kpi/utils/pyxform_compatibility.py
3
61.54
-23.08% kpi/versioning.py
2
82.35
-11.76% kobo/apps/audit_log/middleware.py
2
60.53
-5.26% kobo/apps/data_collectors/signals.py
2
82.61
-8.7% kpi/serializers/v2/asset_version.py
2
90.0
-10.0% kpi/utils/absolute_paths.py
2
47.06
-2.94% kpi/utils/hash.py
1
33.33
-1.19% kobo/apps/audit_log/base_views.py
1
0.0
0.0% kobo/apps/long_running_migrations/jobs/0028_sync_mongo_root_uuid.py
1
0.0
-100.0% kobo/apps/openrosa/apps/logger/constants.py
1
92.31
-7.69% kobo/apps/user_reports/utils/migrations.py
1
72.73
-4.55% kpi/urls/__init__.py
Jobs
ID Job ID Ran Files Coverage
1 30269159095.1 27 Jul 2026 01:16PM UTC 888
44.28
2 30269159095.2 27 Jul 2026 01:17PM UTC 888
49.48
3 30269159095.3 27 Jul 2026 01:18PM UTC 888
52.79
4 30269159095.4 27 Jul 2026 01:18PM UTC 890
50.81
5 30269159095.5 27 Jul 2026 01:18PM UTC 890
45.64
6 30269159095.6 27 Jul 2026 01:19PM UTC 888
58.79
7 30269159095.7 27 Jul 2026 01:19PM UTC 890
66.76
8 30269159095.8 27 Jul 2026 01:20PM UTC 890
54.05
9 30269159095.9 27 Jul 2026 01:21PM UTC 890
59.94
10 30269159095.10 27 Jul 2026 01:22PM UTC 892
69.06
Source Files on build 30269159095
  • Tree
  • List 892
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 85c3218a on github
  • Prev Build on release/2.026.27 (#29867541075)
  • Next Build on release/2.026.27 (#30304356116)
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