Skip to content

onaio/onadata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

568fe1f · Jan 15, 2025
Jan 9, 2025
Dec 19, 2024
Nov 29, 2024
May 23, 2022
Jan 15, 2025
Jan 15, 2025
May 28, 2019
Jan 12, 2014
May 20, 2024
Jul 27, 2023
Feb 21, 2013
Jan 15, 2025
Apr 17, 2018
Jan 9, 2014
May 7, 2015
Oct 4, 2024
Aug 23, 2022
Jul 4, 2024
Jul 24, 2017
Jun 14, 2021
Jan 15, 2025
Apr 29, 2022
Jul 28, 2017
May 14, 2018
Nov 11, 2024
Aug 24, 2024
Jan 23, 2014
Mar 31, 2023
Apr 19, 2022
Jan 15, 2025
Apr 19, 2022
Jan 19, 2023

Repository files navigation

Ona Platform

Collect, Analyze and Share Data!

https://app.codacy.com/project/badge/Grade/68c96351c8b24d5c9062a9c8247142f2

About

Ona is derived from the excellent formhub platform developed by the Sustainable Engineering Lab at Columbia University.

Installation

See the installation documentation.

Docker

Install Docker and Docker Compose.

docker-compose up

# create super user
# -----------------
docker exec -it onadata_web_1 bash

# activate virtual envirenment
source /srv/.virtualenv/bin/activate

python manage.py createsuperuser

It should be accessible via http://localhost:8000. The settings are in onadata/settings/docker.py.

On registration check the console for the activation links, the default email backend is django.core.mail.backends.console.EmailBackend. See Django Docs for details.

Contributing

If you would like to contribute code please read Contributing Code to Ona Data.

Edit top level requirements in the file requirements/base.in. Use
pip-compile to update requirements/base.pip. You will need to update requirements.pip and set lxml==3.6.0, for some unknown reason pip-compile seems to pick a lower version of lxml when openpyxl requires lxml>=3.3.4.
pip-compile --output-file requirements/base.pip requirements/base.in

Install the pre-commit hooks by running:

pre-commit install

Security Acknowledgments

We would like to thank the following security researchers for responsibly disclosing security issues:

Name Date Severity Contribution
Danish Tariq 1st April 2018 Medium Users able to create projects in other user accounts

Code Structure

  • api - This app provides the API functionality mostly made up of viewsets
  • logger - This app serves XForms to and receives submissions from ODK Collect and Enketo.
  • viewer - This app provides a csv and xls export of the data stored in logger. This app uses a data dictionary as produced by pyxform. It also provides a map and single survey view.
  • main - This app is the glue that brings logger and viewer together.

Localization

To generate a locale from scratch (ex. Spanish)

django-admin.py makemessages -l es -e py,html,email,txt ;
for app in {main,viewer} ; do cd onadata/apps/${app} && django-admin.py makemessages -d djangojs -l es && cd - ; done

To update PO files

django-admin.py makemessages -a ;
for app in {main,viewer} ; do cd onadata/apps/${app} && django-admin.py makemessages -d djangojs -a && cd - ; done

To compile MO files and update live translations

django-admin.py compilemessages ;
for app in {main,viewer} ; do cd onadata/apps/${app} && django-admin.py compilemessages && cd - ; done

Api Documentation

Generate the API documentation and serve via Django using:

cd docs
make html
python manage.py collectstatic

Generate sphinx docs for new code using autodoc.

Run sphinx in autobuild mode using:

sphinx-autobuild docs docs/_build/html

Requires sphinx-autobuild, install with pip install sphinx-autobuild.

Django Debug Toolbar

  • $ pip install django-debug-toolbar
  • Use/see onadata/settings/debug_toolbar_settings/py
  • Access api endpoint on the browser and use .debug as the format extension e.g /api/v1/projects.debug

Upgrading existing installation to django 1.9+

Requirements

  • Postgres 9.4 or higher
  • xcode-select version 2343 or higher

Upgrading from a pervious Ona setup Ensure you upgrade all your pip requirements using the following command:

pip install -r requirements/base.pip

Fake initial migration of guardian, django_digest, registration. Migrate contenttypes app first.

python manage.py migrate contenttypes
python manage.py migrate --fake-initial django_digest
python manage.py migrate --fake-initial guardian
python manage.py migrate --fake-initial registration
python manage.py migrate

Major django changes affecting Ona * The DATABASES settings key depricates the use of the autocommit setting in the OPTIONS dictionary.