Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
The 'P' in CPBL, a rapid app
Python JavaScript
Branch: master
Pull request Compare This branch is 4 commits ahead, 76 commits behind unicefuganda:master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
doc
poll
.gitignore
README.rst
setup.py

README.rst

rapidsms-polls

The RapidSMS polling application provides a mechanism for collecting an individual piece of data at a time, via SMS, from a potentially large, untrained set of end users. The goal here is to provide the opposite end of the spectrum to smaller-scale, structure data gathering via SMS, which typically requires a high training budget. Polling offers the ability to ask a single question, phrased carefully, to which the complete contents of the response message can be used as meaningful data.

poll types

There are 5 types of polls:
  • Free-form: the simplest form, all answers are considered to be free-form text, responses to a completely open-ended question.
  • Yes/No: the content of the message is expected to begin with a 'yes' or a 'no'
  • Numeric Response: the entire content of the message should be a number
  • Registration Based: the question should be phrased as something similar to 'what is your name?' responses will have the option of being tagged to the responding contact's name.
  • Location Based: the responses will be fuzzy matched to existing location names, or new locations will be created. The locations can also be optionally registered as the reporting location of the contact who submitted the response (for use in mapping other poll responses).

features

In addition to the basic poll types, any text-based poll can also add categories: responses fitting a particular category's rules will automatically be applied to this category (and custom responses can be returned based on categorization). This allows for more complicated keywording for free-form and yes/no polls.

extensions to existing models

The polling app extends the Contact model by adding the column 'reporting_location', a foreign key to an Area object

dependencies

The polling app depends on:
  • eav: (github.com:/mvpdev/django-eav.git)
  • rapidsms: (github.com/rapidsms/rapidsms.git)

enhancements

Currently, to keep the polling app light, the more complicated visualizations are not inside the poll application itself, only the admin functionality is. The visualizations currently sit in the ureport application (github.com/daveycrockett/rapidsms-ureport). These include a tag cloud, pie charts (by category), histograms (for numeric polls), and maps.

usage

Then to use polls, edit your settings.py to add poll and uni_form:

INSTALLED_APPS = ( "rapidsms",
                     .. other apps ..
                   "uni_form",
                   "poll" )

You will probably also want to add Polls as one of the main RapidSMS tabs:

TABS = [
  ('rapidsms.views.dashboard', 'Dashboard'),
      .. other tabs ..
  ('polls', 'Polls'),
]

Finally sync your database with:

% python manage.py syncdb
Something went wrong with that request. Please try again.