[PATCH] Moved code from AgeFormater to dateutils.formatTimeDelta. Show due date in addition to time left.
Aurélien Gâteau
aurelien.gateau
Mar 24 Fév 09:40:28 CET 2009
---
dateutils.py | 55 ++++++++++++++++++++------------------------------
textlistrenderer.py | 26 ++++++++++-------------
2 files changed, 33 insertions(+), 48 deletions(-)
diff --git a/dateutils.py b/dateutils.py
index c001bad..dfa5532 100644
--- a/dateutils.py
+++ b/dateutils.py
@@ -110,41 +110,30 @@ def parseHumaneDateTime(line):
return date
-def formatTimeDelta(timeLeft):
- """Friendly format a time delta :
- - Use fake negative timedelta if needed not to confuse user.
- - Hide seconds when delta > 1 day
- - Hide hours and minutes when delta > 3 days
+def formatTimeDelta(delta):
+ """Friendly format a time delta:
+ - Show only days if delta > 1 day
+ - Show only hours and minutes othewise
@param timeLeft: Remaining time
@type timeLeft: timedelta (from datetime)
@return: formated str"""
- if timeLeft < timedelta(0):
- # Negative timedelta are very confusing, so we manually put a "-" and show a positive timedelta
- timeLeft=-timeLeft
- # Shorten timedelta:
- if timeLeft < timedelta(3):
- formatedTimeLeft=shortenTimeDelta(timeLeft, "datetime")
- else:
- formatedTimeLeft=shortenTimeDelta(timeLeft, "date")
- formatedTimeLeft="-"+formatedTimeLeft
- elif timeLeft < timedelta(1):
- formatedTimeLeft=str(timeLeft)
- elif timeLeft < timedelta(3):
- formatedTimeLeft=shortenTimeDelta(timeLeft, "datetime")
+ if delta.days > 7:
+ value = "%dw" % (delta.days / 7)
+ days = delta.days % 7
+ if days > 0:
+ value = value + ", %dd" % days
+ elif delta.days > 0:
+ value = "%dd" % delta.days
else:
- formatedTimeLeft=shortenTimeDelta(timeLeft, "date")
- return formatedTimeLeft
-
-
-def shortenTimeDelta(timeLeft, format):
- """Shorten timeDelta according the format parameter
- @param timeLeft: timedelta to be shorten
- @type timeLeft: timedelta (from datetime)
- @param format: can be "date" (hours, minute and seconds removed) or "datetime" (seconds removed)
- @return: shorten timedelta"""
- if format=="date":
- return str(timeLeft).split(",")[0]
- elif format=="datetime":
- # Hide seconds (remove the 3 last characters)
- return str(timeLeft)[:-3]
+ minutes = delta.seconds / 60
+ hours = minutes / 60
+ minutes = minutes % 60
+ if hours > 0:
+ value = "%dh " % hours
+ else:
+ value = ""
+ value = value + "%dm" % minutes
+ if delta < timedelta(0):
+ value = "-" + value
+ return value
# vi: ts=4 sw=4 et
diff --git a/textlistrenderer.py b/textlistrenderer.py
index c4314f1..239f49e 100644
--- a/textlistrenderer.py
+++ b/textlistrenderer.py
@@ -98,20 +98,9 @@ class AgeFormater(object):
def __call__(self, task):
delta = self.today - task.creationDate
- if delta.days > 7:
- value = "%dw" % (delta.days / 7)
- days = delta.days % 7
- if days > 0:
- value = value + ", %dd" % days
- elif delta.days > 0:
- value = "%dd" % delta.days
- elif delta.seconds > 3600:
- value = "%dh" % (delta.seconds / 3600)
- else:
- value = "%dm" % (delta.seconds / 60)
- return value, colorizer(delta.days)
+ return dateutils.formatTimeDelta(delta), colorizer(delta.days)
-class TimeLeftFormater(object):
+class DueDateFormater(object):
def __init__(self, today):
self.today = today
@@ -119,8 +108,15 @@ class TimeLeftFormater(object):
if not task.dueDate:
return "", None
delta = task.dueDate - self.today
+ if delta.days != 0:
+ value = task.dueDate.strftime("%x %H:%M")
+ else:
+ value = task.dueDate.strftime("%H:%M")
+
+ value = value + " (%s)" % dateutils.formatTimeDelta(delta)
+
color = colorizer(delta.days * 33, reverse=True)
- return dateutils.formatTimeDelta(delta), color
+ return value, color
class TextListRenderer(object):
@@ -135,7 +131,7 @@ class TextListRenderer(object):
Column("U" , 3 , urgencyFormater),
Column("S" , 1 , statusFormater),
Column("Age" , 8 , AgeFormater(today)),
- Column("Time left", 13 , TimeLeftFormater(today))
+ Column("Due date" , 23 , DueDateFormater(today))
]
--
1.5.4.4
--------------080402080302090608010709--
Plus d'informations sur la liste de diffusion Ml-yokadi