From 531235c3bf9fdaaad9cd1a4026c0f0d70c15be94 Mon Sep 17 00:00:00 2001 From: Boulder Sprinters Date: Fri, 13 Apr 2007 20:40:22 +0000 Subject: [PATCH] boulder-oracle-sprint: Fixed TimeField.get_db_prep_lookup to include a dummy date in the time string so that Oracle doesn't barf on it. git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@5007 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/fields/__init__.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index 89520f6c86..f65897a7d8 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -830,10 +830,15 @@ class TimeField(Field): Field.__init__(self, verbose_name, name, **kwargs) def get_db_prep_lookup(self, lookup_type, value): + def prep(value): + if settings.DATABASE_ENGINE == 'oracle' and isinstance(value, datetime.time): + # Oracle requires a date in order to parse. + value = datetime.datetime.combine(datetime.date(1900, 1, 1), value) + return str(value) if lookup_type == 'range': - value = [str(v) for v in value] + value = [prep(v) for v in value] else: - value = str(value) + value = prep(value) return Field.get_db_prep_lookup(self, lookup_type, value) def pre_save(self, model_instance, add):