Comments (4)
pyodk is a very new python module for accessing an ODK Central server. Currently two other projects are using their own python code to do the same thing. Although pyodk is new, it was created by the ODK team, so we need to consider dropping our internal code that does the same thing to use the more community based code, which is open source and on github. It may be more efficient to work with the pyodk developers than maintaining our own similar code.
from osm-fieldwork.
I looked at the PyODK code yesterday, and it looks clean and well-written, but doesn't explicitly handle all of the API endpoints that we need.
For the Field Mapping Tasking Manager workflow we need to:
- Create projects
- Create forms within projects
- Push attachement files (GeoJSON for select_from_file) for specific forms
- Publish draft forms
- Create app users
- Assign app users to forms
- Create QR codes for app users, including the general settings like basemap -> MapBox
- Detect the presence of new submissions
- Download submissions as CSV
- Download submission attachments
As far as I can see, PyODK currently doesn't support creation of app users and assignment of forms to them, pushing of attachments, or creation of QR codes. I'm not sure if it supports publishing of draft forms.
It seems like an obvious valuable contribution from our side might be too add methods for those tasks into the existing code.
I've already implemented those calls in a primitive fashion here and here. That's very rudimentary code, and written in a functional rather than object-oriented style, but it works, so it can be used as a guide for constructing the necessary endpoint URLs.
from osm-fieldwork.
I also have my own ODK Central API code, initially based on your your code, but objectified and expanded. In addition I wrote an ODK client program, that uses the code in OdkCentral.py to do most of the operations, including the ones mentioned that pyodk doesn't support yet. My assumption is that although pyodk is a very new project (public this week), it will evolve. If the roadmap for pyodk supports what is needed for a CLI, then it's worth investigating it to decide if at some point it would be a better plan to use pyodk than our homegrown code.
from osm-fieldwork.
If was decided that pyodk is still in early development, and doesn't support all the functionality needed for FMTM. Since OdkCentral.py file does implement the needed functionality, it was decided to use our own code to reduce the dependency on an external project.
from osm-fieldwork.
Related Issues (20)
- Generate polygon or centroids data extracts HOT 1
- Download Submission along with Media Files HOT 1
- Refactor odk_merge.py from GDAL HOT 2
- Improve Documentation HOT 1
- Cleanup name change
- data_model config files should be optional HOT 1
- Create pytest Github workflow
- Consider options for offline install and document HOT 3
- Allow custom SQL query upload for custom XLSForm HOT 1
- When parsing the YAML files, the join_or and join_and fields should be optional HOT 1
- Basemapper is aborting before downloading all tiles HOT 1
- Add comprehensive test cases HOT 16
- Basemapper allow for in memory BytesIO GeoJSON for boundary param HOT 21
- Add support for ODKCentral Datasets (Entity Lists) & Entities HOT 1
- Set logger for command line calls HOT 8
- Use session based auth instead of HTTP BasicAuth
- Rewrite OdkCentral.py to be async
- Amenity data model is broken HOT 6
- Challenges with Docker on M-Series MacBook: Default Support Issue HOT 4
- An ODK Entities support to OdkCentral.py HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from osm-fieldwork.