[sylvain] r51079 - Formulator/trunk

[email protected] Wed, 11 Sep 2013 18:20:42 +0200 (CEST)
Newsgroups gmane.comp.web.zope.silva.cvs
Message-ID <[email protected]>
Author: sylvain
Date: Wed Sep 11 18:20:42 2013
New Revision: 51079

Modified:
   Formulator/trunk/Widget.py
Log:
Moar unicode fixes.


Modified: Formulator/trunk/Widget.py
==============================================================================
--- Formulator/trunk/Widget.py	(original)
+++ Formulator/trunk/Widget.py	Wed Sep 11 18:20:42 2013
@@ -729,7 +729,7 @@
               'extra': extra_item}
         if html_id:
             kw['id'] = html_id
-        contents = render_element('input', **kw) + text
+        contents = render_element('input', **kw) + render_unicode(text)
         return render_element('label', contents=contents)
 
     def render_selected_item(self, text, value, key, css_class, extra_item, html_id):
@@ -1076,6 +1076,13 @@
 
 LabelWidgetInstance = LabelWidget()
 
+def render_unicode(value):
+    if not isinstance(value, unicode):
+        if isinstance(value, str):
+            return value.decode('utf-8', 'replace')
+        return unicode(value)
+    return value
+
 def render_tag(tag, css_class=None, extra=None, **attributes):
     result = [tag]
 
@@ -1101,12 +1108,7 @@
     """
 
     if 'contents' in kwargs:
-        contents = kwargs.pop('contents')
-        if not isinstance(contents, unicode):
-            if isinstance(contents, str):
-                contents = contents.decode('utf-8', 'replace')
-            else:
-                contents = unicode(contents)
+        contents = render_unicode(kwargs.pop('contents'))
         return u"%s>%s</%s>" % (render_tag(tag, **kwargs), contents, tag)
     return render_tag(tag, **kwargs) + " />"
 
@@ -1119,9 +1121,4 @@
         if not isinstance(separator, unicode):
             separator = unicode(separator, 'utf-8')
         value = separator.join(value)
-    if not isinstance(value, unicode):
-        if isinstance(value, str):
-            value = value.decode('utf-8', 'replace')
-        else:
-            value = unicode(value)
-    return cgi.escape(value)
+    return cgi.escape(render_unicode(value))