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

akvo / akvo-mis
90%

Build:
DEFAULT BRANCH: main
Repo Added 20 Jun 2025 09:17AM UTC
Files 145
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

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • HEAD
  • develop
  • epic/452-viz-ai-dashboard-visualization-layer
  • epic/dashboard-visualization
  • epic/geoshape-capture-validation
  • epic/mobile-app-redesign
  • epic/multi-tenant-saas
  • epic/platform-admin-console
  • feat/ai-chatbot-planning
  • feature/100-do-not-refresh-the-map-layer
  • feature/105-check-questionnaires-with-akvoflow
  • feature/112-documentation-update-read-the-docs
  • feature/122-07112025_FieldTestNotes
  • feature/122-eps-construction
  • feature/122-fiji-questionnaire-digitization
  • feature/122-rural-project-form-271025
  • feature/122-update-eps
  • feature/122-wtp-wwtp-01102025
  • feature/122-wtp-wwtp-sps
  • feature/126-admin-export-registration-and-monitoring-data
  • feature/131-supports-the-minimum-of-the-selected-administration-level
  • feature/134-questionnaire-final-adjustment-and-app-update
  • feature/142-akvo-flow-form-and-data-download
  • feature/144-akvo-flow-administration-mapping
  • feature/146-akvo-flow-form-and-questions-mapping
  • feature/148-akvo-flow-data-seeding
  • feature/151-add-akvo-flow-datapoint-id-to-datapoint-name
  • feature/153-toggle-show-all-questions-in-datadetail
  • feature/155-akvo-flow-show-photo-on-report
  • feature/158-update-wwtp
  • feature/160-add-monitoring-count-column-to-the-list-of-registration
  • feature/162-fix-all-options-color-in-all-forms
  • feature/164-add-documentation-link-in-sidebar
  • feature/199-feedback-1
  • feature/199-visualization-dws-config
  • feature/203-correct-map-view-legend-color-coding-across-forms
  • feature/203-fix-manage-data-map-view-performance-issues
  • feature/207-mobile-app-fix-sync-and-add-autoupdate
  • feature/209-visualization-adjust-legend-of-map-based-on-filter
  • feature/214-issues-with-data-migrated
  • feature/216-approval-workflow-issues
  • feature/218-add-photo-galleries-to-landing-page-change-address
  • feature/220-improve-expo-sqlite-in-mobile-and-fix-sentry-issues
  • feature/224-superadmin-can-see-all-submissions
  • feature/229-fb-002-implement-backend-form-crud-api
  • feature/234-fb-004-create-form-list-management-ui
  • feature/236-fb-007-implement-form-importexport
  • feature/238-fb-009-update-permission-system
  • feature/241-remove-windowforms
  • feature/244-re-enable-bulk-upload-button-in-manage-data-page
  • feature/255-submitted-forms-persist-in-local-database
  • feature/260-selective-monitoring-form-assignment
  • feature/262-allow-empty-draft-sync
  • feature/265-migrate-seeder-forms
  • feature/267-add-monitoring-form-view-mode-to-manage-data-page
  • feature/268-free-tier-registration
  • feature/269-tenant-scoping-db
  • feature/270-tenant-isolation-read-filtering
  • feature/271-tenant-write-path
  • feature/272-level-management-crud
  • feature/273-two-phase-registration
  • feature/274-admin-bulk-upload-hardening
  • feature/275-subdomain-routing
  • feature/276-mobile-app-tenant-isolation
  • feature/277-jobs-export-download-scoping
  • feature/283-fb-014-xlsx-forms
  • feature/292-health-check-host-exemption
  • feature/294-post-mt-001-fix-few-bugs-post-tenant-epic
  • feature/295-post-mt-002-inviting-a-user-who-already-belongs-to-another-workspace-fails-with-a-raw-error
  • feature/306-dashboard-data-model
  • feature/307-visualization-endpoint-hardening
  • feature/309-dashboard-crud-api
  • feature/310-dashboard-builder-UI
  • feature/311-dashboard-publish-read-api
  • feature/313-viz-009-legacy-dashboard-removal
  • feature/316-mobile-apps-finding-managing-and-finishing-monitoring-draft
  • feature/317-move-the-dashboard-to-control-panel
  • feature/319-implement-mis-ai-support
  • feature/327-move-the-dashboard-to-control-panel
  • feature/329-bugs-mt-001-multi-tenant-regression-form-versioning
  • feature/338-mt-013-same-email-cannot-be-used-in-multiple-tenants
  • feature/342-tenant-scoped-administration-fallback
  • feature/349-viz-015-bar-chart-stacking-by-another-question
  • feature/361-embedded-dashboards
  • feature/364-scatter-plot-chart
  • feature/371-fix-line-charts-fields
  • feature/373-export-dashboard-png-pdf
  • feature/382-quantity-map-widget
  • feature/384-mobile-polygon-capture-draw-on-the-map
  • feature/392-viz-025-enable-echarts-toolbox-for-each-charts
  • feature/400-fb-015-end-user-messaging
  • feature/402-geo-005-extend-the-datapoint-list-with-geometry-bounding-box
  • feature/406-geo-009-geoconfig-authoring-ui
  • feature/407-bug-mobile-forms-not-loading-for-majuro-water
  • feature/408-line-chart-administration-grouping
  • feature/427-viz-026-backend-autofield-engine-mixed-value-detection
  • feature/429-viz-026-frontend-dashboard-builder-ui-integration
  • feature/431-chart-axis-labels
  • feature/434-geo-002-and-geo-003-polygon-shape-validation
  • feature/435-viz-026-end-to-end-verification-edge-cases-documentation-alignment
  • feature/438-geoconfig-persistence-tests
  • feature/441-geo-004-capture-walk-the-boundary-gps
  • feature/445-platform-workspace-backend
  • feature/446-platform-workspace-frontend
  • feature/447-tenant-inspection-and-switching
  • feature/449-duplicate-widget
  • feature/452-viz-ai-dashboard-visualization-layer
  • feature/455-polygon-overlap-detection
  • feature/457-viz-ai-002-backend-ai-recommendation-engine-suggestion-endpoints
  • feature/459-allowing-the-super-admin-to-view-drafts
  • feature/464-viz-ai-003-frontend-dashboard-ai-integration
  • feature/465-overlap-map-review-screen
  • feature/468-mobile-design-tokens-theme
  • feature/496-make-required-default-selected-in-form-editor
  • feature/500-onboarding-language-selector
  • feature/502-data-export-question-order
  • feature/68-visualization-api
  • feature/70-eng-1233-add-attachment-to-batches
  • feature/74-eng-1560-bug-fixing-mobile-n-submissions
  • feature/75-eng-1330-submission-submission-draft-sync
  • feature/80-eng-1337-admin-report-generation
  • feature/85-batch-submission-line-chart-in-approval-showing-temporal-data
  • feature/87-eng-1335-manage-data-maps
  • feature/89-fix-seeder-complete-seeder
  • feature/89-improve-form-assignments
  • feature/89-tenant-aware-seeders
  • feature/89-tenant-aware-user-org-seeders
  • feature/89-test-seeder-complete-seeder
  • feature/92-rename-monitoring-data-stats
  • feature/94-forms-merge-eps-forms
  • feature/95-maps-api-to-display-form-data-values-on-maps
  • feature/99-rbac-for-users-management
  • feature/viz-010-public-dashboards
  • feature/viz-027-chart-axis-labels
  • fix/369-bug-dashboard-table-columns-save-without-key-then-render-blank
  • fix/395-bug-viz-filter-issues-for-public-dashboard
  • fix/403-take-user-to-list-page-after-deletion
  • fix/console-login-and-invite-session
  • fix/platform-admin-invite-and-reset
  • hotfix/347-default-filters-issues
  • hotfix/362-blank-dashboard-bug
  • hotfix/378-embed-snippet-sizing
  • hotfix/386-email-send-observability
  • hotfix/386-smtp-mail-migration
  • hotfix/393-line-widget-bug
  • hotfix/396-center-map-based-on-data
  • hotfix/cross-tenant-user-form-assignment
  • main
  • origin/feature/134-dependency-rule
  • tenant/301-mohhs-mis-merge-main
  • tenant/mohhs-mis
  • tenant/unicef-fsm

