view bns_website/apache/bns.wsgi @ 27:a5e8741452a3

Add path to Django in WSGI file. Use Django's simplesjon module as it will either import the Python system one if it exists, or use the one provided with Django as a fallback. This is needed for the production server, which is running Python 2.5.
author Brian Neal <bgneal@gmail.com>
date Tue, 01 Nov 2011 20:15:21 -0500
parents 6f68f6800843
children f00199f1524c
line wrap: on
line source
import os
import sys

OFFLINE = False

here = os.path.dirname(__file__)
website = os.path.dirname(here)
repo = os.path.dirname(website)
project = os.path.dirname(repo)
eggs = os.path.join(project, 'eggs')
django = os.path.join(project, 'django')

sys.path.extend([repo, website, django])

os.environ['PYTHON_EGG_CACHE'] = eggs


def offline_handler(environ, start_response):
    """
    This handler is run when the site is in maintenance mode.
    It either displays a brief outage message, or, if a template
    file exists, it reads the file and returns its contents.

    """
    wsgi_dir = os.path.dirname(__file__)
    sys.path.append(wsgi_dir)

    offline_file = os.path.abspath(
            os.path.join(wsgi_dir, '..', 'templates', 'offline.html'))
    if os.path.exists(offline_file):
        response_headers = [('Content-type','text/html')]
        response = open(offline_file).read()
    else:
        response_headers = [('Content-type','text/plain')]
        response = ('Brave New Surf website maintenance in progress; '
            'please check back soon.')

    if environ['REQUEST_METHOD'] == 'GET':
        status = '503 Service Unavailable'
    else:
        status = '405 Method Not Allowed'
    start_response(status, response_headers)
    return [response]


if not OFFLINE:
   os.environ['DJANGO_SETTINGS_MODULE'] = 'bns_website.settings.production'
   import django.core.handlers.wsgi
   application = django.core.handlers.wsgi.WSGIHandler()
else:
   application = offline_handler