version inicial de la aplicacion de gestion de compras
[compra.git] / compra.py
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3
4 import web
5 import db
6
7 urls = (
8         '/login', 'view.login.Login',
9         '/logout', 'view.login.Logout',
10         '/list', 'view.items.List',
11         '/add/(.*)', 'view.items.Add',
12         '/add', 'view.items.Add',
13         '/delete/(.*)', 'view.items.Delete',
14         '/delete', 'view.items.Delete',
15         '/update', 'view.items.Update', 
16         '/prefs', 'view.login.Prefs',
17         '/(.*)', 'view.items.List')
18
19 app = web.application(urls, globals())
20
21 # templates
22 render = web.template.render('templates', base='layout')
23
24 # session with reloader
25 if web.config.get('_session') is None:
26     store = web.session.DiskStore('sessions')
27     session = web.session.Session(app, store, {'count': 0})
28     web.config._session = session
29 else:
30     session = web.config._session
31
32 def session_hook():
33     web.ctx.session = session
34     web.ctx.render = render
35 app.add_processor(web.loadhook(session_hook))
36
37 # Sqlalchemy processor
38 def load_sqla(handler):
39     web.ctx.orm = db.connect()
40     try:
41         return handler()
42     except web.HTTPError:
43        web.ctx.orm.commit()
44        raise
45     except:
46         web.ctx.orm.rollback()
47         raise
48     else:
49         web.ctx.orm.commit()
50
51 app.add_processor(load_sqla)
52
53 if __name__ == '__main__':
54     app.run()
55