Add iso8601 translator.

This commit is contained in:
Artur Mullakhmetov 2016-05-30 15:59:48 +03:00
parent 2643de5e59
commit 7444c4e3b3

View file

@ -18,3 +18,24 @@ def reset(ip=None, username=None):
attempts.delete()
return count
def iso8601(value):
"""Returns datetime.timedelta translated to ISO 8601 formatted duration.
"""
seconds = value.total_seconds()
minutes, seconds = divmod(seconds, 60)
hours, minutes = divmod(minutes, 60)
days, hours = divmod(hours, 24)
date = '{:.0f}D'.format(days) if days else ''
time_values = hours, minutes, seconds
time_designators = 'H', 'M', 'S'
time = ''.join(
[('{:.0f}'.format(value) + designator)
for value, designator in zip(time_values, time_designators)
if value]
)
return u'P' + date + time