Releases: kobotoolbox/kpi
2.025.43e
What's Changed
- build: use latest version of
Formpackto addbig-imagesupport DEV-1172 by @rajpatel24 in #6476 - fix(submission): fix anonymous submission failures from
KoboCollectDEV-1347 by @rajpatel24 in #6499
Full Changelog: 2.025.43d...2.025.43e
2.025.43d
What's changed
Bug Fixes (1)
- submission: handle missing xml file with digest authentication (#6428)
Prevent server errors when clients using Digest authentication send empty submission requests to the openrosa
/<username>/submissionendpoint.
Performance (2)
-
auditLogs: remove
countfrom API response (#6489)Improve audit log performance by removing the expensive count
calculation from the response.This change removes the
countfield from the audit logs API response
because calculating the total number of documents is a major bottleneck
on large datasets. The count query requires scanning the entire
collection, significantly slowing down the endpoint. Clients still
receive the paginated results as before, just without the heavy count
operation. -
make reversion_version table deletion faster (#6493)
Improve background maintenance by making cleanup of the
reversion_version table significantly faster.
Full Changelog: https://github.com/kobotoolbox/kpi/compare/2.025.43c..2.025.43d
2.025.43c
What's changed
Bug Fixes (2)
-
account: delete account button wrongly displayed (#6483)
Delete account button was wrongly being displayed on environments with
the feature being disabled. -
data table: correct order of NLP columns (#6478)
Corrects sorting of data table columns to ensure NLP/QA supplemental
data is placed after relevant questions.
Full Changelog: 2.025.43b...2.025.43c
2.025.43b
What's Changed
- feat(celery): add dedicated worker for long-running tasks by @noliveleger in #6470
- fix(api): make REST Services
settingsandsub_fieldsoptional again DEV-1288 by @noliveleger in #6480
Full Changelog: 2.025.43a...2.025.43b
2.025.37g
For more information, please see https://github.com/kobotoolbox/kpi/releases/tag/2.025.37g
What's Changed
- fix(api): make REST Services
settingsandsub_fieldsoptional again
Full Changelog: 2.025.37f...2.025.37g
2.025.43a
For more information, please see https://github.com/kobotoolbox/kpi/releases/tag/2.025.43a
What's Changed
Bug Fixes (2)
-
formbuilder: skip "add a condition" for 9 unhandled question types (#6468)
In formbuilder, hide the not working "add a condition" button for 9
affect question types - Select One, Select Many, Point, Photo, Audio,
Video, Line, Area, Acknowledge. -
formbuilder: validation criteria for Select question types (#6469)
Fix UI for the validation criteria of question types Select One and
Select Many.
Full Changelog: 2.025.43...2.025.43a
2.025.43
What's Changed
Features (23)
-
account: delete account UI (#6259)
Add option to safely and irreverseably delete account to Account
Settings → Profile. The change is hidden behind feature flag. -
account: use env flag instead of feature flag for delete account banner (#6283)
-
api: add filtering and ordering support for
/api/v2/user-reportsendpoint (#6342)Adds robust filtering and ordering capabilities to the
/api/v2/user-reportsAPI endpoint, enabling users and admins to query
large user datasets efficiently by date, usage metrics, and subscription
attributes, all backed by the optimized materialized view for scalable
performance on millions of records.This PR introduces the filtering and ordering layer for the
/api/v2/user-reportsendpoint, built on top of the existing
materialized view (user_reports_userreportsmv) that aggregates
user-level billing and usage data.Also, added targeted indexes in
0003_add_user_reports_mv_indexes.pyon
high-cardinality numeric and timestamp columns to support range queries
without full table scans.Examples of usage:
-
Filter by username (case-insensitive, starts with):
/api/v2/user-reports/?q=username__icontains:raj -
Filter by email (case-insensitive, starts with):
/api/v2/user-reports/?q=email:[email protected] -
Filter by total storage bytes (greater than or equal to):
/api/v2/user-reports/?q=service_usage__total_storage_bytes__gte:1 -
Filter by total storage bytes (less than or equal to):
/api/v2/user-reports/?q=service_usage__total_storage_bytes__lte:1
Part of #6243
-
-
billing: update addon copy (#6288)
Updates copy describing addons on the addons page.
-
billing: bypass limit enforcement for submission edits (#6281)
Bypasses restrictions on submissions based on usage limit enforcement
when users are submitting edits. -
constanceSettings: make self account deletion feature disabled by default (#6380)
-
dataCollectors: update enketo links when data collectors change (#6198)
Create/update enketo links for data collectors when assigning data
collectors to groups or rotating tokens. -
dataCollectors: allow DCs access to read-only OpenRosa endpoints (#6258)
Allow data collectors to view surveys in Enketo.
Updates the OpenRosa endpoints to allow urls of the form
/key/<token>/endpointand provide the correct response if the data
collector with the relevant token is part of a group that has access to
the xform. -
dataCollectors: allow data collectors to submit responses (#6328)
Allow data collectors to add submissions to specified assets.
-
dataCollectors: improve Django Admin UX for data collector groups (#6337)
Make data collector group management easier by adding autocomplete
fields and a two-column selector for choosing projects. -
dataCollectors: display collection client URLs in Django Admin (#6355)
Show ready-to-use links for Enketo Express and KoboCollect on Data
Collector pages in Django Admin -
dataCollectors: change key to collector (#6365)
Use "collector" instead of "key" for data collector URLs.
-
dataCollectors: cleanup admin UI (#6369)
Minor improvements to the Django admin UI for data collectors and data
collector groups.Order data collectors and data collector groups by date created in the
list view. Also change the kobocat url "link" to plain text when in the
edit view for a data collector to make it clear that it's not actually a
link, just an example of the base url that Kobocat will use for this DC. -
environment: use Constance setting to toggle user account deletion (#6280)
Add a configurable flag
ALLOW_SELF_ACCOUNT_DELETIONto enable or
disable user account deletion through the Constance admin. -
massEmails: parameterize users query functions in mass emails app (#6279)
Added custom parameters for users query functions in the mass emails app
With the new model MassEmailQueryParam you can customize the parameters
passed to the user query functions in the mass emails app. To do this
successfully you have to check the function parameters names and their
type hints. For now this only supports the types (int, float, str),
which are easily converted. WARNING: If the value provided for the
parameter can't be converted to the type, it will leave the parameter
use the default value. All parameters MUST have a default value in case
they are not customized in the MassEmailConfig instance. -
projectHistoryLogs: add data collector group info to submissions (#6356)
Add data collector group name and uid to project history logs when
submissions are from data collectors. -
usageLimits: conditional over usage limit error message (#6254)
This PR implements a conditional error message based on the usage type
for submissions failed due to account being over limit. -
usageLimits: Check all users storage usage to get their ExceededLimitCounter's (#6267)
A new long running process is added to backfill exceeded limits counters
for storage usage type. -
userReports: add
/api/v2/user-reports/endpoint for superusers (#6243)Add a new superuser-only endpoint,
/api/v2/user-reports/, to access
and filter all user usage data. -
userReports: add
extra_detailswith data related to removing users (#6453) -
userReports: add organization website to API response (#6457)
Add organization website to
/api/v2/user-reports/API response. -
userReports: remove
done_storage_limits_checkfrom API response (#6461)Remove
extra_details.data.done_storage_limits_checkfrom
/api/v2/user-reports/response. This field is useless for the report. -
userReports: add
last_updatedto API response (#6460)This PR exposes the latest snapshot update timestamp
(BillingAndUsageSnapshot.date_modified) aslast_updatedin the
/api/v2/user-reports/endpoint.
Bug Fixes (43)
-
CI: pin darker dependency in CI (#6263)
Pins version of darker used in GitHub CI for backend lint action.
-
account: disallow editing email if linked to social account (#6265)
-
account: clearing fields operated by Selects (#6340)
Removing country, sector, gender, and organization type is possible
again. -
accountSettings: adjust delete banner message (#6302)
-
accountSettings: error handling in email section (#6350)
Displays error in UI when changing email and API validates the proposed
email as invalid. -
accountSettings: change label (#6391)
-
accounts: block self-deletion when the account still owns data (#6334)
Prevent users from deleting their own account if it still contains
projects, collections, blocks, questions, templates, or other owned
resources. -
accounts: retain uid for placeholder users (#6452)
Retain a user's uid when they are set to inactive (ie trashed with a
placeholder). -
api: Set all the required fields for service usage data schemas ([#6236](#623...
2.025.37f
2.025.37e
What's changed
Bug Fixes (1)
- openrosa: sync anonymous submission permission during deployment (kpi#6449)
Ensure anonymous submission permission is correctly propagated to OpenRosa so Enketo doesn’t ask for login when anonymous collection is enabled.
Performance (1)
- users: optimize
/api/v2/usersqueryset for list endpoint (kpi#6447)Greatly improve performance of the
/api/v2/userslist endpoint to prevent timeouts and 502 errors.
Full Changelog: https://github.com/kobotoolbox/kpi/compare/2.025.37d..2.025.37e
2.025.37d
What's Changed
| PR | Description |
|---|---|
| kpi#6440 | Fix error when loading data tables for submissions created before validation_statuses were added |
| kpi#6430 | Ensure that submissions remain attributed to their original submitter even if the user account is deleted, and that the _submitted_by value continues to persist correctly during edits and bulk updates |
| kpi#6433 | Fixes an issue where anonymous users received a 500 error when accessing the asset snapshots list endpoint. Anonymous requests now safely return an empty response instead of causing a server error |
| kpi#6435 | Fixes a CI installation issue caused by an incompatibility between pip 25.3 and pip-tools 7.x. |
| kpi#6432 | Allow superusers to see inactive users in API response |
| kpi#6431 | Prevent submissions from being deleted when a user is removed by setting the user field to null instead |
| kpi#6421 | Reverts the forced download behavior introduced in #6407 and allows safe file types (such as images, audio, and video) to open directly in the browser again, while keeping potentially unsafe files downloaded instead |
| kpi#6420 | Prevent the media_file_name field from being overwritten when it already has a value. |
| kpi#6418 | Improve how data responses with URLs and generators are displayed when viewed directly in the browser |
| kpi#6423 | Fixes a server error in bulk update by handling None results gracefully |
| kpi#6412 | Fixes a bug where org admins were no longer allowed to view projects or make submissions |
Full Changelog: 2.025.37c...2.025.37d