Hello, we’re happy to announce that a new version with some major features (and many smaller fixes!) was recently deployed:
- On https://kf.kobotoolbox.org/ at 04:15 UTC on 2 March 2021
- On https://kobo.humanitarianresponse.info/ at 22:00 UTC on 2 March 2021
- A bulk-editing feature to facilitate data cleaning across many submissions
- A new and improved way to create, share, and discover form content in the library through Public Collections
- A method for project managers to quickly duplicate an existing submission into a new record
Note: some metadata is now required when sharing a collection publicly, with the hope that this encourages high-quality content, discourages accidental sharing, and makes it easier for others to discover what you’ve shared. If you find any of your public collections are no longer shared after this release, please share them again. You will receive a message asking you to enter any missing metadata if necessary.
New features and enhancements
|#2559||Implement new public collections feature
This is the big feature from Enable users to organize and search for public library collections - #12 by mike.destaubin
|Fixes #2293, #1282, #1860, #2157, #2586, #280, #2559, #2783, #2813
Fixes partially #1983
Closes #2332, #2381
|#2941||Add user interface for new bulk submission edit feature
It can be accessed through Table View after checkbox-selecting multiple submissions/rows.
|Part of #2760
Related to #2920
|#2920||Add API support for bulk updating of submission
A shiny new feature that allows for the bulk editing/updating of a project’s submissions, to facilitate data cleaning.
|Part of #2760
|#2928||Add user interface for new submission duplication feature||Fixes #2896|
|#2897||Duplicate submissions feature
Implement the backend functionality and API endpoint for the duplication of a single submission.
|#3021||Improve the experience of entering tags by adding clearer instructions, saving the last tag automatically (in case someone forgets to press ENTER after typing), preventing duplicate tags from being entered, and allowing comma-separated tags to be pasted into the input field|
|#2945||Allow non-owners to remove themselves from a shared asset
This change allows users with whom a project has been shared, but who cannot edit that project’s permissions, to remove themselves from the project. This feature was requested in the community forum.
|#2851||Allow someone to clone a library item that’s part of a collection, even when they have read-only access to that collection. In this scenario, the cloned item goes into “My Library” of the person requesting the clone.||Fixes #2836|
|#2830||Search more fields by default when no explicit search field is given. A term without a field will perform a case-insensitive, substring (partial) match on the following: summary (contains the labels of all questions), name, UID, owner’s username, tags, and description.||Closes #2814|
Bug fixes and other improvements
|#3027||Make it possible to clone some old library items that have no associated versions by automatically creating a version if needed||Closes #3020|
|#3026||Add a small “x” button for clearing filter header in the (previously unreleased) library table.||Fixes #2996|
|#2978||Don’t display non-survey assets in the Projects list after they are created
Immediately after creating new Library Item (collection, template, etc.) it was showing up in the Projects List (/forms) under Drafts. Now it is properly filtered out by type.
|#2955||Fix to allow for child assets to be visible in public collections when unsubscribed or non-owner
Allow the contents (child questions, blocks, and templates) of any discoverable, public collection to be visible in the list view to non-owners and those who have not subscribed to the collection.
|#2953||Show an “access denied” message instead of blocking actions in less obvious ways if someone manually constructs a URL to a view that they do not have permission to access||Fixes #2655 #2944|
|#2949||Fix a crash in the auto report when a graph style override was saved with a non-English UI language.
Also fixes a related issue in unreleased public collections code where the projects list could crash when the UI language was not English.
|#2886||Treat specifically-assigned permissions as an extension of rights given to anonymous users. For example, if a project has public data, then a user who only has explicit access to view that project’s form should still be able to access the public data.||Fixes #2870|
|#2872||Add tweaks to the (previously unreleased) public collections feature
All the important functional fixes for Public Collections are included. And almost all of the visual changes from the designs are here.
|#2796||Fix bulk library XLS imports (a way to import several questions and blocks at once), which had been broken after a pyxform upgrade.||Fixes #2262|
Of interest to self-hosters
|#3034||Avoid resetting dates when migrating collections to assets
Preserve the creation and modification dates of collections when altering the database structure. If all goes well, this change has no visible effects.
|#3008||Store ConfigurationFile content in a public place
Allow installations using local storage (not S3, which already worked) to customize logos and the login page background, by placing these image uploads in a publicly-accessible location
Related to kobotoolbox/kobo-docker#175
|#2862||Previously, when the trash icon in the UI was pressed to delete the export, the file remained in S3 or local storage. This change causes the file to be removed.||Fixes #2253|
|#2861||Reduce service_health timeout from 45 seconds to 10 seconds||Closees #2642|
Of interest to devevelopers
|#3042||Fix missing directory error when npm building
The first run of
|#3041||Include all beta-tested changes (mainly public collections)
All changes here should be described already by individual PRs. This simply brings a variety of work into the
|#3017||added multicheckbox component
Adds component that takes in an array of items to be displayed in a list with a checkbox.
|#3015||Fix reports view returns a 500
Reports are broken in public collections branch.
|#2986||Adds new Toggle switch component
ToggleSwitch component is introduced in a temporarily blocked PR #2946, moved here for faster use
|TODO: After this is merged apply #2985 to this component|
|#2985||Common components directory
|#2979||Resolve differences between my merge and Olivier’s
Two developers independently resolved conflicts in a complex merge and then compared their results.
|#2960||Fix infinitely loading form builder (as related to an unreleased change)||Followup to #2958|
|#2958||Fix unreleased change that caused owners to not be able to edit their own forms||Related to #2953|
|#2954||refactored query limit constant
Refactored constant in
|#2952||Improve routes configuration
This is just a code cleanup that will allow to reuse routes in a safer way.
Fix a problem with fetching the label of a non-assignable permission
|#2891||Fix an issue (in unreleased code) where switching between projects could cause some UI components not to load correctly||Fixes #2885|
|#2887||Fix bulk library imports by renaming the “library” XLSForm worksheet to “survey” before processing with pyxform||Part of #2262|
|#2882||Copy library route and store functionality to single collection view||Fixes #2834|
|#2871||Delete users in both KPI and KoBoCAT databases at once (only when users have no data in their accounts; helpful for development and testing)||Fixes #2509|
|#2867||Add double quotes to language filters and change
Surrounds every filter with double quotes to avoid spacing issue for other filter types.
Semi-hacked double quotes around
|Fixes #2866 but other filters can also trigger the same exception due to actually being less than 3 characters (not just a spacing issue): Organisations, Countries, for example|
|#2858||Give priority to collections on sorting with param
|#2857||Removing nested children from asset detail endpoint|
|#2849||(previously deployed) Stop scrolling to the bottom of the page when adding a new question in the form builder. This is the same fix as #2874 but applied to previously unreleased public collections code.||Fixes #2837|
|#2845||Disable Django DEBUG by default when the appropriate environment variable has not been set|
|#2841||Added id’s of subscribed collection assets to permission filter
When querying for subscribed collections, right now
|Part of #2832|
|#2840||Added failing test for getting subscribed collections
Added a failing test that checks if we can grab subscribed collection assets with its
|Part of #2832|
|#2839||Verify parent write access before moving a child from/to a collection.|
|#2828||Added ContentType import and fixed typo|
|#2818||Add tests for asset (collection) subscriptions|
|#2816||Simplify asset permissions|
|#2811||Optimization to load assets list endpoint|
|#2805||Update query parser parameters for front end|
|#2798||Fix bulk library imports by introducing a “less strict” XLS to dictionary converter that does not delete unrecognized worksheets. This approach was superseded by #2887.||Part of #2262|
|#2580||Make collections a type of asset instead of a separate model|
|#2570||Store collections as a type of asset instead of a separate model|
|#2564||Accept WriteableJSON as dictionaries when PATCHing assets|
|#2555||Added asset subscription to API v2|
|#2547||Add sorting to Asset endpoint|
|#2534||Replaced ‘django.core.exceptions.ValidationError’ with ‘rest_framework.serializers.ValidationError’|
|#2531||Add public collection stats to user view|
|#2525||Add public collection related details to asset endpoints|