]> git.llucax.com Git - software/sercom.git/blobdiff - sercom/menu.py
Hacer que subclases hoja no sean _inheritables.
[software/sercom.git] / sercom / menu.py
index 59c527f50db0a837e884a12d0ad2c03121cc9174..da714d168c7a10c2ac8ee6e73b01c421f5f94346 100644 (file)
@@ -1,13 +1,16 @@
+# vim: set et sw=4 sts=4 encoding=utf-8 foldmethod=marker :
 
 from turbogears import url
 
 from turbogears import url
-from turbogears.controllers import Controller
+from turbogears.identity import SecureResource
 from turbogears import identity
 
 class Menu:
     def __init__(self, base):
         self.base = base
 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 = [i for i in dir(base)
+            if isinstance(getattr(base, i), SecureResource)]
         self.items.sort()
         self.items.sort()
+        self.items = ['dashboard'] + self.items
 
     def _check(self, c):
         return c.require.eval_with_object(identity.current)
 
     def _check(self, c):
         return c.require.eval_with_object(identity.current)
@@ -24,7 +27,7 @@ class Menu:
         """
         s = option % ('', '-----')
         for i in self.items:
         """
         s = option % ('', '-----')
         for i in self.items:
-            if self._check(getattr(self.base, i)):
+            if i == 'dashboard' or self._check(getattr(self.base, i)):
                 s += option % (url('/' + i), i.capitalize().replace('_', ' '))
         return template % s
 
                 s += option % (url('/' + i), i.capitalize().replace('_', ' '))
         return template % s