184:a37007cd39d4
Anton Shestakov <av6@dwimlabs.net>, Wed, 27 Jul 2016 18:39:44 +0800
viewer: shared regular expression for matching project

next change 185:47c8998f49ef
previous change 149:7dc53d7e465f

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, URLSpec
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 = [
URLSpec(r'/', IndexHandler),
URLSpec(project_re, ProjectHandler),
URLSpec(project_re + r'/([\d]+|latest)(?:/(raw))?', CheckHandler),
URLSpec(project_re + r'/status\.svg', StatusHandler),
URLSpec(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 %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()