Author: phd
Date: 2006-10-11 08:45:43 -0600 (Wed, 11 Oct 2006)
New Revision: 2009
Modified:
home/phd/SQLObject/paramstyles/sqlobject/col.py
home/phd/SQLObject/paramstyles/sqlobject/tests/test_enum.py
Log:
Merged patches from the revisions 2005:2008 from the trunk
Modified: home/phd/SQLObject/paramstyles/sqlobject/col.py
===================================================================
--- home/phd/SQLObject/paramstyles/sqlobject/col.py 2006-10-11 14:43:45 UTC (rev 2008)
+++ home/phd/SQLObject/paramstyles/sqlobject/col.py 2006-10-11 14:45:43 UTC (rev 2009)
@@ -882,7 +882,12 @@
super(SOEnumCol, self).createValidators()
def _mysqlType(self):
- return "ENUM(%s)" % ', '.join([sqlbuilder.sqlrepr(v, 'mysql') for v in self.enumValues])
+ # We need to map None in the enum expression to an appropriate
+ # condition on NULL
+ if None in self.enumValues:
+ return "ENUM(%s)" % ', '.join([sqlbuilder.sqlrepr(v, 'mysql') for v in self.enumValues if v is not None])
+ else:
+ return "ENUM(%s) NOT NULL" % ', '.join([sqlbuilder.sqlrepr(v, 'mysql') for v in self.enumValues])
def _postgresType(self):
length = max(map(self._getlength, self.enumValues))
Modified: home/phd/SQLObject/paramstyles/sqlobject/tests/test_enum.py
===================================================================
--- home/phd/SQLObject/paramstyles/sqlobject/tests/test_enum.py 2006-10-11 14:43:45 UTC (rev 2008)
+++ home/phd/SQLObject/paramstyles/sqlobject/tests/test_enum.py 2006-10-11 14:45:43 UTC (rev 2009)
@@ -27,5 +27,25 @@
def testNone():
setupClass(EnumWithNone)
for l in [None, 'a', 'bcd', 'a', 'e', None]:
- EnumWithNone(l=l)
-
+ e = EnumWithNone(l=l)
+ assert e.l == l
+
+class EnumWithDefaultNone(SQLObject):
+
+ l = EnumCol(enumValues=['a', 'bcd', 'e', None], default=None)
+
+def testDefaultNone():
+ setupClass(EnumWithDefaultNone)
+
+ e = EnumWithDefaultNone()
+ assert e.l == None
+
+class EnumWithDefaultOther(SQLObject):
+
+ l = EnumCol(enumValues=['a', 'bcd', 'e', None], default='a')
+
+def testDefaultOther():
+ setupClass(EnumWithDefaultOther)
+
+ e = EnumWithDefaultOther()
+ assert e.l == 'a'
|