[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