def time_datetime(dt): """ Alternative to babel datetimeformat, allows user to choose ISO 8601 format by checking box in usersettings Options. Input may be datetime object or timestamp. """ return show_time.format_date_time(dt)
def macro(self, content, arguments, page_url, alternative): if arguments is None: tm = None else: stamp = arguments[0] tm = self.parse_time(stamp) return show_time.format_date_time(tm)
def test_show_time_datetime(self): """ users who are not logged-in get ISO 8601 Zulu dates """ formatted_date = show_time.format_date(utc_dt=0) assert formatted_date == '1970-01-01z' formatted_time = show_time.format_time(utc_dt=0) assert formatted_time == '00:00:00z' formatted_date_time = show_time.format_date_time(utc_dt=0) assert formatted_date_time == '1970-01-01 00:00:00z'
def test_parse_time(self): MacroDateTimeBase_obj = MacroDateTimeBase() test_time_args = '2011-08-07T11:11:11+0533' ts = MacroDateTimeBase_obj.parse_time(test_time_args) expected = 1312695491.0 assert ts == expected result = format_date_time(datetime.utcfromtimestamp(ts)) expected = '2011-08-07 05:38:11z' assert result == expected flaskg.user.valid = True # show_time creates ISO 8601 dates if user is not logged in result = format_date_time(datetime.utcfromtimestamp(ts)) expected = 'Aug 7, 2011, 5:38:11 AM' # comma after year was added in recent CLDR assert result == expected with pytest.raises(ValueError): # things after next 10,000 years can't be predicted MacroDateTimeBase_obj.parse_time('12011-08-07T11:11:11')
def test_show_time_datetime_logged_in_local(self): """users who are logged-in, unchecked ISO-8601 get dates based on locale and timezone""" flaskg.user.valid = True flaskg.user.locale = 'en' flaskg.user.iso_8601 = False flaskg.user.timezone = 'US/Arizona' formatted_date = show_time.format_date(utc_dt=0) assert formatted_date == 'Dec 31, 1969' formatted_time = show_time.format_time(utc_dt=0) assert formatted_time == '5:00:00 PM' formatted_date_time = show_time.format_date_time(utc_dt=0) assert formatted_date_time == 'Dec 31, 1969, 5:00:00 PM'
def test_show_time_datetime_logged_in_utc(self): """users who are logged-in, selected UTC timezone and checked ISO-8601 get ISO 8601 Zulu dates""" flaskg.user.valid = True flaskg.user.timezone = 'UTC' flaskg.user.locale = 'en' flaskg.user.iso_8601 = True formatted_date = show_time.format_date(utc_dt=0) assert formatted_date == '1970-01-01z' formatted_time = show_time.format_time(utc_dt=0) assert formatted_time == '00:00:00z' formatted_date_time = show_time.format_date_time(utc_dt=0) assert formatted_date_time == '1970-01-01 00:00:00z'
def test_Macro(): """Test: DateTime.Macro """ flaskg.user.valid = True # show_time creates ISO 8601 dates if user is not logged in macro_obj = Macro() # when arguments is None result = macro_obj.macro('content', None, 'page_url', 'alternative') # get the current time test_time = time.time() test_time = format_date_time(datetime.utcfromtimestamp(test_time)) assert test_time == result arguments = ['2011-08-07T11:11:11', 'argument2'] result = macro_obj.macro('content', arguments, 'page_url', 'alternative') expected = 'Aug 7, 2011, 11:11:11 AM' # comma after year was added in recent CLDR assert result == expected flaskg.user.valid = False result = macro_obj.macro('content', arguments, 'page_url', 'alternative') expected = '2011-08-07 11:11:11z' assert result == expected arguments = ['incorrect_argument'] with pytest.raises(ValueError): macro_obj.macro('content', arguments, 'page_url', 'alternative') # the following are different ways to specify the same moment expected = '2019-10-07 18:30:00z' arguments = ['2019-10-07T18:30:00Z' '2019-10-07T22:30:00+0400', '2019-10-07 11:30:00-0700', # ascii hyphen-minus '2019-10-07T15:00:00-0330', '2019-10-07 11:30:00\u22120700', # unicode minus \u2212 '2019-10-07T15:00:00\u22120330', ] for arg in arguments: result = macro_obj.macro('content', (arg, ), 'page_url', 'alternative') assert result == expected
def time_datetime(dt): """ Alternative to babel datetimeformat, allows user to choose ISO 8601 format by checking box in usersettings Options. """ return show_time.format_date_time(datetime.datetime.utcfromtimestamp(dt))