degal/utils.py
changeset 73 8897352630a5
parent 59 fbbe956229cc
child 75 18b3b1926720
--- a/degal/utils.py	Fri Jun 05 23:05:49 2009 +0300
+++ b/degal/utils.py	Fri Jun 05 23:06:06 2009 +0300
@@ -18,35 +18,56 @@
 
         self.value = None
 
-    def run (self) :
+    def run (self, obj) :
         """
             Run the background func and return the to-be-cached value
         """
 
-        return super(LazyProperty, self).__call__()
+        return super(LazyProperty, self).__call__(obj)
+ 
+    def get (self, obj) :
+        """
+            Return the cached value
+        """
 
-    def __call__ (self) :
+        xxx
+    
+    def set (self, obj, value) :
+        """
+            Set the cached value
+        """
+
+        xxx
+
+    def test (self, obj) :
+        """
+            Tests if a value is set
+        """
+
+        xxx
+       
+    def __call__ (self, obj) :
         """
             Return the cached value if it exists, otherwise, call the func
         """
 
-        if not self.value :
+        if self.test(obj):
             # generate it
-            self.value = self.run()
+            self.set(obj, self.run(obj))
 
-        return self.value
+        return self.get(obj)
 
 class LazyIteratorProperty (LazyProperty) :
     """
         A lazy-loaded property that automatically converts an iterator/genexp into a list.
     """
 
-    def run (self) :
+    def run (self, obj) :
         """
             Wrap LazyProperty.run to return a list
         """
 
-        return list(super(LazyIteratorProperty, self).run())
+        return list(super(LazyIteratorProperty, self).run(obj))
 
 lazy_load = LazyProperty
 lazy_load_iter = LazyIteratorProperty