Created
August 31, 2011 22:05
-
-
Save mvaz/1184861 to your computer and use it in GitHub Desktop.
TzCronTrigger
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class TzCronTrigger(CronTrigger): | |
| def __init__(self,**values): | |
| self.tz = values.pop('tz', None) | |
| if self.tz: | |
| if self.tz not in pytz.all_timezones: | |
| raise ValueError("invalid specified timezone '%s'" % self.tz) | |
| self.tz = pytz.timezone( self.tz ) | |
| super(TzCronTrigger, self).__init__(**values) | |
| def get_next_fire_time(self, start_date): | |
| start_date_tz = self._convert_in_tz(start_date) | |
| ref_time = super(TzCronTrigger, self).get_next_fire_time(start_date_tz) | |
| return self._convert_from_tz( ref_time ) | |
| def _get_local_tz(self): | |
| return pytz.timezone(time.tzname[0]) | |
| def _convert_in_tz(self, dt): | |
| dt = self._get_local_tz().localize(dt, is_dst=True) | |
| return dt.astimezone(self.tz) | |
| def _convert_from_tz(self, dt): | |
| dt = self.tz.localize(dt, is_dst=True) | |
| return dt.astimezone(self._get_local_tz()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment