Allow memoize_cleanup to work with dicts or objects
diff --git a/Allura/allura/lib/decorators.py b/Allura/allura/lib/decorators.py
index 7197748..406be72 100644
--- a/Allura/allura/lib/decorators.py
+++ b/Allura/allura/lib/decorators.py
@@ -176,11 +176,15 @@
 
 def memoize_cleanup(obj):
     """
-    Remove any _memoize_dic_* keys (if obj is a dict/obj hybrid) that were created by @memoize on methods
+    Remove any _memoize_dic_* keys that were created by @memoize on methods
     """
-    for k in list(obj.keys()):
+    attrs = obj.keys() if hasattr(obj, 'keys') else obj.__dir__()
+    for k in list(attrs):
         if k.startswith('_memoize_dic'):
-            del obj[k]
+            try:
+                del obj[k]
+            except TypeError:
+                delattr(obj, k)
 
 
 def memorable_forget():