87c376aff1760e5a76c48943a439873c9026304f
[webpysample.git] / app.py
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3
4 import web
5 import db
6
7 urls = ('/reset', 'view.reset.Reset',
8         '/(.*)', 'view.index.Index')
9
10 app = web.application(urls, globals())
11
12 # templates
13 render = web.template.render('templates', base='layout')
14
15 # session with reloader
16 if web.config.get('_session') is None:
17     store = web.session.DiskStore('sessions')
18     session = web.session.Session(app, store, {'count': 0})
19     web.config._session = session
20 else:
21     session = web.config._session
22
23 def session_hook():
24     web.ctx.session = session
25     web.ctx.render = render
26 app.add_processor(web.loadhook(session_hook))
27
28 # Sqlalchemy processor
29 def load_sqla(handler):
30     web.ctx.orm = db.connect()
31     try:
32         return handler()
33     except web.HTTPError:
34        web.ctx.orm.commit()
35        raise
36     except:
37         web.ctx.orm.rollback()
38         raise
39     finally:
40         web.ctx.orm.commit()
41
42 app.add_processor(load_sqla)
43
44 if __name__ == '__main__':
45     app.run()
46