hive-django/README.md

5.6 KiB

Build Status

Requirements

Quick Start

virtualenv venv

# On Windows, replace the following line with 'venv\Scripts\activate'.
source venv/bin/activate

pip install -r requirements.minimal.txt
python manage.py syncdb --noinput
python manage.py initgroups
python manage.py seeddata
python manage.py runserver

At this point, you can visit http://localhost:8000/admin and log in as user admin with password test.

Environment Variables

Unlike traditional Django settings, we use environment variables for configuration to be compliant with twelve-factor apps.

Note: When an environment variable is described as representing a boolean value, if the variable exists with any value (even the empty string), the boolean is true; otherwise, it's false.

Note: When running manage.py, the following environment variables are given default values: SECRET_KEY, PORT, ORIGIN, EMAIL_BACKEND_URL. Also, DEBUG is enabled.

  • SECRET_KEY is a large random value.
  • DEBUG is a boolean value that indicates whether debugging is enabled (this should always be false in production).
  • PORT is the port that the server binds to.
  • ORIGIN is the origin of the server, as it appears to users. If DEBUG is enabled, this defaults to http://localhost:PORT. Otherwise, it must be defined.
  • DATABASE_URL is the URL for the database. Defaults to a sqlite:// URL pointing to db.sqlite3 at the root of the repository. If this value is the name of another (all-caps) environment variable, e.g. HEROKU_POSTGRESQL_AMBER_URL, that variable's value will be used as the database URL.
  • DEFAULT_FROM_EMAIL is the default email address to use for various automated correspondence from the site manager(s), such as password resets. Defaults to webmaster@localhost.
  • ADMIN_EMAIL is the email address to send error reports to. If undefined, error reports will not be emailed.
  • MINIGROUP_DIGESTIF_USERPASS is a string of the form username:password that enables the sending of Minigroup digests from external jobs. If empty or undefined, minigroup digest functionality will be disabled. For more information, see minigroup_digestif/README.md.
  • SECURE_PROXY_SSL_HEADER is an optional HTTP request header field name and value indicating that the request is actually secure. For example, Heroku deployments should set this to X-Forwarded-Proto: https.
  • GA_TRACKING_ID is the Google Analytics Tracking ID for your app. Optional.
  • GA_HOSTNAME is the hostname of your app for Google Analytics tracking. It's usually the top-level domain of your app. If GA_TRACKING_ID is defined, this must be defined too.
  • SITE_ID is the site id of the current site as used by Django's sites framework. Defaults to 1.
  • DISCOURSE_SSO_SECRET is the SSO secret for Discourse single sign-on. For more information, see discourse_sso/README.md. If empty or undefined, Discourse SSO functionality will be disabled.
  • DISCOURSE_SSO_ORIGIN is the origin of your Discourse site. If DISCOURSE_SSO_SECRET is set, this must also be set.
  • EMAIL_HOST Hostname of the SMTP server for sending emails
  • EMAIL_PORT Port number for the email host
  • EMAIL_HOST_USER The username of the account to connect to the email host as
  • EMAIL_HOST_PASSWORD The email accounts password
  • EMAIL_USE_TLS set to True to connect with TLS

Flatpages

Some pages on the site are flatpages. You'll want to create flatpage records for the following URLs via the Django admin interface, or else they will result in 404s:

  • /faq/ is the Frequently Asked Questions page.

Multi-City Directories

By default, this project is set up to serve a directory for one Hive city. However, it can also be configured using Django's sites framework to serve multiple directories for different cities.

To enable this functionality, you'll need to use the Django admin interface to associate a city with your desired site. If no city is associated with a site, then that site will serve a multi-city directory, allowing users to explore the Hive ecosystem at large.

To illustrate, here's an example of two sites, each powered by the same Django installation:

  • directory.hivenyc.org offers a local-context, single-city directory for Hive NYC members. Its homepage looks like this:

  • directory.hivelearningnetworks.org offers a global-context, multi-city directory for Hive members around the world, and for cities that don't have the resources to set up their own local-context directory site. Its homepage looks like this:

Clicking on the "New York City" link in the second screen-shot will take the user to a page at /nyc/ that looks similar (but not identical) to the first screen-shot.