/open-humans

Powering openhumans.org

Primary LanguagePythonMIT LicenseMIT

open-humans

Codeship Status for OpenHumans/open-humans codecov.io

This repository contains the code for the Open Humans Website.

The local development environment

dependencies

  • python >=3.6
  • pip3
  • virtualenv (pip3 install virtualenv)
  • nodejs 6.x
  • npm 3.x
  • libffi (apt-get install libffi-dev in Debian/Ubuntu or brew install libffi in OSX)
  • libpq (apt-get install libpq in Debian/Ubuntu or brew install libpq in OSX)
  • postgres (apt-get install libpq-dev python3-dev and apt-get install postgresql postgresql-contrib in Debian/Ubuntu)
  • memcached (apt-get install memcached libmemcached-dev or brew install memcached)
  • ChromeDriver for Selenium tests

virtualenv

For the following commands, you'll also want to set up virtualenvwrapper:

Create a virtualenv for Python 3.6, e.g.:

  • mkvirtualenv open-humans --python=/usr/bin/python3.6
  • pip3 install -r requirements.txt -r dev-requirements.txt

In the future, start the virtual environment with:

  • workon open-humans

And update it after pulling updated code by repeating:

  • pip3 install -r requirements.txt -r dev-requirements.txt

node.js dependencies (primarily for gulp)

  • npm install -g gulp
  • npm install

Update after pulling updated code by repeating:

  • npm install

create your postgres database

Running this site requires a PostgreSQL database (even for local development).

  • In Debian/Ubuntu
    • Become the postgres user: sudo su - postgres
    • Create a database (example name 'mydb'): createdb mydb
    • Create a user (example user 'jdoe'): createuser -P jdoe
    • Enter the password at prompt (example password: 'pa55wd')
    • run PostgreSQL command line: psql
      • Give this user privileges on this database, e.g.:
        GRANT ALL PRIVILEGES ON DATABASE mydb TO jdoe;
      • Also allow this user to create new databases (needed for running tests), e.g.:
        ALTER USER jdoe CREATEDB;
      • Quit: \q
    • Exit postgres user login: exit

Set up environment settings

Use env.example as a starting point. Copy this to .env and modify with your own settings.

Initialize or update the database

Do this at the beginning, and update when pulling updated code by running:

  • ./manage.py migrate

Additional setup

For additional setup information see docs/SETUP.md.

Running the development server

  • ./manage.py runserver

Running tests

You need to process static files before you can run tests.

  1. ./manage.py collectstatic
  2. ./manage.py test

Linting & formatting

Please use black to format code prior to commits. Set up a pre-commit hook by running the following:

  1. pre-commit install