Skip to content

Latest commit

 

History

History
152 lines (103 loc) · 4.52 KB

File metadata and controls

152 lines (103 loc) · 4.52 KB

Leverage API

Initially copied from Illinois Sunshine.

Setup

Install OS level dependencies:

  • Python 3.4
  • PostgreSQL 9.4 +
  • MySQL client libraries + development headers
    • Ubuntu Xenial: libmysqlclient-dev package
    • Debian Stretch: libmariadbclient-dev package
    • Fedora 26/CentOS 7: mariadb-devel package
    • OpenSUSE Leap 42.3: libmysqlclient-devel package
    • OS X Sierra: mysql homebrew formula

Optional: Use a Docker container:

Docker environment on GitHub courtesy of @lottspot.

Install app requirements

We recommend using virtualenv and virtualenvwrapper for working in a virtualized development environment. Read how to set up virtualenv.

Once you have virtualenvwrapper set up (make sure to initialize as a Python 3 project),

mkdir leverage
cd leverage
git clone https://github.com/Lever-age/api.git
cd api
python3 -m virtualenv venv
source venv/bin/activate
pip install -r requirements.txt

You also need to create your own app_config.py file:

cp leverageapi/app_config.py.example leverageapi/app_config.py

In app_config.py, put your Postgres user in DB_USER and password in DB_PW.

NOTE: Mac users might need this lxml workaround.

Afterwards, whenever you want to work on leverage-api, cd into the directory

source venv/bin/activate

Setup your database

For now, load the mysql files from the datadump directory. Load the tables.sql first, then data.sql

Run the server, then test the api endpoints

python runserver.py
  • /api/races (same as /api/races?election_type=general&election_year=2018)

  • /api/races?race_id=2

  • /api/races?race_slug=governor

  • /api/candidates?race_id=2

  • /api/candidates?race_slug=governor

  • /api/candidates?candidate_id=4

  • /api/candidates?candidate_slug=thomas-w-wolf

  • /api/contributions?candidate_slug=thomas-w-wolf

  • /api/contributions?race_slug=governor

Illinois Sunshine DB instructions:

Before we can run the website, we need to create a database.

createdb leverage_api

Then, we run the etl.py script to download our data from the IL State Board of Elections and load it into the database.

python etl.py --download --load_data --recreate_views

This command will take between 15-45 min depending on your internet connection.

Doesn't do this: You can run etl.py again to get the latest data from the IL State Board of Elections. It is updated daily. Other useful flags are:

 --download               Downloading fresh data
 --cache                  Cache downloaded files to S3
 --load_data              Load data into database
 --recreate_views         Recreate database views
 --chunk_size CHUNK_SIZE  Adjust the size of each insert when loading data

Running Illinois Sunshine

git clone git@github.com:datamade/leverage-api.git
cd leverage-api

# to run locally
python runserver.py

navigate to http://localhost:5000/

Optionally configure PostgreSQL stop words

Uses MySQL for now...

While developing this, we noticed that PostgreSQL treats some names od individuals and organizations as stop words. We added a custom stop word list to the repo that can be used to make sure that these names will show up in search results.

  • Create a symbolic link from the stop words list in this repo to the PostgreSQL shared directory (this example will work on Debian and Ubuntu):
sudo ln -s /path/to/this/repo/sunshine.stop /usr/share/postgresql/9.4/tsearch_data/sunshine.stop

You'll then need to change the STOP_WORD_LIST configuration in app_config.py to sunshine

Team

  • Eric van Zanten - developer
  • Derek Eder - developer

Errors / Bugs

If something is not behaving intuitively, it is a bug, and should be reported. Report it here: https://github.com/datamade/leverage-api/issues

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Commit, do not mess with rakefile, version, or history.
  • Send a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2017 Code for Philly

Copyright (c) 2015 DataMade and Illinois Campaign for Political Reform. Released under the MIT License.