I am migrating an application from django 1.2 to 1.4.
I have a daily task object that contains the time of day when the task should be completed:
class DailyTask(models.Model): time = models.TimeField() last_completed = models.DateTimeField() name = models.CharField(max_length=100) description = models.CharField(max_length=1000) weekends = models.BooleanField() def __unicode__(self): return '%s' % (self.name) class Meta: db_table = u'dailytask' ordering = ['name']
To check if there is still a task to be completed today, I have the following code:
def getDueDailyTasks(): dueDailyTasks=[] now = datetime.datetime.now() try: dailyTasks = DailyTask.objects.all() except dailyTask.DoesNotExist: return None for dailyTask in dailyTasks: timeDue = datetime.datetime(now.year,now.month,now.day,dailyTask.time.hour,dailyTask.time.minute,dailyTask.time.second) if timeDue<now and timeDue>dailyTask.last_completed: if dailyTask.weekends==False and now.weekday()>4: pass else: dueDailyTasks.append({'id':dailyTask.id, 'due':timeDue, 'name': dailyTask.name, 'description':dailyTask.description}) return dueDailyTasks
This worked fine under 1.2, but under 1.4 I get an error:
can't compare offset-naive and offset-aware datetimes
because of the line
if timeDue<now and timeDue>dailyTask.last_completed
and both comparison sentences throw this error.
I tried making timeDue a time zone by adding pytz.UTC as an argument, but this still causes the same error.
I have read some timezone docs, but I donβt understand if I just need to specify the timeDue timezone, or do I need to make fundamental changes to my db and existing data.
python timezone django
meepmeep May 18 '12 at 12:39 2012-05-18 12:39
source share