From fc8b5be4a0c8f5f5d6dbe36aea4da12eab3dfbbb Mon Sep 17 00:00:00 2001 From: Michael Manfre Date: Fri, 13 Jan 2023 12:54:02 -0500 Subject: [PATCH] Support future times with timedeltashort tag (#403) --- activities/templatetags/activity_tags.py | 7 ++++--- tests/activities/templatetags/test_activity_tags.py | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/activities/templatetags/activity_tags.py b/activities/templatetags/activity_tags.py index 5280856..f063b60 100644 --- a/activities/templatetags/activity_tags.py +++ b/activities/templatetags/activity_tags.py @@ -14,10 +14,11 @@ def timedeltashort(value: datetime.datetime): """ if not value: return "" - # TODO: Handle things in the future properly delta = timezone.now() - value seconds = int(delta.total_seconds()) - days = delta.days + sign = "-" if seconds < 0 else "" + seconds = abs(seconds) + days = abs(delta.days) if seconds < 60: text = f"{seconds:0n}s" elif seconds < 60 * 60: @@ -31,7 +32,7 @@ def timedeltashort(value: datetime.datetime): else: years = max(days // 365.25, 1) text = f"{years:0n}y" - return text + return sign + text @register.simple_tag(takes_context=True) diff --git a/tests/activities/templatetags/test_activity_tags.py b/tests/activities/templatetags/test_activity_tags.py index 0c481a2..0842381 100644 --- a/tests/activities/templatetags/test_activity_tags.py +++ b/tests/activities/templatetags/test_activity_tags.py @@ -22,3 +22,11 @@ def test_timedeltashort(): assert timedeltashort(value - timedelta(days=364)) == "364d" assert timedeltashort(value - timedelta(days=365)) == "1y" assert timedeltashort(value - timedelta(days=366)) == "1y" + + assert timedeltashort(value + timedelta(seconds=2.1)) == "-2s" + assert timedeltashort(value + timedelta(minutes=2, seconds=1)) == "-2m" + assert timedeltashort(value + timedelta(hours=2, seconds=1)) == "-2h" + assert timedeltashort(value + timedelta(days=2)) == "-2d" + assert timedeltashort(value + timedelta(days=364)) == "-364d" + assert timedeltashort(value + timedelta(days=365)) == "-1y" + assert timedeltashort(value + timedelta(days=366)) == "-1y"