def test_add_jquery_ui_timezone_list_has_default_timezone(self): chrome = Chrome(self.env) gmt07b = timezone('GMT -7:00') gmt04a = timezone('GMT +4:00') def verify_tzprops(lc_time, tz, tz_default, tz_label): req = MockRequest(self.env, locale=locale_en, lc_time=lc_time, tz=tz) chrome.add_jquery_ui(req) data = req.chrome['script_data']['jquery_ui'] self.assertEqual(tz_default, data['default_timezone']) if tz_default is None: self.assertIsNone(data['timezone_list']) else: self.assertIn({'value': tz_default, 'label': tz_label}, data['timezone_list']) verify_tzprops('iso8601', utc, 0, '+00:00') verify_tzprops(locale_en, utc, None, None) verify_tzprops('iso8601', gmt07b, -420, '-07:00') verify_tzprops(locale_en, gmt07b, None, None) verify_tzprops('iso8601', gmt04a, 240, '+04:00') verify_tzprops(locale_en, gmt04a, None, None) if pytz: # must use timezones which does not use DST guam = timezone('Pacific/Guam') monrovia = timezone('Africa/Monrovia') panama = timezone('America/Panama') verify_tzprops('iso8601', guam, 600, '+10:00') verify_tzprops(locale_en, guam, None, None) verify_tzprops('iso8601', monrovia, 0, '+00:00') verify_tzprops(locale_en, monrovia, None, None) verify_tzprops('iso8601', panama, -300, '-05:00') verify_tzprops(locale_en, panama, None, None)
def test_to_datetime_tz(self): tz = datefmt.timezone('GMT +1:00') expected = datetime.datetime(1970, 1, 1, 1, 0, 23, 0, tz) self.assertEqual(datefmt.to_datetime(23, tz), expected) self.assertEqual(datefmt.to_datetime(23L, tz), expected) self.assertEqual(datefmt.to_datetime(23.0, tz), expected) tz = datefmt.timezone('GMT +4:00') expected = datetime.datetime(1970, 1, 1, 4, 0, 23, 0, tz) self.assertEqual(datefmt.to_datetime(23, tz), expected) self.assertEqual(datefmt.to_datetime(23L, tz), expected) self.assertEqual(datefmt.to_datetime(23.0, tz), expected)
def test_can_prepare_human_readable_timezone_for_template_if_using_user_time(self): req = self.teh.mock_request(Usernames.product_owner) sydney_in_winter = timezone("GMT +10:00") req.tz = sydney_in_winter data = self.view.prepare_data(req) self._assert_prepared_data_contains_time_offset(data, sydney_in_winter)
def test_format_compatibility(self): tz = datefmt.timezone('GMT +2:00') t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) tz_t = datetime.datetime(2010, 8, 28, 13, 45, 56, 123456, tz) # Converting babel's format to strftime format self.assertEqual( tz_t.strftime('%x %H:%M').decode('utf-8'), datefmt.format_datetime(t, 'short', tz)) self.assertEqual( tz_t.strftime('%x').decode('utf-8'), datefmt.format_date(t, 'short', tz)) self.assertEqual( tz_t.strftime('%H:%M').decode('utf-8'), datefmt.format_time(t, 'short', tz)) for f in ('medium', 'long', 'full'): self.assertEqual( tz_t.strftime('%x %X').decode('utf-8'), datefmt.format_datetime(t, f, tz)) self.assertEqual( tz_t.strftime('%x').decode('utf-8'), datefmt.format_date(t, f, tz)) self.assertEqual( tz_t.strftime('%X').decode('utf-8'), datefmt.format_time(t, f, tz))
def test_parse_invalid_date(self): tz = datefmt.timezone('GMT +2:00') en_US = Locale.parse('en_US') self.assertRaises(TracError, datefmt.parse_date, '', tzinfo=tz, locale=en_US, hint='date') self.assertRaises(TracError, datefmt.parse_date, '2011 Apr Mar', tzinfo=tz, locale=en_US, hint='date') self.assertRaises(TracError, datefmt.parse_date, '29 Feb', tzinfo=tz, locale=en_US, hint='date') self.assertRaises(TracError, datefmt.parse_date, 'Feb 2011', tzinfo=tz, locale=en_US, hint='date') self.assertRaises(TracError, datefmt.parse_date, '29 Feb 2010', tzinfo=tz, locale=en_US, hint='date') self.assertRaises(TracError, datefmt.parse_date, '29 Xxx 2012', tzinfo=tz, locale=en_US, hint='date') self.assertRaises(TracError, datefmt.parse_date, '29 Xxx 2012 4:00:00 AM', tzinfo=tz, locale=en_US, hint='datetime') self.assertRaises(TracError, datefmt.parse_date, '29 2012 4:01:02 AM Feb', tzinfo=tz, locale=en_US, hint='datetime') self.assertRaises(TracError, datefmt.parse_date, '29 2012 4:00 Feb', tzinfo=tz, locale=en_US, hint='datetime')
def test_i18n_parse_date_datetime(self): tz = datefmt.timezone("GMT +2:00") expected = datetime.datetime(2010, 8, 28, 13, 45, 56, 0, tz) expected_minute = datetime.datetime(2010, 8, 28, 13, 45, 0, 0, tz) en_US = Locale.parse("en_US") en_GB = Locale.parse("en_GB") fr = Locale.parse("fr") ja = Locale.parse("ja") vi = Locale.parse("vi") zh_CN = Locale.parse("zh_CN") self.assertEqual(expected, datefmt.parse_date("Aug 28, 2010 1:45:56 PM", tz, en_US)) self.assertEqual(expected, datefmt.parse_date("8 28, 2010 1:45:56 PM", tz, en_US)) self.assertEqual(expected, datefmt.parse_date("28 Aug 2010 1:45:56 PM", tz, en_US)) self.assertEqual(expected, datefmt.parse_date("28 Aug 2010 PM 1:45:56", tz, en_US)) self.assertEqual(expected, datefmt.parse_date("28 Aug 2010 13:45:56", tz, en_US)) self.assertEqual(expected_minute, datefmt.parse_date("28 Aug 2010 PM 1:45", tz, en_US)) self.assertEqual(expected, datefmt.parse_date("28 Aug 2010 13:45:56", tz, en_GB)) self.assertEqual(expected, datefmt.parse_date(u"28 août 2010 13:45:56", tz, fr)) self.assertEqual(expected, datefmt.parse_date(u"août 28 2010 13:45:56", tz, fr)) self.assertEqual(expected_minute, datefmt.parse_date(u"août 28 2010 13:45", tz, fr)) self.assertEqual(expected, datefmt.parse_date("2010/08/28 13:45:56", tz, ja)) self.assertEqual(expected_minute, datefmt.parse_date("2010/08/28 13:45", tz, ja)) self.assertEqual(expected, datefmt.parse_date("13:45:56 28-08-2010", tz, vi)) self.assertEqual(expected_minute, datefmt.parse_date("13:45 28-08-2010", tz, vi)) self.assertEqual(expected, datefmt.parse_date(u"2010-8-28 下午01:45:56", tz, zh_CN)) self.assertEqual(expected, datefmt.parse_date(u"2010-8-28 01:45:56下午", tz, zh_CN)) self.assertEqual(expected_minute, datefmt.parse_date(u"2010-8-28 下午01:45", tz, zh_CN)) self.assertEqual(expected_minute, datefmt.parse_date(u"2010-8-28 01:45下午", tz, zh_CN))
def test_i18n_parse_date_datetime_meridiem(self): tz = datefmt.timezone('GMT +2:00') expected_am = datetime.datetime(2011, 2, 22, 0, 45, 56, 0, tz) expected_pm = datetime.datetime(2011, 2, 22, 12, 45, 56, 0, tz) en_US = Locale.parse('en_US') zh_CN = Locale.parse('zh_CN') self.assertEqual(expected_am, datefmt.parse_date('Feb 22, 2011 0:45:56 AM', tz, en_US)) self.assertEqual(expected_am, datefmt.parse_date('Feb 22, 2011 12:45:56 AM', tz, en_US)) self.assertEqual(expected_am, datefmt.parse_date(u'2011-2-22 上午0:45:56', tz, zh_CN)) self.assertEqual(expected_am, datefmt.parse_date(u'2011-2-22 上午12:45:56', tz, zh_CN)) self.assertEqual(expected_pm, datefmt.parse_date('Feb 22, 2011 0:45:56 PM', tz, en_US)) self.assertEqual(expected_pm, datefmt.parse_date('Feb 22, 2011 12:45:56 PM', tz, en_US)) self.assertEqual(expected_pm, datefmt.parse_date(u'2011-2-22 下午0:45:56', tz, zh_CN)) self.assertEqual(expected_pm, datefmt.parse_date(u'2011-2-22 下午12:45:56', tz, zh_CN))
def test_can_prepare_human_readable_timezone_for_template_if_using_user_time( self): req = self.teh.mock_request(Usernames.product_owner) sydney_in_winter = timezone("GMT +10:00") req.tz = sydney_in_winter data = self.view.prepare_data(req) self._assert_prepared_data_contains_time_offset(data, sydney_in_winter)
def test_with_iso8601(self): tz = datefmt.timezone('GMT +2:00') t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, tz) self.assertEqual('2010-08-28', datefmt.format_date(t, 'iso8601', tz, 'iso8601')) self.assertEqual('11:45:56+02:00', datefmt.format_time(t, 'iso8601', tz, 'iso8601')) self.assertEqual('2010-08-28T11:45:56+02:00', datefmt.format_datetime(t, 'iso8601', tz, 'iso8601'))
def test_default(self): tz = datefmt.timezone('GMT +2:00') t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, tz) self.assertEqual('2010-08-28', datefmt.format_date(t, tzinfo=tz, locale='iso8601')) self.assertEqual('11:45:56+02:00', datefmt.format_time(t, tzinfo=tz, locale='iso8601')) self.assertEqual('2010-08-28T11:45:56+02:00', datefmt.format_datetime(t, tzinfo=tz, locale='iso8601'))
def test_format_compatibility(self): tz = datefmt.timezone("GMT +2:00") t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) tz_t = datetime.datetime(2010, 8, 28, 13, 45, 56, 123456, tz) en_US = Locale.parse("en_US") # Converting default format to babel's format self.assertEqual("Aug 28, 2010 1:45:56 PM", datefmt.format_datetime(t, "%x %X", tz, en_US)) self.assertEqual("Aug 28, 2010", datefmt.format_datetime(t, "%x", tz, en_US)) self.assertEqual("1:45:56 PM", datefmt.format_datetime(t, "%X", tz, en_US)) self.assertEqual("Aug 28, 2010", datefmt.format_date(t, "%x", tz, en_US)) self.assertEqual("1:45:56 PM", datefmt.format_time(t, "%X", tz, en_US))
def test_with_babel_format(self): tz = datefmt.timezone("GMT +2:00") t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, tz) for f in ("short", "medium", "long", "full"): self.assertEqual("2010-08-28", datefmt.format_date(t, f, tz, "iso8601")) self.assertEqual("11:45", datefmt.format_time(t, "short", tz, "iso8601")) self.assertEqual("2010-08-28T11:45", datefmt.format_datetime(t, "short", tz, "iso8601")) self.assertEqual("11:45:56", datefmt.format_time(t, "medium", tz, "iso8601")) self.assertEqual("2010-08-28T11:45:56", datefmt.format_datetime(t, "medium", tz, "iso8601")) for f in ("long", "full"): self.assertEqual("11:45:56+02:00", datefmt.format_time(t, f, tz, "iso8601")) self.assertEqual("2010-08-28T11:45:56+02:00", datefmt.format_datetime(t, f, tz, "iso8601"))
def test_format_compatibility(self): tz = datefmt.timezone("GMT +2:00") t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) tz_t = datetime.datetime(2010, 8, 28, 13, 45, 56, 123456, tz) # Converting babel's format to strftime format self.assertEqual(tz_t.strftime("%x %H:%M").decode("utf-8"), datefmt.format_datetime(t, "short", tz)) self.assertEqual(tz_t.strftime("%x").decode("utf-8"), datefmt.format_date(t, "short", tz)) self.assertEqual(tz_t.strftime("%H:%M").decode("utf-8"), datefmt.format_time(t, "short", tz)) for f in ("medium", "long", "full"): self.assertEqual(tz_t.strftime("%x %X").decode("utf-8"), datefmt.format_datetime(t, f, tz)) self.assertEqual(tz_t.strftime("%x").decode("utf-8"), datefmt.format_date(t, f, tz)) self.assertEqual(tz_t.strftime("%X").decode("utf-8"), datefmt.format_time(t, f, tz))
def test_template_data_for_time_field_with_formats(self): gmt12 = timezone('GMT +12:00') req = MockRequest(self.env, method='GET', path_info='/ticket/1', tz=gmt12) value = datetime(2016, 1, 2, 23, 34, 45, tzinfo=utc) expected = user_time(req, format_datetime, value) self.assertIn('11', expected) # check 11 in hour part self._test_template_data_for_time_field(req, value, expected, None) self._test_template_data_for_time_field(req, value, expected, 'datetime') self._test_template_data_for_time_field(req, value, expected, 'relative')
def test_i18n_parse_date_roundtrip(self): tz = datefmt.timezone('GMT +2:00') t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) expected = datetime.datetime(2010, 8, 28, 13, 45, 56, 0, tz) def roundtrip(locale): locale = Locale.parse(locale) formatted = datefmt.format_datetime(t, tzinfo=tz, locale=locale) self.assertEqual(expected, datefmt.parse_date(formatted, tz, locale)) self.assertEqual( formatted, datefmt.format_datetime(expected, tzinfo=tz, locale=locale)) roundtrip('ca') roundtrip('cs') roundtrip('de') roundtrip('el') roundtrip('en_GB') roundtrip('en_US') roundtrip('eo') roundtrip('es') roundtrip('es_AR') roundtrip('fa') roundtrip('fi') roundtrip('fr') roundtrip('gl') roundtrip('he') roundtrip('hu') roundtrip('hy') roundtrip('it') roundtrip('ja') roundtrip('ko') roundtrip('nb') roundtrip('nl') roundtrip('pl') roundtrip('pt') roundtrip('pt_BR') roundtrip('ro') roundtrip('ru') roundtrip('sl') roundtrip('sv') roundtrip('tr') roundtrip('vi') roundtrip('zh_CN') roundtrip('zh_TW')
def test_i18n_format_datetime(self): tz = datefmt.timezone("GMT +2:00") t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) en_US = Locale.parse("en_US") self.assertEqual("Aug 28, 2010 1:45:56 PM", datefmt.format_datetime(t, tzinfo=tz, locale=en_US)) en_GB = Locale.parse("en_GB") self.assertEqual("28 Aug 2010 13:45:56", datefmt.format_datetime(t, tzinfo=tz, locale=en_GB)) fr = Locale.parse("fr") self.assertEqual(u"28 août 2010 13:45:56", datefmt.format_datetime(t, tzinfo=tz, locale=fr)) ja = Locale.parse("ja") self.assertEqual(u"2010/08/28 13:45:56", datefmt.format_datetime(t, tzinfo=tz, locale=ja)) vi = Locale.parse("vi") self.assertEqual(u"13:45:56 28-08-2010", datefmt.format_datetime(t, tzinfo=tz, locale=vi)) zh_CN = Locale.parse("zh_CN") self.assertEqual(u"2010-8-28 下午01:45:56", datefmt.format_datetime(t, tzinfo=tz, locale=zh_CN))
def test_i18n_format_date(self): tz = datefmt.timezone("GMT +2:00") t = datetime.datetime(2010, 8, 7, 11, 45, 56, 123456, datefmt.utc) en_US = Locale.parse("en_US") self.assertEqual("Aug 7, 2010", datefmt.format_date(t, tzinfo=tz, locale=en_US)) en_GB = Locale.parse("en_GB") self.assertEqual("7 Aug 2010", datefmt.format_date(t, tzinfo=tz, locale=en_GB)) fr = Locale.parse("fr") self.assertEqual(u"7 août 2010", datefmt.format_date(t, tzinfo=tz, locale=fr)) ja = Locale.parse("ja") self.assertEqual(u"2010/08/07", datefmt.format_date(t, tzinfo=tz, locale=ja)) vi = Locale.parse("vi") self.assertEqual(u"07-08-2010", datefmt.format_date(t, tzinfo=tz, locale=vi)) zh_CN = Locale.parse("zh_CN") self.assertEqual(u"2010-8-7", datefmt.format_date(t, tzinfo=tz, locale=zh_CN))
def test_i18n_parse_date_datetime_meridiem(self): tz = datefmt.timezone("GMT +2:00") expected_am = datetime.datetime(2011, 2, 22, 0, 45, 56, 0, tz) expected_pm = datetime.datetime(2011, 2, 22, 12, 45, 56, 0, tz) en_US = Locale.parse("en_US") zh_CN = Locale.parse("zh_CN") self.assertEqual(expected_am, datefmt.parse_date("Feb 22, 2011 0:45:56 AM", tz, en_US)) self.assertEqual(expected_am, datefmt.parse_date("Feb 22, 2011 12:45:56 AM", tz, en_US)) self.assertEqual(expected_am, datefmt.parse_date(u"2011-2-22 上午0:45:56", tz, zh_CN)) self.assertEqual(expected_am, datefmt.parse_date(u"2011-2-22 上午12:45:56", tz, zh_CN)) self.assertEqual(expected_pm, datefmt.parse_date("Feb 22, 2011 0:45:56 PM", tz, en_US)) self.assertEqual(expected_pm, datefmt.parse_date("Feb 22, 2011 12:45:56 PM", tz, en_US)) self.assertEqual(expected_pm, datefmt.parse_date(u"2011-2-22 下午0:45:56", tz, zh_CN)) self.assertEqual(expected_pm, datefmt.parse_date(u"2011-2-22 下午12:45:56", tz, zh_CN))
def test_i18n_format_time(self): tz = datefmt.timezone("GMT +2:00") t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) en_US = Locale.parse("en_US") en_GB = Locale.parse("en_GB") fr = Locale.parse("fr") ja = Locale.parse("ja") vi = Locale.parse("vi") zh_CN = Locale.parse("zh_CN") self.assertEqual("1:45:56 PM", datefmt.format_time(t, tzinfo=tz, locale=en_US)) self.assertEqual("13:45:56", datefmt.format_time(t, tzinfo=tz, locale=en_GB)) self.assertEqual("13:45:56", datefmt.format_time(t, tzinfo=tz, locale=fr)) self.assertEqual("13:45:56", datefmt.format_time(t, tzinfo=tz, locale=ja)) self.assertEqual("13:45:56", datefmt.format_time(t, tzinfo=tz, locale=vi)) self.assertEqual(u"下午01:45:56", datefmt.format_time(t, tzinfo=tz, locale=zh_CN))
def test_i18n_parse_date_date(self): tz = datefmt.timezone("GMT +2:00") expected = datetime.datetime(2010, 8, 28, 0, 0, 0, 0, tz) en_US = Locale.parse("en_US") en_GB = Locale.parse("en_GB") fr = Locale.parse("fr") ja = Locale.parse("ja") vi = Locale.parse("vi") zh_CN = Locale.parse("zh_CN") self.assertEqual(expected, datefmt.parse_date("Aug 28, 2010", tz, en_US)) self.assertEqual(expected, datefmt.parse_date("28 Aug 2010", tz, en_GB)) self.assertEqual(expected, datefmt.parse_date(u"28 août 2010", tz, fr)) self.assertEqual(expected, datefmt.parse_date("2010/08/28", tz, ja)) self.assertEqual(expected, datefmt.parse_date("28-08-2010", tz, vi)) self.assertEqual(expected, datefmt.parse_date(u"2010-8-28", tz, zh_CN))
def test_i18n_parse_date_roundtrip(self): tz = datefmt.timezone('GMT +2:00') t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) expected = datetime.datetime(2010, 8, 28, 13, 45, 56, 0, tz) def roundtrip(locale): locale = Locale.parse(locale) formatted = datefmt.format_datetime(t, tzinfo=tz, locale=locale) self.assertEqual(expected, datefmt.parse_date(formatted, tz, locale)) self.assertEqual(formatted, datefmt.format_datetime(expected, tzinfo=tz, locale=locale)) roundtrip('ca') roundtrip('cs') roundtrip('de') roundtrip('el') roundtrip('en_GB') roundtrip('en_US') roundtrip('eo') roundtrip('es') roundtrip('es_AR') roundtrip('fa') roundtrip('fi') roundtrip('fr') roundtrip('gl') roundtrip('he') roundtrip('hu') roundtrip('hy') roundtrip('it') roundtrip('ja') roundtrip('ko') roundtrip('nb') roundtrip('nl') roundtrip('pl') roundtrip('pt') roundtrip('pt_BR') roundtrip('ro') roundtrip('ru') roundtrip('sl') roundtrip('sv') roundtrip('tr') roundtrip('vi') roundtrip('zh_CN') roundtrip('zh_TW')
def test_format_compatibility(self): tz = datefmt.timezone('GMT +2:00') t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) tz_t = datetime.datetime(2010, 8, 28, 13, 45, 56, 123456, tz) en_US = Locale.parse('en_US') # Converting default format to babel's format self.assertEqual('Aug 28, 2010 1:45:56 PM', datefmt.format_datetime(t, '%x %X', tz, en_US)) self.assertEqual('Aug 28, 2010', datefmt.format_datetime(t, '%x', tz, en_US)) self.assertEqual('1:45:56 PM', datefmt.format_datetime(t, '%X', tz, en_US)) self.assertEqual('Aug 28, 2010', datefmt.format_date(t, '%x', tz, en_US)) self.assertEqual('1:45:56 PM', datefmt.format_time(t, '%X', tz, en_US))
def test_i18n_parse_date_roundtrip(self): tz = datefmt.timezone("GMT +2:00") t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) expected = datetime.datetime(2010, 8, 28, 13, 45, 56, 0, tz) def roundtrip(locale): locale = Locale.parse(locale) formatted = datefmt.format_datetime(t, tzinfo=tz, locale=locale) self.assertEqual(expected, datefmt.parse_date(formatted, tz, locale)) self.assertEqual(formatted, datefmt.format_datetime(expected, tzinfo=tz, locale=locale)) roundtrip("ca") roundtrip("cs") roundtrip("de") roundtrip("el") roundtrip("en_GB") roundtrip("en_US") roundtrip("eo") roundtrip("es") roundtrip("es_AR") roundtrip("fa") roundtrip("fi") roundtrip("fr") roundtrip("gl") roundtrip("he") roundtrip("hu") roundtrip("hy") roundtrip("it") roundtrip("ja") roundtrip("ko") roundtrip("nb") roundtrip("nl") roundtrip("pl") roundtrip("pt") roundtrip("pt_BR") roundtrip("ro") roundtrip("ru") roundtrip("sl") roundtrip("sv") roundtrip("tr") roundtrip("vi") roundtrip("zh_CN") roundtrip("zh_TW")
def test_format_compatibility(self): tz = datefmt.timezone('GMT +2:00') t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) tz_t = datetime.datetime(2010, 8, 28, 13, 45, 56, 123456, tz) # Converting babel's format to strftime format self.assertEqual(tz_t.strftime('%x %H:%M').decode('utf-8'), datefmt.format_datetime(t, 'short', tz)) self.assertEqual(tz_t.strftime('%x').decode('utf-8'), datefmt.format_date(t, 'short', tz)) self.assertEqual(tz_t.strftime('%H:%M').decode('utf-8'), datefmt.format_time(t, 'short', tz)) for f in ('medium', 'long', 'full'): self.assertEqual(tz_t.strftime('%x %X').decode('utf-8'), datefmt.format_datetime(t, f, tz)) self.assertEqual(tz_t.strftime('%x').decode('utf-8'), datefmt.format_date(t, f, tz)) self.assertEqual(tz_t.strftime('%X').decode('utf-8'), datefmt.format_time(t, f, tz))
def test_with_babel_format(self): tz = datefmt.timezone('GMT +2:00') t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, tz) for f in ('short', 'medium', 'long', 'full'): self.assertEqual('2010-08-28', datefmt.format_date(t, f, tz, 'iso8601')) self.assertEqual('11:45', datefmt.format_time(t, 'short', tz, 'iso8601')) self.assertEqual('2010-08-28T11:45', datefmt.format_datetime(t, 'short', tz, 'iso8601')) self.assertEqual('11:45:56', datefmt.format_time(t, 'medium', tz, 'iso8601')) self.assertEqual('2010-08-28T11:45:56', datefmt.format_datetime(t, 'medium', tz, 'iso8601')) for f in ('long', 'full'): self.assertEqual('11:45:56+02:00', datefmt.format_time(t, f, tz, 'iso8601')) self.assertEqual('2010-08-28T11:45:56+02:00', datefmt.format_datetime(t, f, tz, 'iso8601'))
def test_i18n_format_date(self): tz = datefmt.timezone('GMT +2:00') t = datetime.datetime(2010, 8, 7, 11, 45, 56, 123456, datefmt.utc) en_US = Locale.parse('en_US') self.assertEqual('Aug 7, 2010', datefmt.format_date(t, tzinfo=tz, locale=en_US)) en_GB = Locale.parse('en_GB') self.assertEqual('7 Aug 2010', datefmt.format_date(t, tzinfo=tz, locale=en_GB)) fr = Locale.parse('fr') self.assertEqual(u'7 août 2010', datefmt.format_date(t, tzinfo=tz, locale=fr)) ja = Locale.parse('ja') self.assertEqual(u'2010/08/07', datefmt.format_date(t, tzinfo=tz, locale=ja)) vi = Locale.parse('vi') self.assertEqual(u'07-08-2010', datefmt.format_date(t, tzinfo=tz, locale=vi)) zh_CN = Locale.parse('zh_CN') self.assertEqual(u'2010-8-7', datefmt.format_date(t, tzinfo=tz, locale=zh_CN))
def test_i18n_parse_date_iso8609(self): tz = datefmt.timezone("GMT +2:00") dt = datetime.datetime(2010, 8, 28, 13, 45, 56, 0, tz) d = datetime.datetime(2010, 8, 28, 0, 0, 0, 0, tz) en_US = Locale.parse("en_US") vi = Locale.parse("vi") def iso8601(expected, text, tz, locale): self.assertEqual(expected, datefmt.parse_date(text, tz, locale)) iso8601(dt, "2010-08-28T15:45:56+0400", tz, en_US) iso8601(dt, "2010-08-28T11:45:56+0000", tz, vi) iso8601(dt, "2010-08-28T11:45:56Z", tz, vi) iso8601(dt, "20100828T144556+0300", tz, en_US) iso8601(dt, "20100828T114556Z", tz, vi) iso8601(d, "2010-08-28+0200", tz, en_US) # iso8601(d, '2010-08-28+0000', tz, vi) # iso8601(d, '2010-08-28Z', tz, en_US) iso8601(d, "2010-08-28", tz, vi) iso8601(d, "20100828+0200", tz, en_US)
def test_template_data_for_time_field_with_date_format(self): value = datetime(2016, 2, 22, 22, 22, 22, tzinfo=utc) self.env.config.set('ticket-custom', 'timefield', 'time') self.env.config.set('ticket-custom', 'timefield.format', 'date') self._insert_ticket(summary='Time fields', timefield=value) self.assertEqual(value, Ticket(self.env, 1)['timefield']) gmt12 = timezone('GMT +12:00') req = MockRequest(self.env, method='GET', path_info='/ticket/1', tz=gmt12) expected = user_time(req, format_date, value) self.assertIn('23', expected) # check 23 in day part self.assertTrue(self.ticket_module.match_request(req)) data = self.ticket_module.process_request(req)[1] for f in data['fields']: if f['name'] == 'timefield': self.assertEqual(expected, f['edit']) break else: self.fail('Missing timefield field')
def test_i18n_parse_date_iso8609(self): tz = datefmt.timezone('GMT +2:00') dt = datetime.datetime(2010, 8, 28, 13, 45, 56, 0, tz) d = datetime.datetime(2010, 8, 28, 0, 0, 0, 0, tz) en_US = Locale.parse('en_US') vi = Locale.parse('vi') def iso8601(expected, text, tz, locale): self.assertEqual(expected, datefmt.parse_date(text, tz, locale)) iso8601(dt, '2010-08-28T15:45:56+0400', tz, en_US) iso8601(dt, '2010-08-28T11:45:56+0000', tz, vi) iso8601(dt, '2010-08-28T11:45:56Z', tz, vi) iso8601(dt, '20100828T144556+0300', tz, en_US) iso8601(dt, '20100828T114556Z', tz, vi) iso8601(d, '2010-08-28+0200', tz, en_US) # iso8601(d, '2010-08-28+0000', tz, vi) # iso8601(d, '2010-08-28Z', tz, en_US) iso8601(d, '2010-08-28', tz, vi) iso8601(d, '20100828+0200', tz, en_US)
def test_i18n_format_time(self): tz = datefmt.timezone('GMT +2:00') t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) en_US = Locale.parse('en_US') en_GB = Locale.parse('en_GB') fr = Locale.parse('fr') ja = Locale.parse('ja') vi = Locale.parse('vi') zh_CN = Locale.parse('zh_CN') self.assertEqual('1:45:56 PM', datefmt.format_time(t, tzinfo=tz, locale=en_US)) self.assertEqual('13:45:56', datefmt.format_time(t, tzinfo=tz, locale=en_GB)) self.assertEqual('13:45:56', datefmt.format_time(t, tzinfo=tz, locale=fr)) self.assertEqual('13:45:56', datefmt.format_time(t, tzinfo=tz, locale=ja)) self.assertEqual('13:45:56', datefmt.format_time(t, tzinfo=tz, locale=vi)) self.assertEqual(u'下午01:45:56', datefmt.format_time(t, tzinfo=tz, locale=zh_CN))
def test_i18n_parse_date_date(self): tz = datefmt.timezone('GMT +2:00') expected = datetime.datetime(2010, 8, 28, 0, 0, 0, 0, tz) en_US = Locale.parse('en_US') en_GB = Locale.parse('en_GB') fr = Locale.parse('fr') ja = Locale.parse('ja') vi = Locale.parse('vi') zh_CN = Locale.parse('zh_CN') self.assertEqual(expected, datefmt.parse_date('Aug 28, 2010', tz, en_US)) self.assertEqual(expected, datefmt.parse_date('28 Aug 2010', tz, en_GB)) self.assertEqual(expected, datefmt.parse_date(u'28 août 2010', tz, fr)) self.assertEqual(expected, datefmt.parse_date('2010/08/28', tz, ja)) self.assertEqual(expected, datefmt.parse_date('28-08-2010', tz, vi)) self.assertEqual(expected, datefmt.parse_date(u'2010-8-28', tz, zh_CN))
def test_i18n_format_datetime(self): tz = datefmt.timezone('GMT +2:00') t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, datefmt.utc) en_US = Locale.parse('en_US') self.assertEqual('Aug 28, 2010 1:45:56 PM', datefmt.format_datetime(t, tzinfo=tz, locale=en_US)) en_GB = Locale.parse('en_GB') self.assertEqual('28 Aug 2010 13:45:56', datefmt.format_datetime(t, tzinfo=tz, locale=en_GB)) fr = Locale.parse('fr') self.assertEqual(u'28 août 2010 13:45:56', datefmt.format_datetime(t, tzinfo=tz, locale=fr)) ja = Locale.parse('ja') self.assertEqual(u'2010/08/28 13:45:56', datefmt.format_datetime(t, tzinfo=tz, locale=ja)) vi = Locale.parse('vi') self.assertEqual(u'13:45:56 28-08-2010', datefmt.format_datetime(t, tzinfo=tz, locale=vi)) zh_CN = Locale.parse('zh_CN') self.assertEqual(u'2010-8-28 下午01:45:56', datefmt.format_datetime(t, tzinfo=tz, locale=zh_CN))
def test_default(self): tz = datefmt.timezone("GMT +2:00") t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, tz) self.assertEqual("2010-08-28", datefmt.format_date(t, tzinfo=tz, locale="iso8601")) self.assertEqual("11:45:56+02:00", datefmt.format_time(t, tzinfo=tz, locale="iso8601")) self.assertEqual("2010-08-28T11:45:56+02:00", datefmt.format_datetime(t, tzinfo=tz, locale="iso8601"))
def test_with_iso8601(self): tz = datefmt.timezone("GMT +2:00") t = datetime.datetime(2010, 8, 28, 11, 45, 56, 123456, tz) self.assertEqual("2010-08-28", datefmt.format_date(t, "iso8601", tz, "iso8601")) self.assertEqual("11:45:56+02:00", datefmt.format_time(t, "iso8601", tz, "iso8601")) self.assertEqual("2010-08-28T11:45:56+02:00", datefmt.format_datetime(t, "iso8601", tz, "iso8601"))
def _get_timezone(self, req): try: return timezone(req.session.get('tz', self.default_timezone or 'missing')) except Exception: return localtz
def test_i18n_parse_date_datetime(self): tz = datefmt.timezone('GMT +2:00') expected = datetime.datetime(2010, 8, 28, 13, 45, 56, 0, tz) expected_minute = datetime.datetime(2010, 8, 28, 13, 45, 0, 0, tz) en_US = Locale.parse('en_US') en_GB = Locale.parse('en_GB') fr = Locale.parse('fr') ja = Locale.parse('ja') vi = Locale.parse('vi') zh_CN = Locale.parse('zh_CN') self.assertEqual(expected, datefmt.parse_date('Aug 28, 2010 1:45:56 PM', tz, en_US)) self.assertEqual(expected, datefmt.parse_date('8 28, 2010 1:45:56 PM', tz, en_US)) self.assertEqual(expected, datefmt.parse_date('28 Aug 2010 1:45:56 PM', tz, en_US)) self.assertEqual(expected, datefmt.parse_date('28 Aug 2010 PM 1:45:56', tz, en_US)) self.assertEqual(expected, datefmt.parse_date('28 Aug 2010 13:45:56', tz, en_US)) self.assertEqual(expected_minute, datefmt.parse_date('28 Aug 2010 PM 1:45', tz, en_US)) self.assertEqual(expected, datefmt.parse_date('28 Aug 2010 13:45:56', tz, en_GB)) self.assertEqual(expected, datefmt.parse_date(u'28 août 2010 13:45:56', tz, fr)) self.assertEqual(expected, datefmt.parse_date(u'août 28 2010 13:45:56', tz, fr)) self.assertEqual(expected_minute, datefmt.parse_date(u'août 28 2010 13:45', tz, fr)) self.assertEqual(expected, datefmt.parse_date('2010/08/28 13:45:56', tz, ja)) self.assertEqual(expected_minute, datefmt.parse_date('2010/08/28 13:45', tz, ja)) self.assertEqual(expected, datefmt.parse_date('13:45:56 28-08-2010', tz, vi)) self.assertEqual(expected_minute, datefmt.parse_date('13:45 28-08-2010', tz, vi)) self.assertEqual(expected, datefmt.parse_date(u'2010-8-28 下午01:45:56', tz, zh_CN)) self.assertEqual(expected, datefmt.parse_date(u'2010-8-28 01:45:56下午', tz, zh_CN)) self.assertEqual(expected_minute, datefmt.parse_date(u'2010-8-28 下午01:45', tz, zh_CN)) self.assertEqual(expected_minute, datefmt.parse_date(u'2010-8-28 01:45下午', tz, zh_CN))
def _get_timezone(self, req): try: return timezone( req.session.get('tz', self.default_timezone or 'missing')) except Exception: return localtz