# vim: set ts=4 sw=4 expandtab:
import puremvc.patterns.proxy
from vo.TimeVO import TimeVO
import time
class TimeProxy(puremvc.patterns.proxy.Proxy):
NAME = "TimeProxy"
def __init__(self):
super(TimeProxy, self).__init__(TimeProxy.NAME, [])
self.clear()
def clear(self):
self.data = {}
def getDateEntries(self, date):
if self.data.has_key(date):
return self.data[date]
return []
def setDateEntries(self, date, entries):
self.data[date] = entries
def addItem(self, date, item):
if not self.data.has_key(date):
self.data[date] = []
self.data[date].append(item)
def removeDate(self, date):
if self.data.has_key(date):
self.data[date] = []
def exportData(self):
lines = []
dates = self.data.keys()
dates.sort()
for date in dates:
for timeVO in self.data[date]:
lines.append('''"%s","%s","%s","%s","%s"''' % (date, timeVO.start, timeVO.end, timeVO.project, timeVO.description))
lines.sort()
return "\n".join(lines)
def importData(self, data, onError):
today = time.strftime("%Y%m%d", time.localtime())
dateEntries = {}
lines = data.split("\n")
if len(lines) == 1:
lines = data.split("\r")
lineno = 0
for line in lines:
lineno += 1
line = line.strip()
if line == "" or line[0] == '#':
# Ignore empty lines, or lines starting with a #
continue
if len(line) < 3 or line[0] != '"' or line[-1] != '"':
return onError(lineno, line)
s = line[1:-1]
cols = s.split('","')
if len(cols) != 5:
return onError(lineno, line)
date = cols[0]
if date == 'TODAY':
date = today
if not dateEntries.has_key(date):
dateEntries[date] = []
dateEntries[date].append(cols[1:])
# We got this far, so we have no errors yet
self.clear()
dates = dateEntries.keys()
dates.sort()
for date in dates:
thisDate = []
for cols in dateEntries[date]:
timeVO = TimeVO(*cols)
thisDate.append(timeVO)
self.setDateEntries(date, thisDate)
return date
|