]> git.llucax.com Git - software/sercom.git/blobdiff - sercom/menu.py
Poner como no obligatorio el comando para ComandoPrueba y RET_PRUEBA como retorno...
[software/sercom.git] / sercom / menu.py
index 5a2e6b9b689ba859f1ac638a003ef626d0d26d0c..beb4f57783d38b33a4624807057cbe3451c47dae 100644 (file)
@@ -1,18 +1,25 @@
+# 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):
+        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):
-        t = """
+        option = u"""<option value="%s">%s</option>" """
+        template = """
         <div id="navbar">
                        Ir a :
                        <select OnChange="window.location=this.options[this.selectedIndex].value;">
@@ -20,8 +27,9 @@ class Menu:
                        </select>
                </div>
         """
-        s = ''
+        s = option % ('', '-----')
         for i in self.items:
-            s = s + u"""<option value="%s">%s</option>" """ % (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