X-Git-Url: https://git.llucax.com/software/sercom.git/blobdiff_plain/e40b04360d0bcae590d1d9df544d6a96ed1cb52a..19fa62cf74f6548abcdcaee9871cd5cb6f1e089e:/sercom/menu.py diff --git a/sercom/menu.py b/sercom/menu.py index c85b817..59c527f 100644 --- a/sercom/menu.py +++ b/sercom/menu.py @@ -1,11 +1,30 @@ from turbogears import url +from turbogears.controllers import Controller +from turbogears import identity + +class Menu: + def __init__(self, base): + self.base = base + self.items = filter(lambda i: isinstance(getattr(base, i), Controller), base.__dict__) + self.items.sort() + + def _check(self, c): + return c.require.eval_with_object(identity.current) + + def __repr__(self): + option = u"""" """ + template = """ +
+ """ + s = option % ('', '-----') + for i in self.items: + if self._check(getattr(self.base, i)): + s += option % (url('/' + i), i.capitalize().replace('_', ' ')) + return template % s -menu = [] -menu.append({'name': 'Alumnos', 'url':url('/alumno')}) -menu.append({'name': 'Docentes', 'url':url('/docente')}) -menu.append({'name': 'Grupos', 'url':url('/grupo')}) -menu.append({'name': 'Enunciados', 'url':url('/enunciado')}) -menu.append({'name': 'Ejercicios', 'url':url('/ejercicio')}) -menu.append({'name': 'Casos de Prueba', 'url':url('/caso_de_prueba')}) -menu.append({'name': 'Cursos', 'url':url('/curso')})