Skip to content

Commit

Permalink
Simplified time zone support in the Oracle backend. Avoided outputtyp…
Browse files Browse the repository at this point in the history
…ehandler 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
  • Loading branch information
aaugustin committed Dec 7, 2011
1 parent 5f9dbef commit 2693aa8
Showing 1 changed file with 6 additions and 18 deletions.
24 changes: 6 additions & 18 deletions django/db/backends/oracle/base.py
Expand Up @@ -485,24 +485,6 @@ def _cursor(self):
" 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.
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 2693aa8

Please sign in to comment.