From 71d3bd85cc799b56615fa2c01391a267ad534d7c Mon Sep 17 00:00:00 2001 From: Nikolay Markov Date: Mon, 10 Sep 2012 13:53:14 +0400 Subject: [PATCH] static file handling fix --- nailgun/manage.py | 6 +++++- nailgun/urls.py | 2 +- nailgun/webui/handlers.py | 15 +++++++++++++++ nailgun/webui/urls.py | 5 +++-- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/nailgun/manage.py b/nailgun/manage.py index aaf222371..829d91b7c 100755 --- a/nailgun/manage.py +++ b/nailgun/manage.py @@ -36,6 +36,10 @@ if __name__ == "__main__": runwsgi_parser = subparsers.add_parser( 'runwsgi', help='run WSGI application' ) + runwsgi_parser.add_argument( + '-p', '--port', dest='port', action='store', type=str, + help='application port', default='8000' + ) test_parser = subparsers.add_parser( 'test', help='run unit tests' ) @@ -86,7 +90,7 @@ if __name__ == "__main__": else: logging.info("Running WSGI app...") server = web.httpserver.WSGIServer( - ("0.0.0.0", 8080), + ("0.0.0.0", int(params.port)), app.wsgifunc() ) try: diff --git a/nailgun/urls.py b/nailgun/urls.py index 9968f24c3..d3a74e0e3 100644 --- a/nailgun/urls.py +++ b/nailgun/urls.py @@ -5,5 +5,5 @@ from webui.urls import webui_app urls = ( "/api", api_app, - "/", webui_app + "", webui_app ) diff --git a/nailgun/webui/handlers.py b/nailgun/webui/handlers.py index 7197d9030..93d83b602 100644 --- a/nailgun/webui/handlers.py +++ b/nailgun/webui/handlers.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- import web +import mimetypes +import posixpath from settings import settings render = web.template.render(settings.TEMPLATE_DIR) @@ -9,3 +11,16 @@ render = web.template.render(settings.TEMPLATE_DIR) class IndexHandler(object): def GET(self): return render.index() + + +class StaticHandler(object): + def GET(self, fl): + fl_path = posixpath.join(settings.STATIC_DIR, fl) + mimetype = mimetypes.guess_type(fl_path)[0] + if mimetype: + web.header("Content-Type", mimetype) + try: + f = open(fl_path, 'r') + return f.read() + except: + raise web.notfound() diff --git a/nailgun/webui/urls.py b/nailgun/webui/urls.py index 3f63372cc..0489e16b6 100644 --- a/nailgun/webui/urls.py +++ b/nailgun/webui/urls.py @@ -2,10 +2,11 @@ import web -from webui.handlers import IndexHandler +from webui.handlers import IndexHandler, StaticHandler urls = ( - r"", 'IndexHandler', + r"/static/(.*)", 'StaticHandler', + r"/", 'IndexHandler', ) webui_app = web.application(urls, locals())