]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
fix to new TypeDecorator
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 1 Jan 2008 01:47:58 +0000 (01:47 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 1 Jan 2008 01:47:58 +0000 (01:47 +0000)
lib/sqlalchemy/types.py
test/sql/testtypes.py

index 83e388c4f32d447b14077c07220cb3a34a1e5707..f51f77a2e92905e2ba8efd5fdcfdd2845fbf7048 100644 (file)
@@ -246,7 +246,9 @@ class TypeDecorator(AbstractType):
                     return impl_processor(self.process_bind_param(value, dialect))
                 return process
             else:
-                return self.process_bind_param
+                def process(value):
+                    return self.process_bind_param(value, dialect)
+                return process
         else:
             return self.impl.bind_processor(dialect)
 
@@ -258,7 +260,9 @@ class TypeDecorator(AbstractType):
                     return self.process_result_value(impl_processor(value), dialect)
                 return process
             else:
-                return self.process_result_value
+                def process(value):
+                    return self.process_result_value(value, dialect)
+                return process
         else:
             return self.impl.result_processor(dialect)
 
index cb6a3385f58e9fe4f15998cd8e9823aeb3b637d3..eeb4a373f3e02d9c35ba06c6d690ceb8ba2ed36d 100644 (file)
@@ -50,6 +50,18 @@ class MyNewUnicodeType(types.TypeDecorator):
     def copy(self):
         return MyNewUnicodeType(self.impl.length)
 
+class MyNewIntType(types.TypeDecorator):
+    impl = Integer
+
+    def process_bind_param(self, value, dialect):
+        return value * 10
+
+    def process_result_value(self, value, dialect):
+        return value * 10
+
+    def copy(self):
+        return MyNewIntType()
+
 class MyUnicodeType(types.TypeDecorator):
     impl = Unicode
 
@@ -203,17 +215,20 @@ class UserDefinedTest(PersistTest):
     def testprocessing(self):
 
         global users
-        users.insert().execute(user_id = 2, goofy = 'jack', goofy2='jack', goofy3='jack', goofy4=u'jack', goofy5=u'jack', goofy6='jack', goofy7=u'jack')
-        users.insert().execute(user_id = 3, goofy = 'lala', goofy2='lala', goofy3='lala', goofy4=u'lala', goofy5=u'lala', goofy6='lala', goofy7=u'lala')
-        users.insert().execute(user_id = 4, goofy = 'fred', goofy2='fred', goofy3='fred', goofy4=u'fred', goofy5=u'fred', goofy6='fred', goofy7=u'fred')
+        users.insert().execute(user_id = 2, goofy = 'jack', goofy2='jack', goofy3='jack', goofy4=u'jack', goofy5=u'jack', goofy6='jack', goofy7=u'jack', goofy8=12)
+        users.insert().execute(user_id = 3, goofy = 'lala', goofy2='lala', goofy3='lala', goofy4=u'lala', goofy5=u'lala', goofy6='lala', goofy7=u'lala', goofy8=15)
+        users.insert().execute(user_id = 4, goofy = 'fred', goofy2='fred', goofy3='fred', goofy4=u'fred', goofy5=u'fred', goofy6='fred', goofy7=u'fred', goofy8=9)
 
         l = users.select().execute().fetchall()
-        for assertstr, row in zip(
+        for assertstr, assertint, row in zip(
             ["BIND_INjackBIND_OUT", "BIND_INlalaBIND_OUT", "BIND_INfredBIND_OUT"],
+            [1200, 1500, 900],
             l
+            
         ):
-            for col in row[1:]:
+            for col in row[1:8]:
                 self.assertEquals(col, assertstr)
+            self.assertEquals(row[8], assertint)
             for col in (row[4], row[5], row[7]):
                 assert isinstance(col, unicode)
                 
@@ -235,6 +250,7 @@ class UserDefinedTest(PersistTest):
             Column('goofy5', LegacyUnicodeType, nullable = False),
             Column('goofy6', LegacyType, nullable = False),
             Column('goofy7', MyNewUnicodeType, nullable = False),
+            Column('goofy8', MyNewIntType, nullable = False),
 
         )