1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-26 15:26:19 +00:00

Merge branch 'proventa-master'

This commit is contained in:
zhengxie
2015-03-30 15:30:42 +08:00

View File

@@ -242,29 +242,39 @@ def translate_commit_desc_escape(value):
return return_value
@register.filter(name='translate_seahub_time')
def translate_seahub_time(value):
"""Translate seahub time to human friendly format instead of timestamp"""
def translate_seahub_time(value, autoescape=None):
if isinstance(value, int) or isinstance(value, long): # check whether value is int
val_ts = value
try:
val = datetime.fromtimestamp(val_ts) # convert timestamp to datetime
val = datetime.fromtimestamp(value) # convert timestamp to datetime
except ValueError as e:
return ""
elif isinstance(value, datetime):
# FIXME: convert datetime to timestamp may cause problem, need a better way.
val_ts = int(time.mktime(value.timetuple()))
val = value
else:
return value
limit = 14 * 24 * 60 * 60 # Timestamp with in two weeks will be translated
translated_time = translate_seahub_time_str(val)
if autoescape:
translated_time = escape(translated_time)
timestring = val.isoformat()
titletime = val.strftime("%c")
time_with_tag = '<time datetime="'+timestring+'" is="relative-time" title="'+titletime+'" >'+translated_time+'</time>'
return mark_safe(time_with_tag)
def translate_seahub_time_str(val):
"""Convert python datetime to human friendly format."""
now = datetime.now()
# If current time is less than value, that means clock at user machine is
# If current time is less than `val`, that means clock at user machine is
# faster than server, in this case, we just set time description to `just now`
if time.mktime(now.timetuple()) < val_ts:
if now < val:
return _('Just now')
limit = 14 * 24 * 60 * 60 # Timestamp with in two weeks will be translated
delta = now - (val - dt.timedelta(0, 0, val.microsecond))
seconds = delta.seconds
days = delta.days