Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: develop

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 decisiontree
Octocat-spinner-32 docs
Octocat-spinner-32 .coveragerc
Octocat-spinner-32 .gitignore
Octocat-spinner-32 AUTHORS
Octocat-spinner-32 LICENSE.txt
Octocat-spinner-32 README.rst
Octocat-spinner-32 tox.ini


This application is a generic implementation of a decision tree, which is completely database-configurable. Users are asked questions and respond via SMS messages using the RapidSMS framework built on top of Django.

The original code for this application was written by Dimagi and is currently packaged and maintained by Caktus Consulting Group, LLC.


rapidsms-decisiontree-app is compatible with Python 2.6 and 2.7, RapidSMS 0.9.6a and Django >= 1.2. There is optional support for the threadless-router and django-celery.


  • Support for sessions (i.e. 100 different users can all go through a session at the same time)
  • Branching logic for the series of questions
  • Tree visualization
  • Errors for unrecognized messages (e.g. 'i don't recognize that kind of fruit') and multiple retries before exiting the session


The latest stable release of rapidsms-decisiontree-app can be installed from the Python Package Index (PyPi) with pip:

pip install rapidsms-decisiontree-app

Once installed you should include decisiontree in your INSTALLED_APPS setting.

    # Other installed apps would go here

You'll need to create the necessary database tables:

python syncdb

rapidsms-decisiontree-app supports using South for database migrations. If you are using South then you should migrate:

python migrate decisiontree

At this point data can only be viewed/changed in the Django admin. If you want to enable this on the front-end you can include the decisiontree.urls in your root url patterns.

urlpatterns = patterns('',
    # Other url patterns would go here
    url(r'^decisiontree/', include('decisiontree.urls')),

See the full documentation for additional configuration options.

Running the Tests

The tests are setup to run using tox >= 1.4:

pip install tox
# Run all test environments
# Test only Python 2.6 and Django 1.3
tox -e py26-1.3.X

To see the test coverage you can run:

coverage run $VIRTUAL_ENV/bin/ test decisiontree --settings=decisiontree.tests.settings
coverage report -m

A common .coveragerc file is include in the repo.

Something went wrong with that request. Please try again.