summaryrefslogtreecommitdiffstats
path: root/module/web/run_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/web/run_server.py')
-rwxr-xr-xmodule/web/run_server.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/module/web/run_server.py b/module/web/run_server.py
new file mode 100755
index 000000000..34fca46c8
--- /dev/null
+++ b/module/web/run_server.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import os
+import sys
+import django
+from django.core.servers.basehttp import AdminMediaHandler, WSGIServerException, WSGIServer, WSGIRequestHandler
+from django.core.handlers.wsgi import WSGIHandler
+
+os.environ["DJANGO_SETTINGS_MODULE"] = 'settings'
+
+class Output:
+ def __init__(self, stream):
+ self.stream = stream
+ def write(self, data): # Do nothing
+ return None
+ #self.stream.write(data)
+ #self.stream.flush()
+ def __getattr__(self, attr):
+ return getattr(self.stream, attr)
+
+#sys.stderr = Output(sys.stderr)
+#sys.stdout = Output(sys.stdout)
+
+def handle(* args):
+ try:
+ if len(args) == 1:
+ try:
+ addr, port = args[0].split(":")
+ except:
+ addr = "127.0.0.1"
+ port = args[0]
+ else:
+ addr = args[0]
+ port = args[1]
+ except:
+ addr = '127.0.0.1'
+ port = '8000'
+
+ #print addr, port
+
+ admin_media_path = ''
+ shutdown_message = ''
+ quit_command = (sys.platform == 'win32') and 'CTRL-BREAK' or 'CONTROL-C'
+
+ from django.conf import settings
+ from django.utils import translation
+
+ #print "Django version %s, using settings %r" % (django.get_version(), settings.SETTINGS_MODULE)
+ #print "Development server is running at http://%s:%s/" % (addr, port)
+ #print "Quit the server with %s." % quit_command
+
+ translation.activate(settings.LANGUAGE_CODE)
+
+ try:
+ handler = AdminMediaHandler(WSGIHandler(), admin_media_path)
+ run(addr, int(port), handler)
+
+ 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(("Error: %s" % error_text) + '\n')
+ # Need to use an OS exit because sys.exit doesn't work in a thread
+ #os._exit(1)
+ except KeyboardInterrupt:
+ if shutdown_message:
+ print shutdown_message
+ sys.exit(0)
+
+class ownRequestHandler(WSGIRequestHandler):
+ def log_message(self, format, *args):
+ return
+
+
+def run(addr, port, wsgi_handler):
+ server_address = (addr, port)
+ httpd = WSGIServer(server_address, ownRequestHandler)
+ httpd.set_app(wsgi_handler)
+ httpd.serve_forever()
+
+if __name__ == "__main__":
+ handle(*sys.argv[1:])