changeset 471:17ce8bf006d7

The `HTMLFormFiller` stream filter no longer alters form elements for which the data element contains no corresponding item.
author cmlenz
date Thu, 03 May 2007 10:24:14 +0000
parents 5eae4a5c42ac
children 5870bdf03fca
files ChangeLog genshi/filters/html.py
diffstat 2 files changed, 14 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -17,6 +17,8 @@
    function with multiple string arguments (such as ``ngettext``), a single
    item with a tuple of strings is yielded, instead an item for each string
    argument.
+ * The `HTMLFormFiller` stream filter no longer alters form elements for which
+   the data element contains no corresponding item.
 
 
 Version 0.4
--- a/genshi/filters/html.py
+++ b/genshi/filters/html.py
@@ -88,8 +88,8 @@
                         type = attrs.get('type')
                         if type in ('checkbox', 'radio'):
                             name = attrs.get('name')
-                            if name:
-                                value = self.data.get(name)
+                            if name and name in self.data:
+                                value = self.data[name]
                                 declval = attrs.get('value')
                                 checked = False
                                 if isinstance(value, (list, tuple)):
@@ -109,22 +109,24 @@
                                     attrs -= 'checked'
                         elif type in (None, 'hidden', 'text'):
                             name = attrs.get('name')
-                            if name:
-                                value = self.data.get(name)
+                            if name and name in self.data:
+                                value = self.data[name]
                                 if isinstance(value, (list, tuple)):
                                     value = value[0]
                                 if value is not None:
                                     attrs |= [(QName('value'), unicode(value))]
                     elif tagname == 'select':
                         name = attrs.get('name')
-                        select_value = self.data.get(name)
-                        in_select = True
+                        if name in self.data:
+                            select_value = self.data[name]
+                            in_select = True
                     elif tagname == 'textarea':
                         name = attrs.get('name')
-                        textarea_value = self.data.get(name)
-                        if isinstance(textarea_value, (list, tuple)):
-                            textarea_value = textarea_value[0]
-                        in_textarea = True
+                        if name in self.data:
+                            textarea_value = self.data.get(name)
+                            if isinstance(textarea_value, (list, tuple)):
+                                textarea_value = textarea_value[0]
+                            in_textarea = True
                     elif in_select and tagname == 'option':
                         option_start = kind, data, pos
                         option_value = attrs.get('value')
@@ -132,7 +134,6 @@
                         continue
                 yield kind, (tag, attrs), pos
 
-
             elif in_form and kind is TEXT:
                 if in_select and in_option:
                     if option_value is None:
Copyright (C) 2012-2017 Edgewall Software