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
Highlights
- 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
PR | Description | Related Issues |
---|---|---|
#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 Closes #2929 |
#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. |
closes #2893 closes #2894 |
#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. |
closes #2940 |
#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
PR | Description | Related Issues |
---|---|---|
#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. |
Fixes #2976 |
#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. |
Closes #2951 |
#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. |
Fixes #2833 Fixes #2735 |
#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
PR | Description | Related Issues |
---|---|---|
#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. |
Fixes #3033 |
#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 |
Closes #1738 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
PR | Description | Related Issues |
---|---|---|
#3042 | Fix missing directory error when npm building The first run of npm run build could fail because the translatable strings extractor would attempt to write its output to a file in a directory that didn’t exist yet. |
|
#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 master branch after beta testing on a staging server. |
|
#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 Moved Checkbox , TextBox and Radio components to js/components/common directory and updated all import paths to work. |
|
#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 map.es6 that caused a circular dependency |
|
#2952 | Improve routes configuration This is just a code cleanup that will allow to reuse routes in a safer way. |
|
#2933 | Refactor get_label_for_permission() 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 filterBy typeSurrounds every filter with double quotes to avoid spacing issue for other filter types. Semi-hacked double quotes around filteredValue query parameters just before sending the query as to avoid any bad interactions down the road (specifically checks for filteredValue in assetsTable ) |
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 |
#2859 | Make access_type an array |
|
#2858 | Give priority to collections on sorting with param collections_first
|
|
#2857 | Removing nested children from asset detail endpoint | |
#2852 | Adding __filtered_queryset variable to prevent double calls of filter_queryset()
|
|
#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 | |
#2844 | Rename member_since to date_joined for consistency in the user serializer |
|
#2841 | Added id’s of subscribed collection assets to permission filter When querying for subscribed collections, right now ?=parent__uid:<some uid> returns nothing. As a temporary fix we union a query for all subscribed collection assets with a query for their parents |
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 parent__uid
|
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 |