198:de8211272206
Anton Shestakov <av6@dwimlabs.net>, Fri, 05 Aug 2016 12:45:49 +0800
requirements: Tornado 4.4.1

next change 204:b923c5aa0856
previous change 197:e59198f04d78

viewer.py

Permissions: -rwxr-xr-x

Other formats: Feeds:
#!/usr/bin/env python
from __future__ import absolute_import
import logging
from tornado.ioloop import IOLoop
from tornado.options import define, options
from tornado.web import Application
from candolint import uimodules
from candolint.handlers import IndexHandler, ProjectHandler, CheckHandler, StatusHandler, ErrorHandler
from candolint.models import database
from candolint.utils import rel
define('listen', metavar='IP', default='127.0.0.1')
define('port', metavar='PORT', default=8033, type=int)
define('xheaders', metavar='True|False', default=False, type=bool)
define('debug', metavar='True|False', default=False, type=bool)
class CandolintViewer(Application):
def __init__(self):
project_re = r'/([.a-z0-9_-]+)/([^/]+)/([^/]+)'
handlers = [
(r'/', IndexHandler),
(project_re, ProjectHandler),
(project_re + r'/([\d]+|latest)(?:/(raw))?', CheckHandler),
(project_re + r'/status\.svg', StatusHandler),
(r'.*', ErrorHandler, {'status_code': 404})
]
settings = dict(
static_path=rel('static'),
template_path=rel('templates'),
ui_modules=uimodules,
debug=options.debug
)
super(CandolintViewer, self).__init__(handlers, **settings)
if options.debug:
logging.getLogger('peewee').setLevel(logging.DEBUG)
database.init(rel('database.sqlite'))
def listen(self, port, address='', **kwargs):
name = self.__class__.__name__
logging.info('%s is serving on http://%s:%d/', name, address, port)
super(CandolintViewer, self).listen(port, address, **kwargs)
def main():
options.parse_command_line()
application = CandolintViewer()
application.listen(options.port, options.listen, xheaders=options.xheaders)
IOLoop.current().start()
if __name__ == '__main__':
main()