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

kobotoolbox / kpi / 29316540845
82%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 14 Jul 2026 08:05AM UTC
Jobs 10
Files 893
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

14 Jul 2026 08:01AM UTC coverage: 81.505% (+0.02%) from 81.49%
29316540845

push

github

web-flow
fix(pairedData): return null source for deleted parent projects DEV-2034 (#7218)

### đŸ“Ŗ Summary
When a source project used for a connected (paired) dataset is deleted,
it is now clearly reported as deleted rather than still appearing as a
normal source.

### 📖 Description
Connected projects pull data from a "source" project. If that source
project was deleted, the paired-data endpoint kept listing it as if it
were a live source, which the connected-projects UI couldn't reliably
detect. The deleted source's `source` link is now returned as `null`,
giving the frontend a dependable signal.

### 💭 Notes
`paired_data` is stored as a JSON blob on the destination `Asset` keyed
by source uid, with **no cascading FK**, so deleting a source asset
leaves a dangling reference (DEV-2034).
`PairedDataSerializer.to_representation` now emits `source: null` when
the source Asset row no longer exists, detected by reusing the
`source__names` mapping the viewset already builds (uid absent ⇒ row
deleted) — no extra query on the list endpoint, with a direct
`.exists()` fallback when context is absent. Runtime-only change: no
OpenAPI schema drift, no migration.

### 👀 Preview steps
1. â„šī¸ have an account with two projects; enable data sharing on project
**A** (the source).
2. Connect project **B** to **A** (paired data) and `GET
/api/v2/assets/<B_uid>/paired-data/`.
3. Delete project **A**.
4. `GET /api/v2/assets/<B_uid>/paired-data/` again.
5. 🔴 [on main] the deleted source still appears with a populated
`"source"` URL (only `"source__name"` is null).
6. đŸŸĸ [on PR] that entry's `"source"` is `null`.

9329 of 12655 branches covered (73.72%)

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

237 existing lines in 5 files now uncovered.

30346 of 37232 relevant lines covered (81.51%)

5.52 hits per line

Uncovered Changes

Lines Coverage ∆ File
8
26.89
0.04% kpi/serializers/v2/paired_data.py

Coverage Regressions

Lines Coverage ∆ File
96
78.35
0.06% kpi/models/import_export_task.py
55
36.52
-0.69% kpi/serializers/current_user.py
50
78.38
0.0% kobo/settings/base.py
24
74.76
-23.3% kpi/utils/usage_calculator.py
12
50.0
-50.0% hub/admin/sitewide_message.py
Jobs
ID Job ID Ran Files Coverage
1 29316540845.1 14 Jul 2026 08:05AM UTC 889
49.6
2 29316540845.2 14 Jul 2026 08:05AM UTC 889
44.44
3 29316540845.3 14 Jul 2026 08:06AM UTC 889
52.95
4 29316540845.4 14 Jul 2026 08:06AM UTC 891
45.8
5 29316540845.5 14 Jul 2026 08:07AM UTC 891
54.21
6 29316540845.6 14 Jul 2026 08:08AM UTC 889
59.0
7 29316540845.7 14 Jul 2026 08:10AM UTC 891
50.94
8 29316540845.8 14 Jul 2026 08:10AM UTC 891
60.16
9 29316540845.9 14 Jul 2026 08:10AM UTC 891
66.77
10 29316540845.10 14 Jul 2026 08:10AM UTC 893
69.07
Source Files on build 29316540845
  • Tree
  • List 893
  • Changed 7
  • Source Changed 0
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 9002e866 on github
  • Prev Build on main (#29108135139)
  • Next Build on main (#29334126027)
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