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

kobotoolbox / kpi / 35683354380
83%
master: 76%

Build:
Build:
LAST BUILD BRANCH: guitlle/dev-180-openid-logout
DEFAULT BRANCH: master
Ran 22 Sep 2026 03:34AM UTC
Jobs 10
Files 907
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

22 Sep 2026 03:29AM UTC coverage: 82.845% (+0.005%) from 82.84%
35683354380

push

github

web-flow
fix(exports): include submissions in XLS (legacy) exports of transferred projects DEV-2862 (#7623)

### đŸ“Ŗ Summary
XLS (legacy) exports are no longer empty for projects that were
transferred to another owner.

### 📖 Description
Once a project had been transferred to another account, its XLS (legacy)
export came out with the column headers and no submissions. The table
view and the CSV (legacy) export still showed everything. Projects that
moved to an organization when their owner joined it were affected too,
since that is also a transfer. The export now contains the submissions
again.

### 💭 Notes
- A transfer gives the XForm a `mongo_uuid` and rewrites `_userform_id`
on every MongoDB document to it (`rewrite_mongo_userform_id`). Readers
get the right id from `get_mongo_userform_id()`.
`export_tools.query_mongo` was the one place still building
`{username}_{id_string}` by hand, so after a transfer it matched nothing
and the workbook was saved with headers only, as a successful export.
- CSV (legacy) was fine because `to_flat_csv_export` ignores that cursor
and queries again through `ParsedInstance`, which already uses the
helper.
- `query_mongo` now takes the `xform` that `generate_export`, its only
caller, has already loaded, so it costs no extra query. For projects
that were never transferred the query string is the same as before.
- The new test puts the XForm and MongoDB in the state
`test_mongo_uuid_after_transfer` asserts after a real transfer, then
exports. On `release/2.026.37` it fails with `1 != 2` (header row only).

### 👀 Preview steps
1. â„šī¸ have two accounts, and a deployed project with at least one
submission on the first one
2. as the first user, open the project, go to SETTINGS > Sharing and
transfer the project to the second user
3. log in as the second user and accept the transfer
4. open the project, go to DATA > Downloads, select "XLS (legacy)" and
click "New Export"
5. download the file once it is ready and open it
6. 🔴 [on release... (continued)

10190 of 13521 branches covered (75.36%)

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

2387 existing lines in 93 files now uncovered.

32607 of 39359 relevant lines covered (82.85%)

5.51 hits per line

Coverage Regressions

Lines Coverage ∆ File
336
25.32
-47.26% kpi/models/import_export_task.py
192
34.58
-29.91% kpi/serializers/v2/asset.py
178
61.33
-30.32% kpi/models/asset.py
97
30.58
-47.09% kobo/apps/project_ownership/models/transfer.py
80
71.12
-21.8% kpi/mixins/object_permission.py
67
31.76
-45.27% kobo/apps/accounts/forms.py
67
25.35
-31.46% kpi/filters.py
64
12.36
-71.91% kobo/apps/reports/report_data.py
59
53.33
-14.05% kpi/deployment_backends/base_backend.py
54
35.34
-40.6% kpi/paginators.py
53
38.56
-8.66% kpi/deployment_backends/openrosa_backend.py
49
28.28
-49.49% kpi/password_validation.py
44
0.0
-67.69% kobo/apps/accounts/adapter.py
44
37.61
-37.61% kpi/models/asset_snapshot.py
41
46.29
-9.21% kobo/apps/audit_log/models.py
40
65.85
-32.52% kpi/utils/usage_calculator.py
39
35.2
-31.2% kpi/models/paired_data.py
38
34.52
-45.24% kobo/apps/audit_log/base_views.py
38
41.18
-27.94% kpi/utils/autoname.py
32
53.57
-16.33% kpi/mixins/formpack_xlsform_utils.py
32
53.92
-31.37% kpi/models/asset_file.py
31
62.63
-31.31% kpi/utils/django_orm_helper.py
29
47.89
-40.85% kpi/utils/hash.py
27
15.52
-15.52% kobo/apps/project_ownership/utils.py
27
33.96
-50.94% kpi/fields/file.py
24
40.0
-53.33% kpi/fields/jsonschema_form_field.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
20
53.13
-31.25% hub/models/extra_user_detail.py
20
0.0
-68.97% kobo/apps/audit_log/tasks.py
19
63.83
-13.48% kobo/apps/stripe/utils/subscription_limits.py
19
58.18
-34.55% kpi/signals.py
18
37.84
-48.65% kpi/serializers/v2/create_user.py
17
39.73
-7.76% kobo/apps/organizations/views.py
17
77.53
-19.1% kpi/deployment_backends/mock_backend.py
16
60.0
-11.43% kobo/apps/audit_log/signals.py
14
37.14
-20.0% hub/utils/i18n.py
13
26.09
-56.52% kpi/fields/relative_prefix_hyperlinked_related.py
13
47.13
-14.94% kpi/tasks.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
10
59.42
-14.49% kobo/apps/accounts/models.py
10
60.71
-35.71% kobo/apps/audit_log/utils.py
10
20.55
-13.7% kobo/apps/stripe/signals.py
10
14.8
-5.1% kobo/apps/subsequences/utils/versioning.py
9
35.29
-52.94% kpi/serializers/v1/authorized_application_user.py
8
56.57
-8.08% kobo/apps/stripe/utils/billing_dates.py
7
61.76
-20.59% kobo/apps/storage_backends/base.py
7
32.14
-25.0% kobo/apps/subsequences/utils/supplement_data.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
6
30.38
-7.59% kobo/apps/accounts/utils.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
5
41.79
-7.46% kobo/apps/accounts/signals.py
5
58.38
-2.7% kobo/apps/organizations/models.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
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
4
53.85
-30.77% kobo/apps/accounts/templatetags/customize_email_content.py
4
77.5
-10.0% kobo/apps/kobo_auth/signals.py
4
57.89
-10.53% kobo/apps/organizations/utils.py
4
89.47
-7.02% kpi/deployment_backends/mixin.py
4
33.33
-66.67% kpi/utils/chunked_delete.py
3
65.79
-7.89% kobo/apps/data_collectors/signals.py
3
89.19
-8.11% kobo/apps/project_views/models/project_view.py
2
70.83
-1.67% kobo/apps/openrosa/libs/utils/middleware.py
2
91.3
-8.7% kobo/apps/project_ownership/views/invite.py
2
83.33
-6.67% kobo/urls.py
2
87.2
-1.6% 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
1
44.44
-5.56% kobo/apps/accounts/templatetags/get_provider_appname.py
1
86.11
-2.78% kobo/apps/openrosa/apps/logger/fields.py
1
67.95
-1.28% kpi/authentication.py
1
57.89
-2.63% kpi/db_routers.py
Jobs
ID Job ID Ran Files Coverage
1 35683354380.1 22 Sep 2026 03:34AM UTC 902
49.48
2 35683354380.2 22 Sep 2026 03:35AM UTC 904
45.14
3 35683354380.3 22 Sep 2026 03:35AM UTC 902
43.85
4 35683354380.4 22 Sep 2026 03:35AM UTC 902
52.75
5 35683354380.5 22 Sep 2026 03:35AM UTC 904
50.74
6 35683354380.6 22 Sep 2026 03:36AM UTC 902
58.68
7 35683354380.7 22 Sep 2026 03:36AM UTC 904
54.0
8 35683354380.8 22 Sep 2026 03:39AM UTC 905
67.89
9 35683354380.9 22 Sep 2026 03:39AM UTC 904
59.77
10 35683354380.10 22 Sep 2026 03:42AM UTC 907
70.21
Source Files on build 35683354380
  • Tree
  • List 907
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • b090c131 on github
  • Prev Build on release/2.026.37 (#35383611718)
  • Next Build on release/2.026.37 (#35854913355)
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