feat: Show nicer time of creating the notification

This commit is contained in:
2025-07-12 16:46:56 +02:00
parent e2e6c14d57
commit 42320866c4
3 changed files with 18 additions and 5 deletions

View File

@@ -9,7 +9,7 @@
</form> </form>
<div class="notification-header"> <div class="notification-header">
<a href="{{ notification.url }}"><b>{{ notification.title }}</b></a> <a href="{{ notification.url }}"><b>{{ notification.title }}</b></a>
<i class="card-timestamp">{{ notification.created_at }}</i> <i class="card-timestamp">{{ notification.created_at|time_since_hr }}</i>
</div> </div>
<div class="notification-body"> <div class="notification-body">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

View File

@@ -4,7 +4,9 @@ from django import template
from django.template.defaultfilters import stringfilter from django.template.defaultfilters import stringfilter
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from urllib.parse import urlparse from urllib.parse import urlparse
from django.utils import timezone
from fellchensammlung.tools.misc import time_since_as_hr_string
from notfellchen import settings from notfellchen import settings
from fellchensammlung.models import TrustLevel from fellchensammlung.models import TrustLevel
@@ -114,3 +116,9 @@ def dictkey(d, key):
def host(): def host():
# Will not work for localhost or deployments without https # Will not work for localhost or deployments without https
return f"https://{settings.host}" return f"https://{settings.host}"
@register.filter
def time_since_hr(timestamp):
t_delta = timezone.now() - timestamp
return time_since_as_hr_string(t_delta)

View File

@@ -37,6 +37,8 @@ def time_since_as_hr_string(age: datetime.timedelta) -> str:
weeks = age.days / 7 weeks = age.days / 7
months = age.days / 30 months = age.days / 30
years = age.days / 365 years = age.days / 365
minutes = age.seconds / 60
hours = age.seconds / 3600
if years >= 1: if years >= 1:
text = ngettext( text = ngettext(
"vor einem Jahr", "vor einem Jahr",
@@ -49,11 +51,14 @@ def time_since_as_hr_string(age: datetime.timedelta) -> str:
text = _("vor %(month)d Monaten") % {"month": months} text = _("vor %(month)d Monaten") % {"month": months}
elif weeks >= 3: elif weeks >= 3:
text = _("vor %(weeks)d Wochen") % {"weeks": weeks} text = _("vor %(weeks)d Wochen") % {"weeks": weeks}
elif days >= 1:
text = ngettext("vor einem Tag","vor %(count)d Tagen", days,) % {"count": days,}
elif hours >= 1:
text = ngettext("vor einer Stunde", "vor %(count)d Stunden", hours,) % {"count": hours,}
elif minutes >= 1:
text = ngettext("vor einer Minute", "vor %(count)d Minuten", minutes, ) % {"count": minutes, }
else: else:
if days == 0: text = _("Gerade eben")
text = _("Heute")
else:
text = ngettext("vor einem Tag","vor %(count)d Tagen", days,) % {"count": days,}
return text return text