from django.template import Library import datetime register = Library() @register.filter(name='ago') def ago(value, recent=None): "Returns a nicely formatted time difference" if recent is None: recent = datetime.datetime.now() difference = recent - value weeks, days = divmod(difference.days, 7) minutes, seconds = divmod(difference.seconds, 60) hours, minutes = divmod(minutes, 60) if weeks > 0: output = "%s week" % weeks if weeks > 1: output +='s' elif days > 0: output = "%s day" % days if days > 1: output+='s' elif hours > 0: output = "%s hour" % hours if hours > 1: output+='s' elif minutes > 0: output = "%s minute" % minutes if minutes > 1: output+='s' elif seconds > 0: output = "% second" % seconds if seconds > 1: output+='s' else: output = "" return output