From: <sub...@co...> - 2004-06-14 12:51:03
|
Author: ahmedmo Date: 2004-06-14 04:48:30 -0400 (Mon, 14 Jun 2004) New Revision: 146 Removed: trunk/SQLObject/converters.py Log: Removed file/folder Deleted: trunk/SQLObject/converters.py =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/SQLObject/converters.py 2004-06-14 08:48:23 UTC (rev 145) +++ trunk/SQLObject/converters.py 2004-06-14 08:48:30 UTC (rev 146) @@ -1,183 +0,0 @@ -try: - import mx.DateTime.ISO - origISOStr =3D mx.DateTime.ISO.strGMT - from mx.DateTime import DateTimeType -except ImportError: - try: - import DateTime.ISO - origISOStr =3D DateTime.ISO.strGMT - from DateTime import DateTimeType - except ImportError: - origISOStr =3D None - DateTimeType =3D None -import time -try: - import datetime -except ImportError: - datetime =3D None - -try: - import Sybase - NumericType=3DSybase.NumericType -except ImportError: - NumericType =3D None=20 - -if type(1=3D=3D1) =3D=3D type(1): - class BOOL(object): - def __init__(self, value): - self.value =3D not not value - def __nonzero__(self): - return self.value - def __repr__(self): - if self: - return 'TRUE' - else: - return 'FALSE' - TRUE =3D BOOL(1) - FALSE =3D BOOL(0) -else: - TRUE =3D 1=3D=3D1 - FALSE =3D 0=3D=3D1 - -from types import InstanceType, ClassType, TypeType - -######################################## -## Quoting -######################################## - -sqlStringReplace =3D [ - ('\\', '\\\\'), - ("'", "''"), - ('\000', '\\0'), - ('\b', '\\b'), - ('\n', '\\n'), - ('\r', '\\r'), - ('\t', '\\t'), - ] - -def isoStr(val): - """ - Gets rid of time zone information - (@@: should we convert to GMT?) - """ - val =3D origISOStr(val) - if val.find('+') =3D=3D -1: - return val - else: - return val[:val.find('+')] - -class ConverterRegistry: - - def __init__(self): - self.basic =3D {} - self.klass =3D {} - - def registerConverter(self, typ, func): - if type(typ) is ClassType: - self.klass[typ] =3D func - else: - self.basic[typ] =3D func - - def lookupConverter(self, value, default=3DNone): - if type(value) =3D=3D InstanceType: - # lookup on klasses dict - return self.klass.get(value.__class__, default) - return self.basic.get(type(value), default) - =20 -converters =3D ConverterRegistry() -registerConverter =3D converters.registerConverter -lookupConverter =3D converters.lookupConverter - -def StringLikeConverter(value, db): - if db in ('mysql', 'postgres', 'sybase'): - for orig, repl in sqlStringReplace: - value =3D value.replace(orig, repl) - elif db in ('sqlite', 'firebird','maxdb'): - value =3D value.replace("'", "''") - else: - assert 0, "Database %s unknown" % db - return "'%s'" % value - -registerConverter(type(""), StringLikeConverter) -registerConverter(type(u""), StringLikeConverter) - -def IntConverter(value, db): - return repr(int(value)) - -registerConverter(type(1), IntConverter) -registerConverter(type(0L), IntConverter) - -if NumericType: - registerConverter(NumericType, IntConverter) - -def BoolConverter(value, db): - if db in ('postgres',): - if value: - return "'t'" - else: - return "'f'" - else: - if value: - return '1' - else: - return '0' - -registerConverter(type(TRUE), BoolConverter) - -def FloatConverter(value, db): - return repr(value) - -registerConverter(type(1.0), FloatConverter) - -if DateTimeType: - def DateTimeConverter(value, db): - return "'%s'" % isoStr(value) - - registerConverter(DateTimeType, DateTimeConverter) - -def NoneConverter(value, db): - return "NULL" - -registerConverter(type(None), NoneConverter) - -def SequenceConverter(value, db): - return "(%s)" % ", ".join([sqlrepr(v, db) for v in value]) - -registerConverter(type(()), SequenceConverter) -registerConverter(type([]), SequenceConverter) - -if hasattr(time, 'struct_time'): - def StructTimeConverter(value, db): - return time.strftime("'%Y-%m-%d %H:%M:%S'", value) - - registerConverter(time.struct_time, StructTimeConverter) - -if datetime: - def DateTimeConverter(value, db): - return value.strftime("'%Y-%m-%d %H:%M:%s'") - - registerConverter(datetime.datetime, DateTimeConverter) - - def TimeConverter(value, db): - return value.strftime("'%H:%M:%s'") - - registerConverter(datetime.time, TimeConverter) - - def DateConverter(value, db): - return value.strftime("'%Y-%m-%d'") - - registerConverter(datetime.date, DateConverter) - -def sqlrepr(obj, db=3DNone): - try: - reprFunc =3D obj.__sqlrepr__ - except AttributeError: - converter =3D lookupConverter(obj) - if converter is None: - raise ValueError, "Unknown SQL builtin type: %s for %s" % \ - (type(obj), repr(obj)) - return converter(obj, db) - else: - return reprFunc(db) - - |