Author: bbangert
Date: 2006-06-03 09:44:34 -0600 (Sat, 03 Jun 2006)
New Revision: 1796

Modified:
   FormEncode/trunk/formencode/validators.py
Log:
Unicode validator contained two from_python's and no to_python. Bringing up to 
date with working Unicode validator from TurboGears.

Modified: FormEncode/trunk/formencode/validators.py
===================================================================
--- FormEncode/trunk/formencode/validators.py   2006-05-30 02:21:35 UTC (rev 
1795)
+++ FormEncode/trunk/formencode/validators.py   2006-06-03 15:44:34 UTC (rev 
1796)
@@ -1007,31 +1007,37 @@
         u''
         >>> UnicodeString(encoding='utf-7').from_python('Ni Ni Ni')
         u'Ni Ni Ni'
+    
     """
-    
     encoding = 'utf-8'
+    messages = {
+        'badEncoding' : "Invalid data or incorrect encoding",
+    }
     
-    def _from_python(self, value, state):
+    def __init__(self, inputEncoding=None, outputEncoding=None, **kw):
+        String.__init__(self, **kw)
+        self.inputEncoding = inputEncoding or self.encoding
+        self.outputEncoding = outputEncoding or self.encoding
+    
+    def _to_python(self, value, state):
         if value:
             if isinstance(value, unicode):
                 return value
             if hasattr(value, '__unicode__'):
                 return unicode(value)
-            return unicode(value, self.encoding)
-        if value == 0:
-            return unicode(value, self.encoding)
-        return unicode("", self.encoding)
+            try:
+                return unicode(value, self.inputEncoding)
+            except UnicodeDecodeError:
+                raise Invalid(self.message('badEncoding', state), value, state)
+        return u''
     
     def _from_python(self, value, state):
         if hasattr(value, '__unicode__'):
             value = unicode(value)
         if isinstance(value, unicode):
-            return value.encode(self.encoding)
+            return value.encode(self.outputEncoding)
         return str(value)
 
-    def empty_value(self, value):
-        return unicode("", self.encoding)
-
 class Set(FancyValidator):
 
     """



_______________________________________________
FormEncode-CVS mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/formencode-cvs

Reply via email to