Primeros pasos para tener un admin de modelos
[webpysample.git] / admin / admin.py
1 import os
2 import web
3 from sqlalchemy.orm.attributes import QueryableAttribute
4
5 import config
6
7 PATH = os.path.realpath(__file__)
8
9
10 class AdminModel:
11     def __init__(self, model):
12         self.model = model
13         self.name = model.__name__
14         self._get_fields()
15
16     def _get_fields(self):
17         self.fields = {}
18         u = self.model
19         fields = [getattr(u, i) for i in dir(u) if isinstance(getattr(u, i), QueryableAttribute)] 
20         for i in fields:
21             c = i.property.columns[0]
22             self.fields[c.name] = i
23
24
25 class Index:
26     def GET(self, *args):
27         ms = [AdminModel(i) for i in web.ctx.registered]
28         render = web.template.render('admin/templates', base='layout')
29         return render.index(ms)
30
31 class AdminView:
32     def GET(self, id):
33         m = None
34         for i in web.ctx.registered:
35             m = AdminModel(i)
36             if m.name == id:
37                 break
38         if not m:
39             raise web.seeother('/admin')
40
41         orm = web.ctx.orm
42         render = web.template.render('admin/templates', base='layout')
43
44         all = orm.query(m.model).all()
45
46         return render.view(m, all)
47
48     def POST(self):
49         pass