[Checkins] SVN: z3c.formwidget.query/trunk/src/z3c/formwidget/query/widget.py Store bound source to avoid looking it up multiple times

Martin Aspeli optilude at gmx.net
Sun Aug 31 18:34:24 EDT 2008


Log message for revision 90633:
  Store bound source to avoid looking it up multiple times
  

Changed:
  U   z3c.formwidget.query/trunk/src/z3c/formwidget/query/widget.py

-=-
Modified: z3c.formwidget.query/trunk/src/z3c/formwidget/query/widget.py
===================================================================
--- z3c.formwidget.query/trunk/src/z3c/formwidget/query/widget.py	2008-08-31 21:14:30 UTC (rev 90632)
+++ z3c.formwidget.query/trunk/src/z3c/formwidget/query/widget.py	2008-08-31 22:34:24 UTC (rev 90633)
@@ -68,23 +68,30 @@
     
     _queryform = None
     _resultsform = None
+    _bound_source = None
 
     @property
     def source(self):
         return self.field.source
+        
+    @property
+    def bound_source(self):
+        if self._bound_source is None:
+            source = self.source
+            if IContextSourceBinder.providedBy(source):
+                source = source(self.context)
+            assert ISource.providedBy(source)
+            self._bound_source = source
+        return self._bound_source
 
     def update(self):
         
         # Allow the source to provide terms until we have more specific ones
         # from the query. Things do not go well if self.terms is None
 
-        source = self.source
-        
-        if IContextSourceBinder.providedBy(source):
-            source = source(self.context)
+        self._bound_source = None
+        source = self.bound_source
 
-        assert ISource.providedBy(source)
-        
         self.terms = SourceTerms(self.context, self.request, self.form, self.field, self, source)
 
         # Set up query form



More information about the Checkins mailing list