-from Components.Converter.Converter import Converter
-from time import localtime
+from Converter import Converter
+from time import localtime, strftime
+from Components.Element import cached
class ClockToText(Converter, object):
DEFAULT = 0
WITH_SECONDS = 1
IN_MINUTES = 2
+ DATE = 3
+ FORMAT = 4
+ AS_LENGTH = 5
# add: date, date as string, weekday, ...
# (whatever you need!)
- def __init__(self, type, *args, **kwargs):
- Converter.__init__(self)
+ def __init__(self, type):
+ Converter.__init__(self, type)
if type == "WithSeconds":
self.type = self.WITH_SECONDS
elif type == "InMinutes":
self.type = self.IN_MINUTES
+ elif type == "Date":
+ self.type = self.DATE
+ elif type == "AsLength":
+ self.type = self.AS_LENGTH
+ elif str(type).find("Format") != -1:
+ self.type = self.FORMAT
+ self.fmt_string = type[7:]
else:
self.type = self.DEFAULT
+ @cached
def getText(self):
time = self.source.time
if time is None:
# handle durations
if self.type == self.IN_MINUTES:
return "%d min" % (time / 60)
+ elif self.type == self.AS_LENGTH:
+ return "%d:%02d" % (time / 60, time % 60)
t = localtime(time)
return "%2d:%02d:%02d" % (t.tm_hour, t.tm_min, t.tm_sec)
elif self.type == self.DEFAULT:
return "%02d:%02d" % (t.tm_hour, t.tm_min)
+ elif self.type == self.DATE:
+ return strftime("%A %B %d, %Y", t)
+ elif self.type == self.FORMAT:
+ spos = self.fmt_string.find('%')
+ if spos > 0:
+ s1 = self.fmt_string[:spos]
+ s2 = strftime(self.fmt_string[spos:], t)
+ return str(s1+s2)
+ else:
+ return strftime(self.fmt_string, t)
else:
return "???"