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

kobotoolbox / kpi / 22778573038 / 2
82%
master: 76%

Build:
Build:
LAST BUILD BRANCH: dev-2002-mock-storage
DEFAULT BRANCH: master
Ran 06 Mar 2026 08:05PM UTC
Files 894
Run time 30s
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 Mar 2026 07:24PM UTC coverage: 82.094% (+2.3%) from 79.811%
22778573038.2

push

github

web-flow
feat(metadata): add `ExtraProjectMetadataField` model DEV-1523 (#6789)

### đŸ—’ī¸ Checklist

1. [X] run linter locally
2. [X] update developer docs (API, README, inline, etc.), if any
3. [X] for user-facing doc changes create a Zulip thread at `#Support
Docs Updates`, if any
4. [X] draft PR with a title `<type>(<scope>)<!>: <title> DEV-1234`
5. [X] assign yourself, tag PR: at least `Front end` and/or `Back end`
or `workflow`
6. [X] fill in the template below and delete template comments
7. [X] review thyself: read the diff and repro the preview as written
8. [X] open PR & confirm that CI passes & request reviewers, if needed
9. [ ] delete this section before merging

### đŸ“Ŗ Summary
Add the `ExtraProjectMetadataField` model to support customizable
project metadata on private servers.

### 👀 Preview steps
There are no changes visible in the UI, validate these changes through
creating a model in the shell.

2. â„šī¸ Run migrations: `python manage.py migrate kpi`
3. Open the Django shell
5. đŸŸĸ [on PR] Test a successful creation of the model:
```
from kpi.models import ExtraProjectMetadataField
field = ExtraProjectMetadataField(
    name="donor_id", 
    type="text", 
    label={"default": "Donor ID"}
)
field.full_clean()
field.save()
print(f"Created: {field.name}")
```
7. Test validation failure:
```
try:
    bad_field = ExtraProjectMetadataField(name="sector", type="single_select")
    bad_field.full_clean() # This triggers the clean() method
except Exception as e:
    print(f"Caught expected error: {e}")
```
8. đŸŸĸ Should output this error: `{'options': ['Options are required for
select fields.']}`

7585 of 11686 branches covered (64.91%)

28912 of 35218 relevant lines covered (82.09%)

0.82 hits per line

Source Files on job 22778573038.2
  • Tree
  • List 894
  • Changed 35
  • Source Changed 0
  • Coverage Changed 35
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 22778573038
  • 4d94f62e on github
  • Prev Job for on main (#22776046063.1)
  • Next Job for on main (#22778670892.1)
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