taskkeeperbot/chat.py
vylion f0e64a26da Added command to /delete tasks
Added command to /check out tasks (until next notification)
Changed tasks from a list to a dictionary
Went to sleep and forgot to commit changes and push
2017-10-15 10:18:39 +02:00

62 lines
1.7 KiB
Python

from task import *
class Chat(object):
def __init__(self, ident, name):
self.id = ident
self.tasks = {}
self.name = name
def addTask(self, name, repeat=0, hour=0, day=0, month=0, year=0):
t = Task(name, repeat, hour, day, month, year)
if name in self.tasks:
raise ValueError('duplicate key "' + name + '" found')
self.tasks[name] = t
print('new task ' + t.name + ' added:')
print(str(t) + '\n')
return t
def getTasksRange(self, d=0, m=0, y=0, d2=0, m2=0, y2=0):
dateNow = datetime.now()
if y == 0:
y = dateNow.year
if m == 0:
m = dateNow.month
if d == 0:
d = dateNow.day
if y2 == 0:
y2 = dateNow.year
if m2 == 0:
m2 = dateNow.month
if d2 == 0:
d2 = dateNow.day
dateIni = datetime(y, m, d)
dateEnd = datetime(y2, m2, d2, 23)
resultTasks = []
for t in self.tasks:
task = self.tasks[t]
print(task)
if task.getDate() >= dateIni and task.getDate() <= dateEnd:
resultTasks.append(task)
return resultTasks
def getTasks(self):
resultTasks = []
for _, v in self.tasks.items():
resultTasks.append(v)
return resultTasks
def deleteTask(self, name):
if name in self.tasks:
del self.tasks[name]
return True
return False
def markDone(self, name):
if name in self.tasks:
t = self.tasks[name]
if t.repeat > 0:
t.date += timedelta(t.repeat)
else:
del self.tasks[name]
return True
return False