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

kobotoolbox / kpi / 27346550148
81%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 11 Jun 2026 12:29PM UTC
Jobs 10
Files 914
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

11 Jun 2026 12:24PM UTC coverage: 82.008% (-0.003%) from 82.011%
27346550148

push

github

web-flow
fix(assets): fix deletion of projects with long names DEV-2248 (#7147)

### 📣 Summary
Fixes a bug that was causing errors when users tried to delete a project
with a particularly long name.

### Notes
Also preemptively handles long attachment names, even though those have
not yet caused an issue.


### 👀 Preview steps
Make sure to restart the kpi_worker after switching branches

1. ℹ️ have an account 
2. Create a project with a name >= 200 characters (eg `P2.1.4_Nombre
d'infrastructures ou d'installations réhabilitées, améliorées ou
construites avec le soutien de l'intervention financée par l'UE, ventilé
par type de soutien, ventilé par typologie`)
3. Delete the project
4. 🔴 [on main] 500 error
5. 🟢 [on PR] Project is successfully deleted

9244 of 12481 branches covered (74.06%)

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

5313 existing lines in 186 files now uncovered.

30520 of 37216 relevant lines covered (82.01%)

5.72 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
58.21
-13.88% kobo/apps/trash_bin/utils/trash.py

Coverage Regressions

Lines Coverage ∆ File
321
0.0
-90.68% kobo/apps/openrosa/apps/viewer/pandas_mongo_bridge.py
232
44.14
-42.49% kobo/apps/openrosa/libs/utils/logger_tools.py
215
18.97
-52.96% kobo/apps/openrosa/libs/utils/export_tools.py
209
31.18
-58.71% kpi/serializers/v2/asset_permission_assignment.py
206
0.0
-86.19% kobo/apps/openrosa/libs/utils/briefcase_client.py
167
46.79
-27.51% kpi/deployment_backends/openrosa_backend.py
146
70.05
-23.9% kpi/serializers/v2/asset.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
58.5
-29.74% kpi/views/v2/data.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
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
73
68.65
-19.73% kpi/views/v2/asset.py
72
60.5
-36.0% kpi/utils/xml.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
66
31.62
-56.41% kpi/serializers/v2/export_task.py
66
26.85
-61.11% kpi/serializers/v2/paired_data.py
65
26.05
-54.62% kobo/apps/stripe/utils/subscription_limits.py
63
0.0
-51.64% kobo/apps/stripe/models.py
63
34.55
-57.27% kpi/views/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
52
34.81
-32.91% kobo/apps/openrosa/apps/api/viewsets/xform_viewset.py
52
36.61
-46.43% kobo/apps/openrosa/apps/logger/utils/instance.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
40.0
-51.58% kpi/views/environment.py
46
54.92
-37.7% kobo/apps/openrosa/libs/serializers/xform_serializer.py
46
70.97
-11.41% kpi/deployment_backends/base_backend.py
46
50.7
-21.4% kpi/renderers.py
44
20.21
-46.81% kobo/apps/stripe/utils/billing_dates.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
40
0.0
-40.82% kobo/apps/openrosa/apps/viewer/xls_writer.py
40
55.23
-23.26% kpi/serializers/current_user.py
39
23.08
-30.0% kobo/apps/openrosa/apps/viewer/tasks.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
36
47.5
-30.0% kobo/apps/project_views/views.py
33
49.51
-32.04% kobo/apps/openrosa/apps/viewer/models/export.py
33
66.4
-26.4% kpi/models/paired_data.py
32
34.67
-21.33% kobo/apps/project_ownership/utils.py
32
50.75
-47.76% kpi/views/v2/asset_export_settings.py
31
40.48
-18.45% kobo/apps/openrosa/apps/main/models/meta_data.py
30
0.0
-75.0% kobo/apps/openrosa/apps/django_digest_backends/cache.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
27.5
-65.0% kpi/serializers/v2/attachment_delete.py
26
55.56
-19.26% kpi/views/v2/asset_snapshot.py
25
31.11
-55.56% kpi/serializers/v2/data.py
25
74.76
-24.27% kpi/utils/usage_calculator.py
24
81.2
-3.99% kpi/models/import_export_task.py
24
71.43
-28.57% kpi/serializers/v2/service_usage.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
62.82
-29.49% kpi/authentication.py
23
40.48
-54.76% kpi/serializers/v2/deployment.py
21
77.61
-10.45% kobo/apps/project_ownership/models/transfer.py
21
0.0
-84.0% kobo/apps/stripe/signals.py
21
38.33
-35.0% kpi/serializers/v2/asset_export_settings.py
20
16.22
-54.05% kobo/apps/openrosa/apps/logger/utils/database_query.py
20
29.67
-21.98% kobo/apps/openrosa/libs/utils/user_auth.py
19
51.22
-23.17% kobo/apps/accounts/mfa/views.py
19
0.0
-65.52% kobo/apps/stripe/admin.py
19
58.21
-13.88% kobo/apps/trash_bin/utils/trash.py
19
38.24
-55.88% kpi/parsers.py
19
33.33
-63.33% kpi/utils/paired_data.py
19
51.06
-40.43% kpi/views/v2/import_task.py
18
87.79
-8.45% kpi/permissions.py
17
81.25
-6.64% kobo/apps/openrosa/apps/logger/xform_instance_parser.py
17
42.5
-42.5% kpi/views/__init__.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
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
13
75.39
-6.81% kobo/apps/openrosa/apps/logger/models/xform.py
13
27.87
-10.66% kobo/apps/project_ownership/tasks.py
13
40.0
-43.33% kpi/serializers/v2/asset_counts.py
13
75.12
-6.34% kpi/utils/mongo_helper.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
30.12
-14.46% kpi/utils/storage.py
11
62.5
-34.38% kobo/apps/openrosa/apps/api/viewsets/attachment_viewset.py
11
46.44
-4.6% kobo/apps/subsequences/models.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
40.33
-4.12% kobo/apps/subsequences/actions/base.py
10
33.33
-37.04% kpi/mixins/audio_transcoding.py
9
41.0
-9.0% 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
57.45
-9.57% kobo/apps/openrosa/libs/utils/middleware.py
9
0.0
-29.03% kobo/apps/stripe/utils/manual_subscription.py
9
47.73
-20.45% kobo/apps/trash_bin/models/attachment.py
8
0.0
-100.0% kobo/apps/stripe/urls.py
7
31.25
-43.75% kobo/apps/openrosa/libs/utils/string.py
7
81.08
-18.92% kobo/apps/project_views/serializers.py
7
0.0
-100.0% kobo/apps/stripe/apps.py
7
22.35
-8.24% kobo/apps/subsequences/actions/mixins.py
7
75.0
-25.0% kobo/apps/subsequences/utils/supplement_data.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
80.0
-20.0% kpi/serializers/v2/tag.py
6
76.47
-17.65% kpi/utils/rename_xls_sheet.py
6
64.29
-14.29% kpi/utils/urls.py
5
66.18
-1.21% kobo/apps/audit_log/models.py
5
84.21
-8.77% 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
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
86.67
-4.76% kpi/utils/object_permission.py
5
76.0
-20.0% kpi/views/v2/asset_submission_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
61.21
-2.42% kobo/apps/organizations/models.py
4
80.95
-19.05% kobo/apps/trash_bin/utils/signals.py
4
95.1
-3.92% kpi/models/asset_file.py
4
92.62
-0.7% kpi/models/asset.py
4
85.34
-3.45% kpi/models/asset_snapshot.py
4
75.94
-3.01% kpi/paginators.py
4
20.0
-80.0% kpi/utils/placeholders.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
31.43
-2.86% kobo/apps/organizations/admin/organization.py
3
60.53
-7.89% kobo/apps/organizations/utils.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
72.06
-1.47% 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
82.14
-7.14% kobo/urls.py
2
85.71
-9.52% kpi/fields/writable_json.py
2
80.0
-20.0% kpi/mixins/mfa.py
2
94.43
-0.56% kpi/mixins/object_permission.py
2
96.3
-3.7% kpi/mixins/xls_exportable.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
63.64
-9.09% 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
92.31
-7.69% kobo/apps/user_reports/utils/migrations.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
75.0
-8.33% kpi/mixins/validation_password_permission.py
1
75.0
-4.17% kpi/urls/__init__.py
1
62.5
-12.5% kpi/utils/datetime.py
1
93.94
-1.01% kpi/utils/django_orm_helper.py
1
50.0
-50.0% kpi/utils/export_task.py
1
78.57
-0.89% kpi/utils/models.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 27346550148.1 11 Jun 2026 12:29PM UTC 910
51.92
2 27346550148.2 11 Jun 2026 12:30PM UTC 910
53.54
3 27346550148.3 11 Jun 2026 12:31PM UTC 910
52.16
4 27346550148.4 11 Jun 2026 12:31PM UTC 912
54.8
5 27346550148.5 11 Jun 2026 12:31PM UTC 912
66.06
6 27346550148.6 11 Jun 2026 12:31PM UTC 912
53.15
7 27346550148.7 11 Jun 2026 12:32PM UTC 910
59.4
8 27346550148.8 11 Jun 2026 12:33PM UTC 912
53.5
9 27346550148.9 11 Jun 2026 12:33PM UTC 912
60.54
10 27346550148.10 11 Jun 2026 12:35PM UTC 914
68.36
Source Files on build 27346550148
  • Tree
  • List 914
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 7947f915 on github
  • Prev Build on release/2.026.21 (#27281475952)
  • Next Build on release/2.026.21 (#27381181525)
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