summaryrefslogtreecommitdiff
path: root/examples/todo_wareweb/web/__init__.py
blob: 0fca385332b68b7bedad4e3574b9c7177d75a901 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from paste.util import thirdparty
thirdparty.add_package('sqlobject')
import sqlobject
from todo_wareweb import db

conns = {}

def urlparser_hook(environ):
    if not environ.has_key('todo_wareweb.base_url'):
        environ['todo_wareweb.base_url'] = environ['SCRIPT_NAME']

def urlparser_wrap(environ, start_response, app):
    db_uri = environ['paste.config']['database']
    first_conn = False
    if db_uri in conns:
        conn = conns[db_uri]
    else:
        first_conn = True
        conns[db_uri] = conn = sqlobject.connectionForURI(db_uri)
    sqlobject.sqlhub.threadConnection = conn
    if first_conn:
        db.check_db()
    # @@: This doesn't allow for using database connections during
    # the application iterator
    try:
        return app(environ, start_response)
    finally:
        sqlobject.sqlhub.threadConnection = None