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

kobotoolbox / kpi / 30099477289
82%
master: 76%

Build:
Build:
LAST BUILD BRANCH: hugo/dev-2567-user-reports-usage-query
DEFAULT BRANCH: master
Ran 24 Jul 2026 02:09PM UTC
Jobs 10
Files 896
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

24 Jul 2026 02:04PM UTC coverage: 81.828% (+0.04%) from 81.785%
30099477289

push

github

web-flow
fix(projectOwnership): stop false transfer failures and improve admin transfer details DEV-2080 (#7294)

### ๐Ÿ“ฃ Summary

Project ownership transfers are no longer reported as failed when the
transfer actually completed successfully.

### ๐Ÿ“– Description

Transferring projects could end as "failed" even though everything had
moved correctly โ€” a single already-deleted file among thousands was
enough. A file that no longer exists cannot be moved, so it no longer
counts as a failure, and the same now applies when an internal retry
re-runs a step that had already finished. Genuine problems are still
reported, and a new log page shows what happened for a given project.

### ๐Ÿ’ญ Notes

- `ExtendedFieldFile.move()` raises `SourceFileMissingError` when the
source is gone; the two movers skip it instead of failing. A genuine
error still fails the task.
- `TransferStatus.update_status()` makes `success` terminal, so a late
or duplicate retry cannot downgrade a finished sub-task.
- A missing source can also mean an interrupted move (file relocated,
row never saved). `_recover_moved_file()` checks the target and
completes it โ€” otherwise the record would keep pointing at a path
holding no file.
- `TransferStatusError.level` (migration `0008`) marks skips as `info`:
not counted on the invite page, not shown on the transfer page, listed
in the log admin. Indexed โ€” skips vastly outnumber errors, so filtering
on `error` is selective โ€” with the index gated on
`SKIP_HEAVY_MIGRATIONS`.
- 1000-transfer check: the invite summary stays at 2 queries, the
changelist status column at 0.

`validate_org_transfer.py` is deliberately not included; it stays a
draft.

### ๐Ÿ‘€ Preview steps

1. โ„น๏ธ have a superuser and an invite whose transfers include both a
skipped file and a genuine error
2. go to `/admin/project_ownership/invite/<id>/change/`
3. ๐Ÿ”ด [on main] every transfer is dumped inline with its statuses and up
to 100 error records
4. ๐ŸŸข [on PR] one line โ€” `N transfer(s): X failed ยท Y su... (continued)

9512 of 12833 branches covered (74.12%)

76 of 172 new or added lines in 8 files covered. (44.19%)

27 existing lines in 4 files now uncovered.

30810 of 37652 relevant lines covered (81.83%)

5.51 hits per line

Uncovered Changes

Lines Coverage โˆ† File
60
48.95
6.09% kobo/apps/project_ownership/admin.py
32
31.03
-3.63% kobo/apps/project_ownership/utils.py
3
77.67
0.06% kobo/apps/project_ownership/models/transfer.py
1
84.91
9.35% kpi/fields/file.py

Coverage Regressions

Lines Coverage โˆ† File
24
74.76
-23.3% kpi/utils/usage_calculator.py
1
48.95
6.09% kobo/apps/project_ownership/admin.py
1
31.03
-3.63% kobo/apps/project_ownership/utils.py
1
84.91
9.35% kpi/fields/file.py
Jobs
ID Job ID Ran Files Coverage
1 30099477289.1 24 Jul 2026 02:09PM UTC 892
49.35
2 30099477289.2 24 Jul 2026 02:09PM UTC 892
44.25
3 30099477289.3 24 Jul 2026 02:09PM UTC 892
52.8
4 30099477289.4 24 Jul 2026 02:10PM UTC 894
50.67
5 30099477289.5 24 Jul 2026 02:11PM UTC 892
58.95
6 30099477289.6 24 Jul 2026 02:12PM UTC 894
54.06
7 30099477289.7 24 Jul 2026 02:13PM UTC 894
67.07
8 30099477289.8 24 Jul 2026 02:13PM UTC 894
45.6
9 30099477289.9 24 Jul 2026 02:15PM UTC 894
60.11
10 30099477289.10 24 Jul 2026 02:16PM UTC 896
69.44
Source Files on build 30099477289
  • Tree
  • List 896
  • Changed 8
  • Source Changed 0
  • Coverage Changed 8
Coverage โˆ† File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 3e908fc5 on github
  • Prev Build on main (#30098672441)
  • Next Build on main (#30120365203)
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