Index: ../../django/django/core/management.py
===================================================================
--- ../../django/django/core/management.py (revision 4306)
+++ ../../django/django/core/management.py (working copy)
@@ -1136,6 +1136,65 @@
inner_run()
runserver.args = '[--noreload] [--adminmedia=ADMIN_MEDIA_PATH]
[optional port number, or ipaddr:port]'
+def runcherrypy(addr, port, use_reloader=True, admin_media_dir=''):
+ "Starts a cherrypy Web server for development, with the paste
translogger middleware."
+ from django.core.servers.basehttp import run, AdminMediaHandler,
WSGIServerException
+ from django.core.handlers.wsgi import WSGIHandler
+ from cherrypy import wsgiserver
+ from paste import translogger
+
+ if not addr:
+ addr = '127.0.0.1'
+ if not port.isdigit():
+ sys.stderr.write(style.ERROR("Error: %r is not a valid port
number.\n" % port))
+ sys.exit(1)
+ quit_command = sys.platform == 'win32' and 'CTRL-BREAK' or
'CONTROL-C'
+
+ def inner_run():
+ from django.conf import settings
+ print "Validating models..."
+ validate()
+ fRed = chr(27) + '[31m'
+ fNone = chr(27) + '[0m'
+ print "\nDjango version %s, using settings %r" %
(get_version(), settings.SETTINGS_MODULE)
+ print "%sCherryPy server%s is running at http://%s:%s/" %
(fRed, fNone, addr, port)
+ print "Quit the server with %s." % quit_command
+ try:
+ import django
+ path = admin_media_dir or django.__path__[0] +
'/contrib/admin/media'
+ handler = AdminMediaHandler(WSGIHandler(), path)
+
+ # wrap handler in logger middleware
+ handler = translogger.TransLogger(
+ handler,
+ format = '[%(time)s] "%(REQUEST_METHOD)s
%(REQUEST_URI)s %(HTTP_VERSION)s" %(status)s %(bytes)s',
+ setup_console_handler=True
+ )
+ server = wsgiserver.CherryPyWSGIServer((addr, int(port)),
handler, server_name=addr)
+ server.start()
+ except WSGIServerException, e:
+ # Use helpful error messages instead of ugly tracebacks.
+ ERRORS = {
+ 13: "You don't have permission to access that port.",
+ 98: "That port is already in use.",
+ 99: "That IP address can't be assigned-to.",
+ }
+ try:
+ error_text = ERRORS[e.args[0].args[0]]
+ except (AttributeError, KeyError):
+ error_text = str(e)
+ sys.stderr.write(style.ERROR("Error: %s" % error_text) +
'\n')
+ sys.exit(1)
+ except KeyboardInterrupt:
+ sys.exit(0)
+ if use_reloader:
+ from django.utils import autoreload
+ autoreload.main(inner_run)
+ else:
+ inner_run()
+runcherrypy.args = '[--noreload] [--adminmedia=ADMIN_MEDIA_PATH]
[optional port number, or ipaddr:port]'
+
+
def createcachetable(tablename):
"Creates the table needed to use the SQL cache backend"
from django.db import backend, connection, transaction,
get_creation_module, models
@@ -1251,6 +1310,7 @@
'reset': reset,
'runfcgi': runfcgi,
'runserver': runserver,
+ 'runcherrypy': runcherrypy,
'shell': run_shell,
'sql': get_sql_create,
'sqlall': get_sql_all,
@@ -1386,6 +1446,16 @@
except ValueError:
addr, port = '', args[1]
action_mapping[action](addr, port, options.use_reloader,
options.admin_media_path)
+ elif action =='runcherrypy':
+ if len(args) < 2:
+ addr = ''
+ port = '8000'
+ else:
+ try:
+ addr, port = args[1].split(':')
+ except ValueError:
+ addr, port = '', args[1]
+ action_mapping[action](addr, port, options.use_reloader,
options.admin_media_path)
elif action == 'runfcgi':
action_mapping[action](args[1:])
else:
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-developers?hl=en
-~----------~----~----~----~------~----~------~--~---