Polling app with a simple, intuitive UX that also takes care of the complexities like privacy, integrity and security behind the scenes.
- Python : >=3.5
- Chrome : >=68 (for running functional tests)
- virtualenv : *
- MySQL Server : >=8.0.13
virtualenv -p python3 voting
source voting/bin/activate
clone https://github.com/tameeshB/e-Voting.git
cd e-Voting
nano .env;source .env
# and edit with mysql and webmail credentials.pip install -r REQUIREMENTS.txt
python manage.py makemigrations
python manage.py migrate
python manage.py loaddata templateMigrationData.json
python manage.py runserver
- Replace necessary global variables in the
polls/globals.py
file. Make sure to set a random secret key insecretHash
andclientKey
to desired password for the init console at/init
. - Create an admin user with the credentials:
source .env;python manage.py createsuperuser
and enter desired credentials. - Login with the generated credentials at
http://localhost/admin
. - Use the "Token Dashboard" to generate one-time login tokens to hand out to voters.
- Use the "Poll Control Panel" to control the poll status: Start/Stop the Poll. Count and Publish/Unpublish the results.
- Before the poll starts, all computers that will be used by the voters must be initialized by visiting
/init
the client-key to be used here is the one in thepolls/globals.py
.
wget https://chromedriver.storage.googleapis.com/2.43/chromedriver_linux64.zip
# linuxunzip chromedriver_linux64.zip
sudo chmod +x chromedriver
export webdriver_chrome=$PWD/chromedriver
export PATH=$PATH:$PWD/chromedriver
python manage.py runserver &
# run server in background if not already startedpython manage.py test tests/
# run the testskill %1
# stop server running in background
- Eliminating manual ballot system.
- Counting of ballots is a long and laborious process.
- Wastage of paper.
- Any simple app made for this purpose might have privacy, security and integrity issues.