[Checkins] SVN: z3c.formwidget.query/trunk/src/z3c/formwidget/query/ Respect the ignoreRequest parameter.

Israel Saeta Perez dukebody at gmail.com
Sun Jul 25 05:48:53 EDT 2010


Log message for revision 115060:
  Respect the ignoreRequest parameter.

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

-=-
Modified: z3c.formwidget.query/trunk/src/z3c/formwidget/query/README.txt
===================================================================
--- z3c.formwidget.query/trunk/src/z3c/formwidget/query/README.txt	2010-07-25 09:34:01 UTC (rev 115059)
+++ z3c.formwidget.query/trunk/src/z3c/formwidget/query/README.txt	2010-07-25 09:48:53 UTC (rev 115060)
@@ -128,6 +128,16 @@
   >>> 'Sorrento' in widget()
   False
 
+However, the source shouldn't be queried if ``ignoreRequest`` is True.
+
+  >>> request = TestRequest(form={
+  ...     'city.widgets.query': u'bologna'})
+
+  >>> widget = setupWidget(city, location, request)
+  >>> widget.ignoreRequest = True
+  >>> 'Bologna' in widget()
+  False
+
 Selecting 'Bologna' from the list should check the corresponding box.
 
   >>> request = TestRequest(form={
@@ -139,6 +149,29 @@
   >>> 'checked="checked"' in widget()
   True
 
+However, no terms should be added from the request if we're ignoring it.
+
+  >>> request = TestRequest(form={
+  ...     'city': ('bologna',)})
+
+  >>> widget = setupWidget(city, location, request)
+
+  >>> widget.ignoreRequest = True
+  >>> widget.update()
+  >>> 'bologna' in set([term.token for term in widget.terms])
+  False
+
+Nor from the context if we're ignoring it.
+
+  >>> request = TestRequest()
+
+  >>> widget = setupWidget(city, location, request)
+
+  >>> widget.ignoreContext = True
+  >>> widget.update()
+  >>> 'palermo' in set([term.token for term in widget.terms])
+  False
+
 Now we want to try out selection of multiple items.
 
   >>> cities = zope.schema.Set(

Modified: z3c.formwidget.query/trunk/src/z3c/formwidget/query/widget.py
===================================================================
--- z3c.formwidget.query/trunk/src/z3c/formwidget/query/widget.py	2010-07-25 09:34:01 UTC (rev 115059)
+++ z3c.formwidget.query/trunk/src/z3c/formwidget/query/widget.py	2010-07-25 09:48:53 UTC (rev 115060)
@@ -104,7 +104,10 @@
         
         terms = set([])
 
-        request_values = self.extract(default=z3c.form.interfaces.NOVALUE)
+        request_values = z3c.form.interfaces.NOVALUE
+        if not self.ignoreRequest:
+            request_values = self.extract(default=z3c.form.interfaces.NOVALUE)
+
         if request_values is not z3c.form.interfaces.NOVALUE:
             if not isinstance(request_values, (tuple, set, list)):
                 request_values = (request_values,)
@@ -129,19 +132,21 @@
         subform = self.subform = QuerySubForm(QueryContext(), self.request, self.name)
         subform.update()
 
-        data, errors = subform.extractData()
-        if errors:
-            return
+        # Don't carry on any search if we're ignoring the request
+        if not self.ignoreRequest:
+            data, errors = subform.extractData()
+            if errors:
+                return
 
-        # perform the search
+            # perform the search
 
-        query = data['query']
-        if query is not None:
-            query_terms = set(source.search(query))
-            tokens = set([term.token for term in terms])
-            for term in query_terms:
-                if term.token not in tokens:
-                    terms.add(term)
+            query = data['query']
+            if query is not None:
+                query_terms = set(source.search(query))
+                tokens = set([term.token for term in terms])
+                for term in query_terms:
+                    if term.token not in tokens:
+                        terms.add(term)
         
         # set terms
         self.terms = QueryTerms(self.context, self.request, self.form, self.field, self, terms)



More information about the checkins mailing list