fix django run

This commit is contained in:
Benoit Chesneau 2010-05-17 06:21:28 +02:00 committed by Paul J. Davis
parent b99355e0a7
commit cdffaeff16
3 changed files with 13 additions and 9 deletions

View File

@ -10,6 +10,7 @@ from django.core.handlers.wsgi import WSGIHandler
from django.core.servers.basehttp import AdminMediaHandler, WSGIServerException from django.core.servers.basehttp import AdminMediaHandler, WSGIServerException
from gunicorn import util from gunicorn import util
from gunicorn.config import Config
from gunicorn.app.base import Application from gunicorn.app.base import Application
class DjangoApplication(Application): class DjangoApplication(Application):
@ -30,8 +31,8 @@ class DjangoApplication(Application):
project_name = os.path.split(self.project_path)[-1] project_name = os.path.split(self.project_path)[-1]
settings_name, ext = os.path.splitext(os.path.basename(settings_path)) settings_name, ext = os.path.splitext(os.path.basename(settings_path))
settings_modname = "%s.%s" % (project_name, settings_name) self.settings_modname = "%s.%s" % (project_name, settings_name)
self.cfg.default_proc_name = settings_modname self.cfg.set("default_proc_name", self.settings_modname)
sys.path.insert(0, self.project_path) sys.path.insert(0, self.project_path)
sys.path.append(os.path.join(self.project_path, os.pardir)) sys.path.append(os.path.join(self.project_path, os.pardir))
@ -48,8 +49,12 @@ class DjangoApplication(Application):
class DjangoApplicationCommand(Application): class DjangoApplicationCommand(Application):
def __init__(self, cfg, admin_media_path): def __init__(self, options, admin_media_path):
self.cfg = cfg self.cfg = Config()
for k, v in list(options.items()):
if k.lower() in self.cfg.settings and v is not None:
self.cfg.set(k.lower(), v)
self.admin_media_path = admin_media_path self.admin_media_path = admin_media_path
self.configure_logging() self.configure_logging()

View File

@ -20,7 +20,7 @@ KNOWN_SETTINGS = []
class Config(object): class Config(object):
def __init__(self, usage): def __init__(self, usage=None):
self.settings = dict((s.name, s) for s in KNOWN_SETTINGS) self.settings = dict((s.name, s) for s in KNOWN_SETTINGS)
self.usage = usage self.usage = usage

View File

@ -53,18 +53,17 @@ class Command(BaseCommand):
options['bind'] = addrport or '127.0.0.1' options['bind'] = addrport or '127.0.0.1'
options['default_proc_name'] =settings.SETTINGS_MODULE options['default_proc_name'] =settings.SETTINGS_MODULE
cfg = Config(options, options.get('gconfig'))
admin_media_path = options.get('admin_media_path', '') admin_media_path = options.pop('admin_media_path', '')
quit_command = (sys.platform == 'win32') and 'CTRL-BREAK' or 'CONTROL-C' quit_command = (sys.platform == 'win32') and 'CTRL-BREAK' or 'CONTROL-C'
print "Validating models..." print "Validating models..."
self.validate(display_num_errors=True) self.validate(display_num_errors=True)
print "\nDjango version %s, using settings %r" % (django.get_version(), print "\nDjango version %s, using settings %r" % (django.get_version(),
settings.SETTINGS_MODULE) settings.SETTINGS_MODULE)
print "Development server is running at %s" % str(cfg.address) print "Development server is running at %s" % options['bind']
print "Quit the server with %s." % quit_command print "Quit the server with %s." % quit_command
# django.core.management.base forces the locale to en-us. # django.core.management.base forces the locale to en-us.
translation.activate(settings.LANGUAGE_CODE) translation.activate(settings.LANGUAGE_CODE)
DjangoApplicationCommand(cfg, admin_media_path).run() DjangoApplicationCommand(options, admin_media_path).run()