From 9352bf34147fc5624783563a6aa1db67f9a438a3 Mon Sep 17 00:00:00 2001
From: Andrew Williams
Date: Sun, 18 Apr 2010 03:53:52 +0100
Subject: [PATCH] Added natural times to profile view
---
sso/templatetags/naturaltimediff.py | 33 +++++++++++++++++++++++++++++
templates/sso/profile.html | 4 +++-
2 files changed, 36 insertions(+), 1 deletion(-)
create mode 100644 sso/templatetags/naturaltimediff.py
diff --git a/sso/templatetags/naturaltimediff.py b/sso/templatetags/naturaltimediff.py
new file mode 100644
index 0000000..657155a
--- /dev/null
+++ b/sso/templatetags/naturaltimediff.py
@@ -0,0 +1,33 @@
+from django import template
+
+register = template.Library()
+
+MOMENT = 120 # duration in seconds within which the time difference
+ # will be rendered as 'a moment ago'
+
+@register.filter
+def naturaltimediff(value):
+ """
+ Finds the difference between the datetime value given and now()
+ and returns appropriate humanize form
+ """
+
+ from datetime import datetime
+
+ if isinstance(value, datetime):
+ delta = datetime.now() - value
+ if delta.days > 6:
+ return value.strftime("%b %d") # May 15
+ if delta.days > 1:
+ return value.strftime("%A") # Wednesday
+ elif delta.days == 1:
+ return 'yesterday' # yesterday
+ elif delta.seconds > 3600:
+ return str(delta.seconds / 3600 ) + ' hours ago' # 3 hours ago
+ elif delta.seconds > MOMENT:
+ return str(delta.seconds/60) + ' minutes ago' # 29 minutes ago
+ else:
+ return 'a moment ago' # a moment ago
+ return defaultfilters.date(value)
+ else:
+ return str(value)
diff --git a/templates/sso/profile.html b/templates/sso/profile.html
index e9f9fc0..d812d87 100644
--- a/templates/sso/profile.html
+++ b/templates/sso/profile.html
@@ -1,5 +1,7 @@
{% extends "base.html" %}
+{% load naturaltimediff %}
+
{% block title %}Your Profile{% endblock %}
{% block content %}
@@ -64,7 +66,7 @@ setup.
{{ acc.api_key }} |
{{ acc.description }} |
{{ acc.api_status_description }} |
- {{ acc.api_last_updated }} |
+ {{ acc.api_last_updated|naturaltimediff }} |
Refresh,
Delete |