diff options
Diffstat (limited to 'activities/templatetags')
-rw-r--r-- | activities/templatetags/__init__.py | 0 | ||||
-rw-r--r-- | activities/templatetags/activity_tags.py | 33 |
2 files changed, 33 insertions, 0 deletions
diff --git a/activities/templatetags/__init__.py b/activities/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/activities/templatetags/__init__.py diff --git a/activities/templatetags/activity_tags.py b/activities/templatetags/activity_tags.py new file mode 100644 index 0000000..cbbae57 --- /dev/null +++ b/activities/templatetags/activity_tags.py @@ -0,0 +1,33 @@ +import datetime + +from django import template +from django.utils import timezone + +register = template.Library() + + +@register.filter +def timedeltashort(value: datetime.datetime): + """ + A more compact version of timesince + """ + if not value: + return "" + # TODO: Handle things in the future properly + delta = timezone.now() - value + seconds = int(delta.total_seconds()) + days = delta.days + if seconds < 60: + text = f"{seconds:0n}s" + elif seconds < 60 * 60: + minutes = seconds // 60 + text = f"{minutes:0n}m" + elif seconds < 60 * 60 * 24: + hours = seconds // (60 * 60) + text = f"{hours:0n}h" + elif days < 365: + text = f"{days:0n}h" + else: + years = days // 365.25 + text = f"{years:0n}y" + return text |