Switch to side-by-side view

--- a/Allura/allura/app.py
+++ b/Allura/allura/app.py
@@ -176,6 +176,7 @@
         Application. Default is True.
     :cvar list permissions: Named permissions used by instances of this
         Application. Default is [].
+    :cvar dict permissions_desc: Descriptions of the named permissions.
     :cvar bool installable: Default is True, Application can be installed in
         projects.
     :cvar bool hidden: Default is False, Application is not hidden from the
@@ -282,12 +283,10 @@
         Returns empty string if there is no description for ``permission``.
 
         """
-        if not hasattr(cls, '_permissions_desc'):
-            d = {}
-            for t in reversed(cls.__mro__):
-                d = dict(d, **getattr(t, 'permissions_desc', {}))
-            cls._permissions_desc = d
-        return cls._permissions_desc.get(permission, '')
+        d = {}
+        for t in reversed(cls.__mro__):
+            d = dict(d, **getattr(t, 'permissions_desc', {}))
+        return d.get(permission, '')
 
     def parent_security_context(self):
         """Return the parent of this object.