[Checkins] SVN: z3c.form/trunk/src/z3c/form/widget. SequenceWidget DISPLAY_MODE: silently ignore missing tokens, because INPUT_MODE and HIDDEN_MODE does that too

Adam Groszer cvs-admin at zope.org
Thu Sep 6 09:19:59 UTC 2012


Log message for revision 127740:
  SequenceWidget DISPLAY_MODE: silently ignore missing tokens, because INPUT_MODE and HIDDEN_MODE does that too

Changed:
  U   z3c.form/trunk/src/z3c/form/widget.py
  U   z3c.form/trunk/src/z3c/form/widget.txt

-=-
Modified: z3c.form/trunk/src/z3c/form/widget.py
===================================================================
--- z3c.form/trunk/src/z3c/form/widget.py	2012-09-06 09:19:56 UTC (rev 127739)
+++ z3c.form/trunk/src/z3c/form/widget.py	2012-09-06 09:19:58 UTC (rev 127740)
@@ -193,7 +193,12 @@
             # Ignore no value entries. They are in the request only.
             if token == self.noValueToken:
                 continue
-            term = self.terms.getTermByToken(token)
+            try:
+                term = self.terms.getTermByToken(token)
+            except LookupError:
+                # silently ignore missing tokens, because INPUT_MODE and
+                # HIDDEN_MODE does that too
+                continue
             if zope.schema.interfaces.ITitledTokenizedTerm.providedBy(term):
                 value.append(translate(
                     term.title, context=self.request, default=term.title))
@@ -217,7 +222,7 @@
     def extract(self, default=interfaces.NO_VALUE):
         """See z3c.form.interfaces.IWidget."""
         if (self.name not in self.request and
-            self.name+'-empty-marker' in self.request):
+            self.name + '-empty-marker' in self.request):
             return []
         value = self.request.get(self.name, default)
         if value != default:

Modified: z3c.form/trunk/src/z3c/form/widget.txt
===================================================================
--- z3c.form/trunk/src/z3c/form/widget.txt	2012-09-06 09:19:56 UTC (rev 127739)
+++ z3c.form/trunk/src/z3c/form/widget.txt	2012-09-06 09:19:58 UTC (rev 127740)
@@ -491,6 +491,12 @@
   >>> seqWidget.displayValue
   [u'Value 1', u'Value 2']
 
+Unknown values/terms get silently ignored.
+
+  >>> seqWidget.value = ('v3', 'v4')
+  >>> seqWidget.displayValue
+  [u'Value 3']
+
 When input forms are directly switched to display forms within the same
 request, it can happen that the value contains the "--NOVALUE--" token
 entry. This entry should be silently ignored:



More information about the checkins mailing list