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

kobotoolbox / kpi / 31119557255
59%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 06 Aug 2026 04:27PM UTC
Jobs 2
Files 891
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

06 Aug 2026 04:21PM UTC coverage: 59.45% (-22.6%) from 82.085%
31119557255

push

github

web-flow
fix(formbuilder): crash with unsupported type DEV-2616 (#7392)

### 📣 Summary

Fixed Form Builder failing to open forms that contain question types it
can't edit, and no longer dropping those questions when the form is
saved.

### 📖 Description

Some valid XLSForm question types have no editor in Form Builder.
Opening such a form used to break the editor, and saving it - silently
deleted the question.

Now those questions show up as a card explaining that they can't be
edited here and will be left alone when you save. The rest of the form
works normally. Affected types include `select_one_external`, `email`,
`osm`, `percentage`, `phone number`, `number of days in last month`/`six
months`/`year`, `q select`, `q select1`, and the `uri:*` metadata types.

A card:

<img width="1056" height="315" alt="Screenshot 2026-08-05 at 16 16 51"
src="https://github.com/user-attachments/assets/4080a91f-2a7b-41e7-9d79-61a315b6b547"
/>

### 💭 Notes

Changes here:

- **`model.configs.coffee`** — registered 16 types in `lookupRowType`
with `supportedByUI: false`
- **`model.row.coffee`**
- `processType` now checks the whole type value against the registry
before splitting on spaces. Six of the new types contain spaces, so
`"phone number"` was being read as type `phone` + choice list `number`.
That's why they were never found, and it also stuck a bogus `listName`
on the row.
- `toJSON2` splits `select_one_external` back into `type` +
`select_from_list_name`, since the constructor merges them. Unlike
`select_one` it can legitimately have no list name, so we don't invent
an empty one.
- **`view.row.coffee`**
- `_renderRow` branches on the new `hiddenInUI` flag:
`background-geopoint` stays invisible as before, everything else gets
the notice card.
- `applyLocking` bails when there's no `@$card` (both implementations).
Error rows render no card, and `RowView.initialize` binds this to every
survey `change` event, so it was guaranteed to throw.
- **`view.row.templates.coffee` / ... (continued)

6065 of 12733 branches covered (47.63%)

22368 of 37625 relevant lines covered (59.45%)

1.02 hits per line

Coverage Regressions

Lines Coverage ∆ File
312
0.0
-91.23% kobo/apps/openrosa/apps/viewer/pandas_mongo_bridge.py
270
41.76
-44.93% 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
93
42.11
-48.95% kobo/apps/openrosa/apps/api/viewsets/xform_list_api.py
87
0.0
-87.88% kobo/apps/openrosa/libs/utils/backup_tools.py
81
0.0
-93.1% kobo/apps/stripe/serializers.py
75
0.0
-41.9% kobo/apps/stripe/views.py
66
33.33
-59.46% kobo/apps/openrosa/apps/viewer/views.py
64
27.2
-51.2% kobo/apps/stripe/utils/subscription_limits.py
63
34.58
-58.88% kobo/apps/openrosa/apps/api/viewsets/briefcase_api.py
63
40.48
-50.0% kobo/apps/openrosa/apps/logger/signals.py
63
0.0
-51.64% kobo/apps/stripe/models.py
59
48.31
-50.0% kobo/apps/openrosa/apps/api/viewsets/xform_submission_api.py
58
0.0
-90.63% kobo/apps/openrosa/libs/data/query.py
52
57.0
-26.0% kpi/utils/xml.py
50
0.0
-47.17% 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
43
46.1
-15.99% kobo/apps/openrosa/apps/viewer/models/data_dictionary.py
41
40.69
-6.75% kpi/deployment_backends/openrosa_backend.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
38
24.14
-32.76% kobo/apps/openrosa/apps/viewer/tasks.py
37
51.22
-45.12% kobo/apps/openrosa/libs/serializers/xform_serializer.py
36
24.49
-73.47% kobo/apps/openrosa/apps/logger/import_tools.py
36
20.21
-38.3% kobo/apps/stripe/utils/billing_dates.py
34
47.87
-7.64% kobo/apps/audit_log/models.py
34
55.29
-40.0% kobo/apps/openrosa/libs/renderers/renderers.py
33
55.83
-27.5% kobo/apps/openrosa/apps/logger/models/attachment.py
33
49.02
-32.35% kobo/apps/openrosa/apps/viewer/models/export.py
32
58.33
-13.33% kobo/apps/openrosa/apps/viewer/models/parsed_instance.py
30
0.0
-75.0% kobo/apps/openrosa/apps/django_digest_backends/cache.py
28
30.14
-19.18% kobo/apps/openrosa/libs/utils/viewer_tools.py
28
28.01
-9.12% kpi/views/v2/data.py
27
34.0
-54.0% kobo/apps/data_collectors/authentication.py
27
62.73
-12.27% kpi/permissions.py
26
40.48
-15.48% kobo/apps/openrosa/apps/main/models/meta_data.py
26
27.78
-72.22% kobo/apps/openrosa/libs/utils/decorators.py
25
77.73
-9.77% kobo/apps/openrosa/apps/logger/xform_instance_parser.py
24
29.67
-26.37% kobo/apps/openrosa/libs/utils/user_auth.py
20
43.9
-48.78% kobo/apps/openrosa/libs/filters.py
19
0.0
-65.52% kobo/apps/stripe/admin.py
17
16.22
-45.95% kobo/apps/openrosa/apps/logger/utils/database_query.py
17
41.94
-54.84% kobo/apps/openrosa/libs/authentication.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
0.0
-20.55% kobo/apps/stripe/signals.py
15
69.76
-7.32% kpi/utils/mongo_helper.py
15
64.76
-14.29% kpi/utils/object_permission.py
14
75.38
-7.18% kobo/apps/openrosa/apps/logger/models/instance.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
13
75.39
-6.81% kobo/apps/openrosa/apps/logger/models/xform.py
13
52.56
-16.67% kpi/authentication.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
11
63.57
-7.86% kobo/apps/audit_log/signals.py
11
45.16
-17.74% kpi/views/v2/attachment.py
10
30.12
-12.05% kpi/utils/storage.py
9
56.84
-9.47% kobo/apps/openrosa/libs/utils/middleware.py
9
0.0
-29.03% kobo/apps/stripe/utils/manual_subscription.py
9
41.18
-52.94% kpi/utils/viewset_mixins.py
8
0.0
-100.0% kobo/apps/stripe/urls.py
7
30.56
-6.48% kobo/apps/openrosa/apps/api/tools.py
7
31.25
-43.75% kobo/apps/openrosa/libs/utils/string.py
7
0.0
-100.0% kobo/apps/stripe/apps.py
7
65.19
-1.73% kpi/deployment_backends/base_backend.py
6
83.05
-10.17% kobo/apps/openrosa/apps/logger/exceptions.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
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
66.67
-33.33% kobo/apps/openrosa/apps/viewer/signals.py
5
50.0
-50.0% kobo/apps/openrosa/libs/mixins/openrosa_headers_mixin.py
5
40.0
-50.0% kpi/utils/fuzzy_int.py
4
45.45
-36.36% kobo/apps/openrosa/koboform/__init__.py
4
0.0
-100.0% kobo/apps/openrosa/libs/utils/storage.py
3
60.0
-30.0% kobo/apps/openrosa/libs/serializers/data_serializer.py
3
31.43
-2.86% kobo/apps/organizations/admin/organization.py
3
61.68
-1.8% kobo/apps/organizations/models.py
3
60.53
-7.89% kobo/apps/organizations/utils.py
3
60.0
-30.0% kpi/mixins/mfa.py
2
83.33
-6.67% kobo/urls.py
2
91.33
-0.35% kpi/models/asset.py
1
78.57
-1.19% kobo/apps/audit_log/base_views.py
1
75.0
-25.0% kobo/apps/audit_log/mixins.py
1
92.86
-3.57% kobo/apps/audit_log/utils.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
52.09
-0.47% kpi/renderers.py
1
72.73
-4.55% kpi/urls/__init__.py
1
75.0
-6.25% kpi/utils/drf_exceptions.py
Jobs
ID Job ID Ran Files Coverage
1 31119557255.1 06 Aug 2026 04:27PM UTC 891
52.77
2 31119557255.2 06 Aug 2026 04:31PM UTC 891
49.44
Source Files on build 31119557255
  • Tree
  • List 891
  • Changed 298
  • Source Changed 0
  • Coverage Changed 298
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • b5b2946c on github
  • Prev Build on main (#31093117783)
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