Tally-Ho!
Election results data entry and verification software built by Ona Systems and commissioned by the Libyan High National Elections Commission and the United Nations Development Program.
Quick install
Checkout the repos
git clone git@github.com:onaio/tally-ho.gitMake a virtual environment and install requirements
Prerequisites: this assumes you have virtualenvwrapper and PostgreSQL installed.
mkvirtualenv tally --python=python3.9.0
pip install -r requirements/dev.pipMake sure you have the latest versions of pip, wheel, and setuptools installed, run
python -m pip install -U pip wheel setuptoolsQuick start with user demo data
This will remove all data in the database.
To create the database, load demo users, and start the server all in one, run
./scripts/quickstartIf you've aleady setup the server, you can start the server with
python manage.py runserver --settings=tally_ho.settings.devLoading tally demo data
TODO: add some demo result forms and candidate lists
Advanced: recreate the database, then load the data and demo users
This will remove all data in the database.
This will only work if you have data files in the folder
./data
The first argument is the database user, the second is the database host IP address, and the third is the settings file. Modify these arguments as needed.
./scripts/reload_all postgres 127.0.0.1 tally_ho.settings.commonDocker Install
If you already have Docker and docker-compose installed on your machine you can quickly have a demo up by changing into the checked out code directory and running:
docker-compose build
docker-compose upYou can now visit the site at 127.0.0.1:8000.
If you want to use Docker to run the site in production you will need to:
- modify the
docker-compose.ymlfile to change the NGINX listening port from 8000 to 80, - add the host you are running the site on to a new
ALLOWED_HOSTSlist in thetally_ho/settings/docker.pyfile.
Running Tests
Pass the -s option if you want to use ipdb.set_trace() to debug during a test.
Documentation
Generating Model Graphs
The below assumes you have pip installed requirements/dev.pip and graphviz in your machine.
Generate model graph for all models:
python manage.py graph_models --settings=tally_ho.settings.dev --pydot -a -g -o tally-ho-all-models.png
Generate model graph for app models:
python manage.py graph_models --settings=tally_ho.settings.dev --pydot -a -X GroupObjectPermission,UserObjectPermission,GroupObjectPermissionBase,BaseGenericObjectPermission,UserObjectPermissionBase,BaseObjectPermission,Version,Revision,Pageview,Visitor,Session,AbstractBaseSession,Site,LogEntry,User,Group,AbstractUser,Permission,ContentType,AbstractBaseUser,PermissionsMixin,BaseModel -g -o tally-ho-app-models.png
Demo Users
The create_demo_users command will create demo users for each role with usernames like super_administrator, and password data.
File Uploads
The MAX_FILE_UPLOAD_SIZE variable in tally_ho/settings/common.py file defines the file upload limit which is currently set to 10MB.
News
- This is an article about tally-ho and its use in Libya.
- This presentation at PyConZA 2014 about the project, Writing Python Code to Decide an Election.