terom@0: #!/usr/bin/env python terom@0: """ terom@0: Simple test server/environment for WSGI development terom@0: """ terom@0: terom@0: import werkzeug terom@0: terom@0: # app import terom@6: import svv.wsgi terom@6: import svv.database terom@6: import svv.application terom@0: terom@0: import optparse, logging terom@0: terom@0: terom@0: if __name__ == '__main__' : terom@0: parser = optparse.OptionParser() terom@0: parser.add_option('-q', '--quiet', action='store_true', help='More output') terom@0: parser.add_option('-v', '--verbose', action='store_true', help='More output') terom@26: parser.add_option('-D', '--debug', action='store_true', help="Even more output (SQL queries)") terom@6: terom@0: parser.add_option('-p', '--port', type='int', help='Local port to run on', default=8080, metavar='PORT') terom@0: parser.add_option('-B', '--bind', help="Local address to listen on", default='localhost', metavar='HOST') terom@0: terom@6: parser.add_option('-d', '--database', help="Database connection URI", metavar='URL') terom@6: parser.add_option( '--init-database', action='store_true', help="Initialize database (CREATE)") terom@6: terom@0: (options, args) = parser.parse_args() terom@0: terom@26: # defaults terom@26: level = logging.INFO terom@26: sql_echo = False terom@26: terom@0: if options.quiet : terom@0: level = logging.WARN terom@0: terom@26: if options.verbose : terom@0: level = logging.DEBUG terom@26: terom@26: if options.debug : terom@26: level = logging.DEBUG terom@26: sql_echo = True terom@0: terom@0: bind = options.bind terom@0: port = options.port terom@0: terom@0: assert not args terom@0: terom@0: logging.basicConfig(format="[%(levelname)5s] %(funcName)25s : %(message)s", level=level) terom@0: terom@26: if sql_echo : terom@26: # echo SQL queries terom@26: logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO) terom@26: terom@6: # app state terom@6: application = svv.application.Application( terom@6: options.database, terom@6: ) terom@6: terom@6: # init? terom@6: if options.init_database : terom@6: application.create_tables() terom@6: terom@6: # frontend terom@6: wsgiapp = svv.wsgi.WSGIApp( terom@6: application terom@0: ) terom@0: terom@0: # run terom@6: werkzeug.run_simple(bind, port, wsgiapp, use_reloader=True, use_debugger=True, terom@0: static_files = { terom@0: # static resources mounted off app /static terom@0: '/static': 'static/', terom@0: }, terom@0: ) terom@0: