]> git.llucax.com Git - z.facultad/75.52/sercom.git/blob - sercom/menu.py
Bugfix: InstanciaDeEntrega.observaciones no puede ser None.
[z.facultad/75.52/sercom.git] / sercom / menu.py
1 # vim: set et sw=4 sts=4 encoding=utf-8 foldmethod=marker :
2
3 from turbogears import url
4 from turbogears.identity import SecureResource
5 from turbogears import identity
6
7 class Menu:
8     def __init__(self, base):
9         self.base = base
10         self.items = [i for i in dir(base)
11             if isinstance(getattr(base, i), SecureResource)]
12         self.items.sort()
13         self.items = ['dashboard'] + self.items
14
15     def _check(self, c):
16         if hasattr(c, 'hide_to_admin') and 'admin' in identity.current.permissions: return False
17         if hasattr(c, 'hide_to_entregar') and 'admin' not in identity.current.permissions: return False
18         return c.require.eval_with_object(identity.current)
19
20     def __repr__(self):
21         option = u"""<option value="%s">%s</option>" """
22         template = """
23         <div id="navbar">
24                 Ir a :
25                 <select OnChange="window.location=this.options[this.selectedIndex].value;">
26                     %s
27                 </select>
28             </div>
29         """
30         s = option % ('', '-----')
31         for i in self.items:
32             if i == 'dashboard' or self._check(getattr(self.base, i)):
33                 s += option % (url('/' + i), i.capitalize().replace('_', ' '))
34         return template % s
35