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

akvo / akvo-mis / #876
89%
main: 89%

Build:
Build:
LAST BUILD BRANCH: epic/dashboard-visualization
DEFAULT BRANCH: main
Ran 21 Aug 2026 06:56AM UTC
Jobs 1
Files 117
Run time 1min
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

21 Aug 2026 06:31AM UTC coverage: 89.492% (+0.07%) from 89.424%
#876

Pull #322

coveralls-python

zuhdil
[#307] Document the barrier-independence exception and tighten one serializer

Follow-ups from the whole-branch review of the visualization endpoint
hardening slice (Approve with follow-ups, no Critical findings), plus
the cuts an over-engineering pass turned up in the same files.

- Record on `latest_monitoring_subquery` and `get_base_monitoring_qs`
  (functions.py) that the latest-mode subquery is deliberately
  unscoped, why, and that the `latest_id` values it produces carry
  the parent form's tenancy rather than their own. Trade-off worth
  naming explicitly: `values_functions.py` relies on barrier one
  staying intact for this reason, unlike `escalation_functions.py`
  and `progress_functions.py`, which re-scope every downstream lookup
  independently. Not a fix — the design doc's closing path (add
  `user` to the subquery and scope three call sites) stays deferred,
  since it is provably safe but out of scope for this wave.
- Qualify the design doc's "the two barriers are independent by
  construction" claim with this same exception, note it only applies
  to the three endpoints that have a second barrier at all, add the
  missing `question_date` residual, and record that `/monitoring-stats`
  now 404s instead of returning `200 []` for an out-of-family
  `question_id` (unreachable from the frontend, which always supplies
  an in-family id).
- Comment `VALID_VALUES_CRITERIA_TYPES` (constants.py) to record that
  excluding `overdue` is load-bearing: the values criteria splitter
  keeps only the first question id per criterion, which `overdue`'s
  two-id shape would silently defeat.
- Make `ValuesFilterSerializer.validate()` fail when constructed
  without a user in context, instead of quietly scoping every lookup
  to `tenant IS NULL` through `for_user(None)`. Reading
  `self.context["user"]` directly is the whole fix: the subscript
  raises by itself, which is already how `EscalationFilterSerializer`
  and `ProgressFilterSerializer` fail on a mi... (continued)
Pull Request #322: [#307] Harden the visualization endpoints

6221 of 7165 branches covered (86.82%)

Branch coverage included in aggregate %.

11859 of 13038 relevant lines covered (90.96%)

0.91 hits per line

Coverage Regressions

Lines Coverage ∆ File
33
88.99
0.0% api/v1/v1_visualization/values_functions.py
18
88.89
0.27% api/v1/v1_visualization/functions.py
16
92.13
4.12% api/v1/v1_visualization/dashboard_serializers.py
16
79.06
0.0% api/v1/v1_visualization/escalation_functions.py
7
93.84
0.17% api/v1/v1_visualization/views.py
4
70.86
0.0% api/v1/v1_visualization/progress_functions.py
1
95.45
-2.27% api/v1/v1_users/management/commands/fake_user_seeder.py
1
98.11
0.09% api/v1/v1_visualization/dashboard_views.py
1
94.69
-0.48% utils/custom_generator.py
Jobs
ID Job ID Ran Files Coverage
1 #876.1 21 Aug 2026 06:56AM UTC 117
89.49
Source Files on build #876
  • Tree
  • List 117
  • Changed 10
  • Source Changed 0
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Pull Request #322
  • PR Base - feature/306-dashboard-data-model (#)
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