def test_now(self): timezone_setting_value = 'US/Eastern' tz_utc = timezone.get_timezone('UTC') tz_us_eastern = timezone.get_timezone(timezone_setting_value) now = to_utc(datetime.utcnow()) app_now = self.app.now() assert app_now.tzinfo is tz_utc assert app_now - now <= timedelta(seconds=1) # Check that timezone conversion is applied from configuration self.app.conf.enable_utc = False self.app.conf.timezone = timezone_setting_value # timezone is a cached property del self.app.timezone app_now = self.app.now() assert app_now.tzinfo.zone == tz_us_eastern.zone diff = to_utc(datetime.utcnow()) - localize(app_now, tz_utc) assert diff <= timedelta(seconds=1) # Verify that timezone setting overrides enable_utc=on setting self.app.conf.enable_utc = True del self.app.timezone app_now = self.app.now() assert self.app.timezone == tz_us_eastern assert app_now.tzinfo.zone == tz_us_eastern.zone
def timezone(self): """Current timezone for this app. This is a cached property taking the time zone from the :setting:`timezone` setting. """ conf = self.conf tz = conf.timezone if not tz: return (timezone.get_timezone('UTC') if conf.enable_utc else timezone.local) return timezone.get_timezone(conf.timezone)
def timezone(self): """Current timezone for this app. This is a cached property taking the time zone from the :setting:`timezone` setting. """ conf = self.conf tz = conf.timezone or 'UTC' if not tz: if conf.enable_utc: return timezone.get_timezone('UTC') else: if not conf.timezone: return timezone.local return timezone.get_timezone(tz)
def test_rrule_timezone(self): tz = timezone.get_timezone('US/Eastern') start1 = datetime(2015, 12, 30, 12, 59, 22, tzinfo=timezone.utc) start2 = start1.astimezone(tz) r1 = rrule('MINUTELY', dtstart=start1, count=1) r2 = rrule('MINUTELY', dtstart=start2, count=1) r1_json = self.dumps(r1) r2_json = self.dumps(r2) r1_parsed = self.loads(r1_json) self.assertEqual(r1_parsed.dtstart.utcoffset(), r1.dtstart.utcoffset()) r2_parsed = self.loads(r2_json) self.assertEqual(r2_parsed.dtstart.utcoffset(), r2.dtstart.utcoffset()) self.assertEqual(r1_parsed.dtstart, r2_parsed.dtstart) self.assertNotEqual(r1_parsed.dtstart.utcoffset(), r2_parsed.dtstart.utcoffset())
def dict_to_object(self, d): if '__type__' not in d: return d objtype = d.pop('__type__') if objtype == 'datetime': zone = d.pop('timezone', 'UTC') try: tzinfo = FixedOffset(zone / 60) except TypeError: tzinfo = timezone.get_timezone(zone) return datetime(tzinfo=tzinfo, **d) if objtype == 'interval': return schedule(run_every=d['every'], relative=d['relative']) if objtype == 'crontab': return crontab(**d) if objtype == 'weekday': return weekday(**d) if objtype == 'rrule': # Decode timestamp values into datetime objects for key, tz_key in [('dtstart', 'dtstart_tz'), ('until', 'until_tz')]: timestamp = d.get(key) tz_minutes = d.pop(tz_key, 0) if timestamp is not None: d[key] = from_timestamp(timestamp, tz_minutes) return rrule(**d) d['__type__'] = objtype return d
def test_timezone__none_set(self): self.app.conf.timezone = None tz = self.app.timezone assert tz == timezone.get_timezone('UTC')
def test_timezone__none_set(self): self.app.conf.timezone = None tz = self.app.timezone self.assertEqual(tz, timezone.get_timezone('UTC'))
def test_get_timezone_with_pytz(self): assert timezone.get_timezone('UTC')
def test_datetime_with_timezone(self): d = self.datetime_as_dict(__type__='datetime', timezone='Asia/Shanghai') result = self.loads(json.dumps(d)) d.pop('__type__') d.pop('timezone') self.assertEqual(result, datetime(tzinfo=timezone.get_timezone('Asia/Shanghai'), **d))
def test_datetime_with_tz(self): dt = self.now(tzinfo=timezone.get_timezone('Asia/Shanghai')) result = self.dumps(dt) expected = self.datetime_as_dict(timezone='Asia/Shanghai', __type__='datetime') self.assertEqual(json.loads(result), expected)
def test_get_timezone_with_pytz(self): self.assertTrue(timezone.get_timezone('UTC'))