more customizaiton of booleans

This commit is contained in:
mdipierro
2012-10-01 17:07:06 -05:00
parent 69cea23cd4
commit 54dcf2ead9
2 changed files with 14 additions and 13 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.0.9 (2012-10-01 15:54:19) dev Version 2.0.9 (2012-10-01 17:06:56) dev
+13 -12
View File
@@ -594,7 +594,8 @@ class BaseAdapter(ConnectionPool):
support_distributed_transaction = False support_distributed_transaction = False
uploads_in_blob = False uploads_in_blob = False
can_select_for_update = True can_select_for_update = True
TRUE = 'T'
FALSE = 'F'
types = { types = {
'boolean': 'CHAR(1)', 'boolean': 'CHAR(1)',
'string': 'CHAR(%(length)s)', 'string': 'CHAR(%(length)s)',
@@ -623,6 +624,11 @@ class BaseAdapter(ConnectionPool):
def adapt(self, obj): def adapt(self, obj):
return "'%s'" % obj.replace("'", "''") return "'%s'" % obj.replace("'", "''")
def smart_adapt(self, obj):
if isinstance(obj,(int,float)):
return str(obj)
return self.adapt(str(obj))
def integrity_error(self): def integrity_error(self):
return self.driver.IntegrityError return self.driver.IntegrityError
@@ -1703,10 +1709,10 @@ class BaseAdapter(ConnectionPool):
if not r is None: if not r is None:
return r return r
if fieldtype == 'boolean': if fieldtype == 'boolean':
if obj and not str(obj)[:1].upper() in ['F', '0']: if obj and not str(obj)[:1].upper() in '0F':
return "'T'" return self.smart_adapt(self.TRUE)
else: else:
return "'F'" return self.smart_adapt(self.FALSE)
if fieldtype == 'id' or fieldtype == 'integer': if fieldtype == 'id' or fieldtype == 'integer':
return str(int(obj)) return str(int(obj))
if field_is_type('decimal'): if field_is_type('decimal'):
@@ -2946,13 +2952,8 @@ class MSSQLAdapter(BaseAdapter):
sql_s += ' TOP %i' % lmax sql_s += ' TOP %i' % lmax
return 'SELECT %s %s FROM %s%s%s;' % (sql_s, sql_f, sql_t, sql_w, sql_o) return 'SELECT %s %s FROM %s%s%s;' % (sql_s, sql_f, sql_t, sql_w, sql_o)
def represent_exceptions(self, obj, fieldtype): TRUE = 1
if fieldtype == 'boolean': FALSE = 0
if obj and not str(obj)[0].upper() == 'F':
return '1'
else:
return '0'
return None
REGEX_DSN = re.compile('^(?P<dsn>.+)$') REGEX_DSN = re.compile('^(?P<dsn>.+)$')
REGEX_URI = re.compile('^(?P<user>[^:@]+)(\:(?P<password>[^@]*))?@(?P<host>[^\:/]+)(\:(?P<port>[0-9]+))?/(?P<db>[^\?]+)(\?(?P<urlargs>.*))?$') REGEX_URI = re.compile('^(?P<user>[^:@]+)(\:(?P<password>[^@]*))?@(?P<host>[^\:/]+)(\:(?P<port>[0-9]+))?/(?P<db>[^\?]+)(\?(?P<urlargs>.*))?$')
@@ -4089,7 +4090,7 @@ class NoSQLAdapter(BaseAdapter):
obj = obj['id'] obj = obj['id']
obj = long(obj) obj = long(obj)
elif fieldtype == 'boolean': elif fieldtype == 'boolean':
if obj and not str(obj)[0].upper() == 'F': if obj and not str(obj)[0].upper() in '0F':
obj = True obj = True
else: else:
obj = False obj = False