Gráficas de compras por mes y año
[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         '/purchase/(.*)', 'view.items.Purchase',
17         '/purchase', 'view.items.Purchase',
18         '/prefs', 'view.login.Prefs',
19         '/(.*)', 'view.items.List')
20
21 app = web.application(urls, globals())
22
23 # templates
24 render = web.template.render('templates', base='layout')
25
26 # session with reloader
27 if web.config.get('_session') is None:
28     store = web.session.DiskStore('sessions')
29     session = web.session.Session(app, store, {'count': 0})
30     web.config._session = session
31 else:
32     session = web.config._session
33
34 def session_hook():
35     web.ctx.session = session
36     web.ctx.render = render
37 app.add_processor(web.loadhook(session_hook))
38
39 # Sqlalchemy processor
40 def load_sqla(handler):
41     web.ctx.orm = db.connect()
42     try:
43         return handler()
44     except web.HTTPError:
45        web.ctx.orm.commit()
46        raise
47     except:
48         web.ctx.orm.rollback()
49         raise
50     else:
51         web.ctx.orm.commit()
52
53 app.add_processor(load_sqla)
54
55 if __name__ == '__main__':
56     app.run()
57