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

kobotoolbox / kpi / 35693964218
83%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 22 Sep 2026 06:18AM UTC
Jobs 10
Files 909
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 06:14AM UTC coverage: 82.955% (+0.03%) from 82.93%
35693964218

push

github

web-flow
fix(usage): simplify description text in usage page DEV-2699 (#7485)



### đŸ“Ŗ Summary
Remove the dismissable banner from the usage page and have a simple
dynamic string explaining the usage page.

### 💭 Notes
Adds a `hasActivePlan` to `useBillingPeriod` hook to be destructured
where needed. This is to meet the following requirments:
>Text dynamically displays "month", "year" or "billing period" depending
on the user:
> - Free user (or Stripe not enabled) → display "month"
> - Member of a team/org whose owner is paying for an annual plan →
display "year"
> - Any paid user (i.e. they dealt with Stripe) → show "billing period"

### 👀 Preview steps
<!-- Delete this section if behavior can't change. -->
<!-- If behavior changes or merely may change, add a preview of a
minimal happy path. -->

1. â„šī¸ have an multiple accounts and a project with stripe enabled
2. create a MMO on one account with another account as a member
3. buy any plan with an account not associated with the above two
4. buy an annual plan as the MMO owner for the org
5.  đŸŸĸ On the usage page for the MMO owner it should say "year"
6.  đŸŸĸ On the usage page for the MMO member it should say "year"
7. đŸŸĸ On the usage page for a non-MMO user with any paid plan it should
say "billing period"
8.  đŸŸĸ On the usage page for a free plan user it should say "month"
9. đŸŸĸ Notice that other consumers of the `useBillingPeriod` hook still
function as intended

---------

Co-authored-by: James Kiger <68701146+jamesrkiger@users.noreply.github.com>

10253 of 13582 branches covered (75.49%)

32788 of 39525 relevant lines covered (82.96%)

5.51 hits per line

Coverage Regressions

Lines Coverage ∆ File
667
5.22
-74.11% kpi/utils/query_parser/canopy_autogenerated_parser/__init__.py
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
135
25.26
-71.05% kpi/utils/query_parser/query_parser.py
123
28.84
-33.15% kpi/views/v2/asset.py
97
30.58
-47.09% kobo/apps/project_ownership/models/transfer.py
89
30.37
-65.93% kpi/utils/mailer.py
87
39.5
-43.5% kpi/utils/xml.py
83
70.3
-22.62% kpi/mixins/object_permission.py
70
23.4
-74.47% kpi/utils/xlsform_preprocessors/kobomatrix_handler.py
67
25.35
-31.46% kpi/filters.py
64
12.36
-71.91% kobo/apps/reports/report_data.py
60
37.42
-9.8% kpi/deployment_backends/openrosa_backend.py
59
53.33
-14.05% kpi/deployment_backends/base_backend.py
57
0.0
-70.37% kobo/apps/accounts/adapter.py
54
35.34
-40.6% kpi/paginators.py
52
12.68
-73.24% kpi/utils/sluggify.py
50
27.72
-49.5% kpi/password_validation.py
47
34.56
-34.56% kpi/utils/autoname.py
46
45.17
-10.34% kobo/apps/audit_log/models.py
44
37.61
-37.61% kpi/models/asset_snapshot.py
39
20.0
-48.75% kobo/apps/accounts/signup_fields.py
39
35.2
-31.2% kpi/models/paired_data.py
38
34.52
-44.05% kobo/apps/audit_log/base_views.py
37
35.77
-30.08% kpi/utils/usage_calculator.py
35
18.75
-72.92% kpi/utils/xlsform_preprocessors/koborank_handler.py
34
39.25
-31.78% kobo/apps/accounts/forms.py
34
52.55
-17.35% kpi/mixins/formpack_xlsform_utils.py
34
37.14
-48.57% kpi/utils/cache.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
29
21.95
-70.73% kpi/utils/xlsform_preprocessors/koboscore_handler.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
26
77.37
-13.68% kobo/apps/openrosa/apps/api/viewsets/xform_list_api.py
24
40.0
-53.33% kpi/fields/jsonschema_form_field.py
23
30.77
-29.49% kpi/deployment_backends/kc_access/utils.py
23
51.06
-48.94% kpi/views/v2/authorized_application_user.py
22
44.0
-44.0% kobo/apps/data_collectors/authentication.py
22
79.66
-18.64% kobo/apps/openrosa/apps/api/viewsets/xform_submission_api.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
54.55
-38.18% kpi/signals.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
20
56.52
-28.99% hub/models/extra_user_detail.py
20
0.0
-68.97% kobo/apps/audit_log/tasks.py
18
76.4
-20.22% kpi/deployment_backends/mock_backend.py
18
37.84
-48.65% kpi/serializers/v2/create_user.py
18
37.93
-62.07% kpi/views/token.py
17
39.73
-7.76% kobo/apps/organizations/views.py
16
60.0
-11.43% kobo/apps/audit_log/signals.py
15
79.31
-17.24% kpi/utils/asset_content_analyzer.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
42.11
-31.58% kobo/apps/data_collectors/signals.py
12
43.06
-16.67% kobo/apps/project_ownership/serializers/invite.py
12
22.73
-54.55% kpi/utils/bugfix.py
11
53.51
-5.95% kobo/apps/organizations/models.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
33.33
-52.38% kpi/utils/ssrf.py
11
55.56
-40.74% kpi/utils/xlsform_preprocessors/base_handlers.py
10
55.42
-12.05% kobo/apps/accounts/models.py
10
60.71
-35.71% kobo/apps/audit_log/utils.py
10
40.0
-40.0% kobo/apps/openrosa/apps/api/utils/xml.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
47.62
-21.43% kobo/apps/markdownx_uploader/models.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
9
0.0
-90.0% kpi/utils/fuzzy_int.py
8
85.84
-1.2% kobo/apps/openrosa/libs/utils/logger_tools.py
7
67.74
-22.58% kobo/apps/data_collectors/models.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
72.38
-6.67% kpi/utils/object_permission.py
7
71.43
-20.0% kpi/utils/project_views.py
6
33.77
-7.79% kobo/apps/accounts/utils.py
6
89.02
-7.32% kobo/apps/openrosa/libs/serializers/xform_serializer.py
6
37.5
-37.5% kobo/apps/openrosa/libs/utils/string.py
6
62.5
-37.5% kobo/apps/organizations/signals.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.32
-5.36% kpi/utils/models.py
5
38.3
-5.32% kobo/apps/accounts/signals.py
5
89.41
-5.88% kobo/apps/openrosa/libs/renderers/renderers.py
5
30.0
-7.14% kobo/apps/organizations/permissions.py
5
46.34
-12.2% kobo/apps/organizations/tasks.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
53.85
-30.77% kobo/apps/accounts/templatetags/customize_email_content.py
4
77.5
-10.0% kobo/apps/kobo_auth/signals.py
4
69.17
-3.33% kobo/apps/openrosa/libs/utils/middleware.py
4
50.0
-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
4
80.0
-20.0% kpi/views/v1_api_gone.py
3
67.5
-7.5% kobo/apps/openrosa/apps/django_digest_backends/cache.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
81.54
-1.03% kobo/apps/openrosa/apps/logger/models/instance.py
2
87.8
-4.88% kobo/apps/openrosa/libs/filters.py
2
91.3
-8.7% kobo/apps/project_ownership/views/invite.py
2
83.33
-6.67% kobo/urls.py
2
86.51
-1.59% 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
92.52
-0.93% kobo/apps/openrosa/apps/api/viewsets/briefcase_api.py
1
86.11
-2.78% kobo/apps/openrosa/apps/logger/fields.py
1
88.5
-0.35% kobo/apps/openrosa/apps/logger/xform_instance_parser.py
1
85.0
-5.0% kobo/settings/utils.py
1
67.95
-1.28% kpi/authentication.py
1
57.89
-2.63% kpi/db_routers.py
1
75.0
-6.25% kpi/utils/drf_exceptions.py
Jobs
ID Job ID Ran Files Coverage
1 35693964218.1 22 Sep 2026 06:18AM UTC 904
49.36
2 35693964218.2 22 Sep 2026 06:19AM UTC 906
50.63
3 35693964218.3 22 Sep 2026 06:19AM UTC 904
52.7
4 35693964218.4 22 Sep 2026 06:20AM UTC 906
45.05
5 35693964218.5 22 Sep 2026 06:21AM UTC 906
53.96
6 35693964218.6 22 Sep 2026 06:21AM UTC 904
58.54
7 35693964218.7 22 Sep 2026 06:22AM UTC 907
68.03
8 35693964218.8 22 Sep 2026 06:22AM UTC 904
43.76
9 35693964218.9 22 Sep 2026 06:23AM UTC 909
70.39
10 35693964218.10 22 Sep 2026 06:24AM UTC 906
59.63
Source Files on build 35693964218
  • Tree
  • List 909
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • a3c4d850 on github
  • Prev Build on main (#35684197183)
  • Next Build on main (#35700270413)
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