From 7444c4e3b3549a6caf09ca85566ba4834e63a256 Mon Sep 17 00:00:00 2001 From: Artur Mullakhmetov Date: Mon, 30 May 2016 15:59:48 +0300 Subject: [PATCH] Add iso8601 translator. --- axes/utils.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/axes/utils.py b/axes/utils.py index 0ea87ea..cc88241 100644 --- a/axes/utils.py +++ b/axes/utils.py @@ -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