Simplified time zone support in the Oracle backend. Avoided outputtypehandler which doesn't exist in cx_Oracle < 4.4.1.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17171 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
5f9dbef4bb
commit
2693aa890e
|
@ -485,24 +485,6 @@ class DatabaseWrapper(BaseDatabaseWrapper):
|
|||
" NLS_TERRITORY = 'AMERICA'"
|
||||
+ (" TIME_ZONE = 'UTC'" if settings.USE_TZ else ''))
|
||||
|
||||
def datetime_converter(dt):
|
||||
# Confirm that dt is naive before overwriting its tzinfo.
|
||||
if dt is not None and is_naive(dt):
|
||||
dt = dt.replace(tzinfo=utc)
|
||||
return dt
|
||||
|
||||
def output_type_handler(cursor, name, default_type,
|
||||
size, precision, scale):
|
||||
# datetimes are returned as TIMESTAMP, except the results
|
||||
# of "dates" queries, which are returned as DATETIME.
|
||||
if settings.USE_TZ and default_type in (Database.TIMESTAMP,
|
||||
Database.DATETIME):
|
||||
return cursor.var(default_type,
|
||||
arraysize=cursor.arraysize,
|
||||
outconverter=datetime_converter)
|
||||
|
||||
self.connection.outputtypehandler = output_type_handler
|
||||
|
||||
if 'operators' not in self.__dict__:
|
||||
# Ticket #14149: Check whether our LIKE implementation will
|
||||
# work for this connection or we need to fall back on LIKEC.
|
||||
|
@ -794,6 +776,12 @@ def _rowfactory(row, cursor):
|
|||
value = decimal.Decimal(value)
|
||||
else:
|
||||
value = int(value)
|
||||
# datetimes are returned as TIMESTAMP, except the results
|
||||
# of "dates" queries, which are returned as DATETIME.
|
||||
elif desc[1] in (Database.TIMESTAMP, Database.DATETIME):
|
||||
# Confirm that dt is naive before overwriting its tzinfo.
|
||||
if settings.USE_TZ and value is not None and is_naive(value):
|
||||
value = value.replace(tzinfo=utc)
|
||||
elif desc[1] in (Database.STRING, Database.FIXED_CHAR,
|
||||
Database.LONG_STRING):
|
||||
value = to_unicode(value)
|
||||
|
|
Loading…
Reference in New Issue