- slacker (for notifications via Slack)
numpy(removed, as numpy is no longer compabile with uWSGI; see Known Bugs)
Sortable is used as a Git submodule. To initialize the submodule after cloning the Vote repository run:
git submodule init git submodule update
You'll also need to create a
config.py file, which specifies details such as which
method to use to select winning votes (instant runoff, Borda Count, etc.), how many
winners to select, how to post notifications of the winners, etc. A sample configuration
file can be found at
Importing Ballots from CSV
To create a ballot you can add options via CSV. Simply create a CSV file in the following format:
option name,option category
The category (if any) will be displayed in parentheses next to the option name.
After creating the CSV, import it via Python:
>>> import vote >>> vote.api.import_options('options.csv')
Starting the Server
Start the server with
run.py. By default it will be accessible at
make the server world-accessible or for other options, see
If you're having trouble configuring your sever, I wrote a blog post explaining how you can get Flask, uWSGI, and Nginx working together.
Bugs and Feature Requests
- Import/export of ballots/voting preferences (CSV or whatever)
- Ability to ignore selections from last time, this time
weighted_sampleselection method is disabled due to an issue with
numpy(this may be a result of uWSGI doing multiple imports in different vassals? or perhaps simply the way modules are initially loaded...). In any event, it seems unlikely that this incompatibility will be resolved any time soon.
This work is licensed under Creative Commons BY-SA 4.0.
Remember: GitHub is not my CV.