03 Oct 2026 10:55PM UTC coverage: 90.397% (-0.004%) from 90.401%
#1337

push

coveralls-python

web-flow
Fix platform console sign-in and invitation sessions (#506)

* Authenticate only tenant-less accounts on the platform console

The console resolves no tenant, so `login` called `authenticate` with
`tenant=None`. `TenantAwareBackend` reads a null tenant as "no tenant
context" and falls back to walking every account with that email
address, in whatever order the database returns them, returning the
first whose password matches.

An operator who also holds a workspace account under the same address,
having reused its password when accepting the invitation, was therefore
handed the workspace row -- that account predates the invitation and so
comes first -- and was then refused by the operator check with "Sign in
at your workspace address, not the main site". The invite flow permits
the pair: `OperatorInviteSerializer` refuses a second tenant-less
account, not a workspace one. Reported from a deployment where the
invited operator was an existing workspace user; it cannot reproduce
with operators whose addresses are unique to the console.

A null tenant means two different things to that backend, and only one
of them is "search everywhere". On the console it is a requirement
rather than an absence: an operator belongs to no workspace.
`tenant_less_only` says so at the call site instead of leaving the
backend to infer it. The operator check downstream can only refuse a
wrong row; it cannot pick the right one.

Preferred over merely ordering tenant-less rows first, which would also
have fixed the shadowing. Ordering leaves the console's login form
checking a submitted password against every workspace in the install,
which is a cross-workspace credential test no amount of row ordering
removes.

The trade-off is a changed answer for a workspace account typed into
the console: 401 and the generic credentials failure, where it used to
be 400 and the base domain's message, because it now matches no row
here and never reaches the operator check. The oracle that mes... (continued)

8169 of 9283 branches covered (88.0%)

Branch coverage included in aggregate %.

15204 of 16573 relevant lines covered (91.74%)

0.92 hits per line

Relevant lines Covered
Build:
Build:
16573 RELEVANT LINES 15204 COVERED LINES
0.92 HITS PER LINE
Source Files on main
  • Tree
  • List 145
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
#1337 main Fix platform console sign-in and invitation sessions (#506) * Authenticate only tenant-less accounts on the platform console The console resolves no tenant, so `login` called `authenticate` with `tenant=None`. `TenantAwareBackend` reads a null t... push 03 Oct 2026 11:07PM UTC web-flow coveralls-python
90.4
#1336 fix/console-login-and-invite-session Set the session cookie when an invitation is accepted `set_user_password` assembled its own response: the serialized user and a fresh access token in the body, and no `Set-Cookie`. `AUTH_TOKEN` is the only thing the SPA bootstraps a session from,... Pull #506 03 Oct 2026 10:34PM UTC zuhdil coveralls-python
90.4
#1335 HEAD Merge d577b0492 into 858806b8d push 01 Oct 2026 11:46AM UTC web-flow coveralls-python
90.47
#1334 feature/502-data-export-question-order Merge branch 'main' into feature/502-data-export-question-order Pull #505 01 Oct 2026 11:46AM UTC web-flow coveralls-python
90.48
#1333 main [#500] feat(auth): add onboarding workspace language selector (#501) * [#500] docs(design): add MT-025 onboarding language selector feature design spec * [#500] feat(auth): add language field to tenant model and migration * [#500] feat(auth): u... push 01 Oct 2026 11:32AM UTC web-flow coveralls-python
90.4
#1332 feature/500-onboarding-language-selector [#500] feat(frontend): add French translations to uiText catalog Pull #501 01 Oct 2026 11:12AM UTC wayangalihpratama coveralls-python
90.4
#1331 HEAD Merge ec5bfc984 into d85bad6d4 push 01 Oct 2026 11:08AM UTC web-flow coveralls-python
90.4
#1330 feature/502-data-export-question-order [#502] fix(jobs): preserve question order and fix label resolution in data exports with tests Pull #505 01 Oct 2026 10:49AM UTC wayangalihpratama coveralls-python
90.46
#1329 HEAD Merge 7d7fcdf0d into d85bad6d4 push 01 Oct 2026 08:56AM UTC web-flow coveralls-python
90.41
#1328 feature/500-onboarding-language-selector [#500] fix(test): eliminate timestamp flakiness in embed dashboard rename test Pull #501 01 Oct 2026 08:56AM UTC wayangalihpratama coveralls-python
90.4
See All Builds (1336)
  • Repo on GitHub
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