Fix l10n.formatTimestamp so it accepts strings
This commit is contained in:
parent
0d2c94f060
commit
0a2fb54f78
32
src/l10n.py
32
src/l10n.py
|
@ -11,6 +11,7 @@ logger = logging.getLogger('file_only')
|
|||
|
||||
DEFAULT_ENCODING = 'ISO8859-1'
|
||||
DEFAULT_LANGUAGE = 'en_US'
|
||||
DEFAULT_TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
|
||||
|
||||
encoding = DEFAULT_ENCODING
|
||||
language = DEFAULT_LANGUAGE
|
||||
|
@ -23,13 +24,38 @@ except:
|
|||
logger.exception('Could not determine language or encoding')
|
||||
|
||||
|
||||
if shared.config.has_option('bitmessagesettings', 'timeformat'):
|
||||
time_format = shared.config.get('bitmessagesettings', 'timeformat')
|
||||
#Test the format string
|
||||
try:
|
||||
time.strftime(time_format)
|
||||
except:
|
||||
time_format = DEFAULT_TIME_FORMAT
|
||||
else:
|
||||
time_format = DEFAULT_TIME_FORMAT
|
||||
|
||||
|
||||
def formatTimestamp(timestamp = None, as_unicode = True):
|
||||
if timestamp and isinstance(timestamp, (float, int)):
|
||||
timestring = time.strftime(time_format, time.localtime(timestamp))
|
||||
else:
|
||||
#For some reason some timestamps are strings so we need to sanitize.
|
||||
if timestamp is not None and not isinstance(timestamp, int):
|
||||
try:
|
||||
timestamp = int(timestamp)
|
||||
except:
|
||||
timestamp = None
|
||||
|
||||
#timestamp can't be less than 0.
|
||||
if timestamp is not None and timestamp < 0:
|
||||
timestamp = None
|
||||
|
||||
if timestamp is None:
|
||||
timestring = time.strftime(time_format)
|
||||
else:
|
||||
#In case timestamp is too far in the future
|
||||
try:
|
||||
timestring = time.strftime(time_format, time.localtime(timestamp))
|
||||
except ValueError:
|
||||
timestring = time.strftime(time_format)
|
||||
|
||||
if as_unicode:
|
||||
return unicode(timestring, encoding)
|
||||
return timestring
|
||||
|
|
Loading…
Reference in New Issue
Block a user