This commit is contained in:
Jeff Balogh 2010-04-27 12:39:25 -07:00
Родитель 6d86528e45
Коммит bb24f6120e
1 изменённых файлов: 37 добавлений и 22 удалений

Просмотреть файл

@ -1,38 +1,53 @@
import os
import site
import django.conf
import django.core.handlers.wsgi
import django.core.management
import django.utils
# Add the zamboni dir to the python path so we can import manage which sets up
# other paths and settings.
wsgidir = os.path.dirname(__file__)
site.addsitedir(os.path.abspath(os.path.join(wsgidir, '../')))
# manage adds the `apps` and `lib` directories to the path.
import manage
# Do validate and activate translations like using `./manage.py runserver`.
# http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html
utility = django.core.management.ManagementUtility()
command = utility.fetch_command('runserver')
command.validate()
django.utils.translation.activate(django.conf.settings.LANGUAGE_CODE)
class ZamboniApp:
def __init__(self):
self._app = self.setup_app
self.django_app = None
# This is what mod_wsgi runs.
django_app = application = django.core.handlers.wsgi.WSGIHandler()
def __call__(self, env, start_response):
return self._app(env, start_response)
# Normally we could let WSGIHandler run directly, but while we're dark
# launching, we want to force the script name to be empty so we don't create
# any /z links through reverse. This fixes bug 554576.
def application(env, start_response):
if 'HTTP_X_ZEUS_DL_PT' in env:
env['SCRIPT_URL'] = env['SCRIPT_NAME'] = ''
return django_app(env, start_response)
def setup_app(self, env, start_response):
if 'SITE' in env:
site.addsitedir(env['SITE'])
import manage
import django.conf
import django.core.handlers.wsgi
import django.core.management
import django.utils
# Do validate and activate translations like using `./manage.py runserver`.
# http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html
utility = django.core.management.ManagementUtility()
command = utility.fetch_command('runserver')
command.validate()
django.utils.translation.activate(django.conf.settings.LANGUAGE_CODE)
# This is what mod_wsgi runs.
self.django_app = django.core.handlers.wsgi.WSGIHandler()
self._app = self.zamboni_app
return self.zamboni_app(env, start_response)
def zamboni_app(self, env, start_response):
if 'HTTP_X_ZEUS_DL_PT' in env:
env['SCRIPT_URL'] = env['SCRIPT_NAME'] = ''
return self.django_app(env, start_response)
application = ZamboniApp()
# Uncomment this to figure out what's going on with the mod_wsgi environment.
# def application(env, start_response):