bin/wsgi-dev.py
author Tero Marttila <terom@fixme.fi>
Wed, 22 Dec 2010 02:52:25 +0200
changeset 6 72c73df76db2
parent 0 b28a1681e79b
child 26 04bf578d358a
permissions -rwxr-xr-x
Split wsgi.py into controllers/customers/urls for now; start orders form
0
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#!/usr/bin/env python
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
"""
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
    Simple test server/environment for WSGI development
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
"""
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
import werkzeug
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
# app import
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
     9
import svv.wsgi
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    10
import svv.database
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    11
import svv.application
0
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
import optparse, logging
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
if __name__ == '__main__' :
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
    parser = optparse.OptionParser()
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
    parser.add_option('-q', '--quiet', action='store_true', help='More output')
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
    parser.add_option('-v', '--verbose', action='store_true', help='More output')
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    20
0
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
    parser.add_option('-p', '--port', type='int', help='Local port to run on', default=8080, metavar='PORT')
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
    parser.add_option('-B', '--bind', help="Local address to listen on", default='localhost', metavar='HOST')
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    24
    parser.add_option('-d', '--database', help="Database connection URI", metavar='URL')
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    25
    parser.add_option(      '--init-database', action='store_true', help="Initialize database (CREATE)")
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    26
0
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
    (options, args) = parser.parse_args()
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
    
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
    if options.quiet :
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
        level = logging.WARN
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
    elif options.verbose :
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
        level = logging.DEBUG
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
    else :
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
        # default
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
        level = logging.INFO
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
    bind = options.bind
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
    port = options.port
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
    assert not args
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
    logging.basicConfig(format="[%(levelname)5s] %(funcName)25s : %(message)s", level=level)
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    46
    # app state
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    47
    application = svv.application.Application(
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    48
            options.database,
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    49
    )
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    50
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    51
    # init?
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    52
    if options.init_database :
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    53
        application.create_tables()
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    54
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    55
    # frontend
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    56
    wsgiapp = svv.wsgi.WSGIApp(
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    57
            application
0
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
    )
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
    # run
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    61
    werkzeug.run_simple(bind, port, wsgiapp, use_reloader=True, use_debugger=True, 
0
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
            static_files    = {
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
                # static resources mounted off app /static
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
                '/static':  'static/',
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
            },
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
    )
b28a1681e79b Initial layout, with hello-world
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67