From 45ffdd1b536930f123c040f2398c028631ad17af Mon Sep 17 00:00:00 2001 From: bkfox Date: Wed, 23 Aug 2017 17:32:08 +0200 Subject: [PATCH] update tz and get default tz --- aircox/models.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/aircox/models.py b/aircox/models.py index 7eb5e38..64d5845 100755 --- a/aircox/models.py +++ b/aircox/models.py @@ -520,6 +520,17 @@ class Schedule(models.Model): help_text = 'this schedule is a rerun of this one', ) + @property + def local_date(self): + """ + Return a version of self.date that is localized to self.timezone; + This is needed since datetime are stored as UTC date and we want + to get it as local time. + """ + if not hasattr(self, '_local_date') or self._tz.zone != self.timezone: + self._local_date = tz.localtime(self.date, self.tz) + return self._local_date + @property def tz(self): """ @@ -598,8 +609,9 @@ class Schedule(models.Model): Set the time of a datetime to the schedule's one Ensure timezone awareness. """ + local_date = self.local_date date = tz.datetime(date.year, date.month, date.day, - self.date.hour, self.date.minute, 0, 0) + local_date.hour, local_date.minute, 0, 0) date = self.tz.localize(date) date = self.tz.normalize(date) return date