X-Git-Url: https://git.llucax.com/z.facultad/75.52/sercom.git/blobdiff_plain/e15ddf8239855251a909264679fe632f0e6cc50c..c5e6579e46589c8af4175e16283337bc0ac75df6:/sercom/menu.py diff --git a/sercom/menu.py b/sercom/menu.py index 5a2e6b9..da714d1 100644 --- a/sercom/menu.py +++ b/sercom/menu.py @@ -1,18 +1,23 @@ +# vim: set et sw=4 sts=4 encoding=utf-8 foldmethod=marker : from turbogears import url -from turbogears import controllers +from turbogears.identity import SecureResource +from turbogears import identity class Menu: - def __init__(self, controller): - # Armo la lista de subcontrollers - self.items = [] - for i in controller.__dict__: - if isinstance(getattr(controller, i),controllers.Controller): - self.items.append(i) + def __init__(self, base): + self.base = base + self.items = [i for i in dir(base) + if isinstance(getattr(base, i), SecureResource)] self.items.sort() + self.items = ['dashboard'] + self.items + + def _check(self, c): + return c.require.eval_with_object(identity.current) def __repr__(self): - t = """ + option = u"""" """ + template = """ """ - s = '' + s = option % ('', '-----') for i in self.items: - s = s + u"""" """ % (url('/' + i), i.capitalize().replace('_', ' ')) - return t % s + if i == 'dashboard' or self._check(getattr(self.base, i)): + s += option % (url('/' + i), i.capitalize().replace('_', ' ')) + return template % s