]> git.llucax.com Git - z.facultad/75.52/sercom.git/blobdiff - sercom/menu.py
Mejorar listado de casos de prueba.
[z.facultad/75.52/sercom.git] / sercom / menu.py
index c85b8176d695d2abac2d4c96067f19a65afdfdad..1d90c8929ee649adede1e9b01fc55a69854f6895 100644 (file)
@@ -1,11 +1,35 @@
+# vim: set et sw=4 sts=4 encoding=utf-8 foldmethod=marker :
 
 from turbogears import url
+from turbogears.identity import SecureResource
+from turbogears import identity
+
+class Menu:
+    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):
+        if hasattr(c, 'hide_to_admin') and 'admin' in identity.current.permissions: return False
+        if hasattr(c, 'hide_to_entregar') and 'admin' not in identity.current.permissions: return False
+        return c.require.eval_with_object(identity.current)
+
+    def __repr__(self):
+        option = u"""<option value="%s">%s</option>" """
+        template = """
+        <div id="navbar">
+                Ir a :
+                <select OnChange="window.location=this.options[this.selectedIndex].value;">
+                    %s
+                </select>
+            </div>
+        """
+        s = option % ('', '-----')
+        for i in self.items:
+            if i == 'dashboard' or 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')})