master
1#!/usr/bin/env python3
2
3import os
4import sys
5import config
6import tornado.web
7from tornado.web import StaticFileHandler
8import tornado.options
9
10from handlers import *
11join = os.path.join
12
13from tornado.options import define, options
14define("port", help="run on the given port", type=int)
15define("debug", default=False, help="set debug mode", type=bool)
16
17
18
19class Application(tornado.web.Application):
20 def __init__(self, **settings):
21 settings['template_path'] = os.path.join(os.path.dirname(__file__), "templates")
22 settings['static_path'] = os.path.join(os.path.dirname(__file__), "static")
23 settings['cookie_secret'] = config.COOKIE_SECRET
24 handlers = [
25 (r"/", TemplateHandler),
26 (r"/(about|contact|survey|data)", TemplateHandler),
27
28 (r"/survey/(build)/.*", TemplateHandler),
29 (r"/survey/(translate)/(.*)", TemplateHandler),
30 (r"/survey/(generate)/(.*)", PDFSurveyHandler),
31
32 (r"/data/load/(.*)", TemplateHandler),
33 (r"/data/analyze/(.*)", TemplateHandler),
34 (r"/data/export/(.*)", DataHandler),
35
36 (r'/static/(.*)', tornado.web.StaticFileHandler, {'path': settings['static_path']}),
37 (r"/(favicon.png)", StaticFileHandler, {"path":config.ROOT},),
38 (r"/js/(.*)", MultiStaticFileHandler, {"paths":[join(config.BOOTSTRAP, "js",),join(config.JQUERY)]},),
39 (r"/css/(.*)", StaticFileHandler, {"path":join(config.BOOTSTRAP, "css")},),
40 (r"/font/(.*)", StaticFileHandler, {"path":join(config.BOOTSTRAP, "fonts")},),
41 ]
42 tornado.web.Application.__init__(self, handlers, **settings)
43
44
45def main():
46 tornado.options.parse_command_line()
47 app = Application(debug=options.debug)
48 host = '0.0.0.0' if options.debug else ''
49 app.listen(options.port, address=host)
50 tornado.ioloop.IOLoop.instance().start()
51
52if __name__ == "__main__":
53 main()