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