[Checkins] SVN: z3c.dobbin/trunk/src/z3c/dobbin/zs2sa.py Added
defaults for integers and floats.
Malthe Borch
mborch at gmail.com
Fri Jul 18 08:53:56 EDT 2008
Log message for revision 88500:
Added defaults for integers and floats.
Changed:
U z3c.dobbin/trunk/src/z3c/dobbin/zs2sa.py
-=-
Modified: z3c.dobbin/trunk/src/z3c/dobbin/zs2sa.py
===================================================================
--- z3c.dobbin/trunk/src/z3c/dobbin/zs2sa.py 2008-07-18 12:53:19 UTC (rev 88499)
+++ z3c.dobbin/trunk/src/z3c/dobbin/zs2sa.py 2008-07-18 12:53:55 UTC (rev 88500)
@@ -26,19 +26,26 @@
import cPickle as Pickle
-class FieldTranslator( object ):
- """ Translate a zope schema field to an sa column
- """
+class FieldTranslator(object):
+ """Translate a zope schema field to a SQLAlchemy column."""
- def __init__(self, column_type):
- self.column_type = column_type
+ column_type = default = None
+ def __init__(self, column_type=None, default=None):
+ self.column_type = column_type or self.column_type
+ self.default = default
+
def extractInfo( self, field, info ):
d = {}
d['name'] = field.getName()
if field.required:
d['nullable'] = False
- d['default'] = field.default
+
+ if field.default is None:
+ d['default'] = self.default
+ else:
+ d['default'] = field.default
+
d['type'] = self.column_type
return d
@@ -61,7 +68,7 @@
if schema.interfaces.IMinMaxLen.providedBy( field ):
d['type'].length = field.max_length
- if field.default is None:
+ if field.default is None and not d.get('default'):
d['default'] = u""
return d
@@ -130,10 +137,10 @@
class PicklePropertyFactory(object):
def __call__(self, field, column, metadata):
return {field.__name__: PickleProperty(column.name)}
-
+
class ObjectProperty(object):
"""Object property.
-
+
We're not checking type here, because we'll only be creating
relations to items that are joined with the soup.
"""
@@ -189,16 +196,16 @@
fieldmap = {
schema.ASCII: StringTranslator(),
schema.ASCIILine: StringTranslator(),
- schema.Bool: FieldTranslator(rdb.BOOLEAN),
+ schema.Bool: FieldTranslator(rdb.BOOLEAN, default=False),
schema.Bytes: FieldTranslator(rdb.BLOB),
schema.BytesLine: FieldTranslator(rdb.CLOB),
schema.Choice: StringTranslator(rdb.Unicode),
schema.Date: FieldTranslator(rdb.DATE),
schema.Dict: (None, DictProperty()),
schema.DottedName: StringTranslator(),
- schema.Float: FieldTranslator(rdb.Float),
+ schema.Float: FieldTranslator(rdb.Float, default=0),
schema.Id: StringTranslator(rdb.Unicode),
- schema.Int: FieldTranslator(rdb.Integer),
+ schema.Int: FieldTranslator(rdb.Integer, default=0),
schema.List: (None, ListProperty()),
schema.Tuple: (None, TupleProperty()),
schema.Object: (ObjectTranslator(), ObjectProperty()),
More information about the Checkins
mailing list