Permalink
Fetching contributors…
Cannot retrieve contributors at this time
144 lines (109 sloc) 4.33 KB

Blaggregator is a Django app with a Bootstrap frontend, that is deployed on Heroku and uses their Postgres and Scheduler add-ons.

This document aims to help you setup a development environment and to help you get started with the code.

Installation:

Docker Setup

Requires Docker and Docker-compose to simplify setup of development environment. See the traditional setup section if you don't wish to use docker.

In settings.py use the default postgres settings:

name: postgres
user: postgres
password: postgres
database: postgres
host: db

In web-variables.env fill out your credentials from the recurse oauth page.

SOCIAL_AUTH_HS_KEY=1201200abcaaf971
SOCIAL_AUTH_HS_SECRET=abc31212aaaae2123
docker-compose up
# Runs migrations and the app using runserver
# You can ssh into box to run other commands

Traditional Setup

  • Set up your virtual environment

  • Install dependencies:

$ pip install -r requirements.txt
  • Install Postgres (it's easy on OSX with postgres.app) and pip install psycopg2. Open the app to start your database server running locally.

    • Open a Postgres shell:

      $ psql
    • Create your database:

      CREATE DATABASE blaggregator_dev;

    The semicolon is critical. IMPORTANT: when you are creating your admin account on the db, don't use the same email address as your Recurse Center account or you won't be able to create a user account for yourself. Do username+root@example.com or something.

  • Alternatively, you could use Sqlite instead of Postgres to get off the blocks, quickly. Change the value of 'ENGINE' in the DATABASES['default'] dictionary to 'django.db.backends.sqlite3'.

  • Set up initial tables:

$ python manage.py syncdb
  • Bring the tables up to date with the latest South migrations:
$ python manage.py migrate

If you get this error:

OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

then your server isn't running. Go fiddle with Postgres.app.

  • Turn on debugging in your environment so you can get useful error messages:
$ export DJANGO_DEBUG=True
  • Blaggregator uses oauth2 to log in users against recurse.com. Go to your settings on recurse.com, make a new app. Name it something like "blaggregator-local" and the url should be http://localhost:8000/complete/hackerschool/ (WITH trailing slash). Grab the keys and store them in your environment as SOCIAL_AUTH_HS_KEY and SOCIAL_AUTH_HS_SECRET.

  • To update user details of all users (periodically), Blaggregator uses a personal token. You can obtain a personal token from your settings on recurse.com too. Save the token in your environment as HS_PERSONAL_TOKEN.

  • Then run a local server:

$ python manage.py runserver

You can administer your app through the handy-dandy admin interface. To see this page, you'll need to give your user account superuser privileges:

  1. go to http://localhost:8000/ and auth in through HS's oauth
  2. $ python manage.py shell to open Django's shell and use its ORM
  3. >>> from django.contrib.auth.models import User import the User model (should you need the other models defined in models.py, import from home.models. User uses Django's built-in User model)
  4. >>> u = User.objects.get(first_name="Sasha") or whatever your first name is. Grab your user object from the db.
  5. >>> u.is_superuser = True make your account a superuser so you can access the admin
  6. >>> u.save() Save these changes to the db.
  7. You should now be able to access localhost:8000/admin while logged in!

Code overview

Key files:

  • home/views.py: the heart of the app. all of the views ("controllers" if you're coming from Ruby)
  • blaggregator/settings.py: app settings
  • home/management/commands/crawlposts.py: background crawler script
  • home/feedergrabber27.py: feed parser
  • home/templates/home: all templates live here