-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase.py
More file actions
151 lines (116 loc) · 4.46 KB
/
database.py
File metadata and controls
151 lines (116 loc) · 4.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import secret
from django import forms
from datetime import date, datetime
from rtm import createRTM
class Task:
def __init__(self, rtm, tasklist, taskseries, task = None):
if task is None:
task = taskseries.task
self._rtm = rtm
self.id = task.id
self.series_id = taskseries.id
self.list_id = tasklist.id
self._text = taskseries.name
self._list = None
if task.due == '':
self._due = None
else:
self._due = datetime.strptime(task.due, "%Y-%m-%dT%H:%M:%SZ")
self._repeat = None
self._time_estimate = None
self._tags = None
self._priority = task.priority
def text(self):
if self._text is None:
return ''
return self._text
def list(self):
return self._list
def due(self):
if self._due is None:
return ''
day = self._due.strftime("%d %b")
if date.today().isocalendar()[1] == self._due.isocalendar()[1]:
day = self._due.strftime("%a")
if type(self._due) is datetime:
time = self._due.strftime(" %H:%M")
return day + time
if type(self._due) is date:
return day
return self._due
def longdue(self):
if self._due is None:
return ''
day = self._due.strftime("%Y-%m-%d")
if type(self._due) is datetime:
time = self._due.strftime(" %H:%M")
return day + time
if type(self._due) is date:
return day
return self._due
def repeat(self):
return self._repeat
def time_estimate(self):
return self._time_estimate
def tags(self):
return self._tags
def priority(self):
return self._priority
def priority_widget(self):
return forms.ChoiceField(choices = [(0, ''), (1, '1'), (2, '2'), (3, '3')], widget = forms.Select)
def toConsole(self):
retval = self.text()
if self.due() != '':
retval += ' ' + self.due()
if self.priority() != '':
retval += ' !' + self.priority()
return retval
def complete(self):
self._rtm.tasks.complete(timeline = self._rtm.timeline, list_id = self.list_id, taskseries_id = self.series_id, task_id = self.id)
def postpone(self):
self._rtm.tasks.postpone(timeline = self._rtm.timeline, list_id = self.list_id, taskseries_id = self.series_id, task_id = self.id)
def get_date(date):
rtm = createRTM(secret.API_KEY, secret.SHARED_SECRET, secret.TOKEN)
rspTasks = rtm.tasks.getList(filter='due:' + date)
tasks = []
if hasattr(rspTasks.tasks, "list") and \
hasattr(rspTasks.tasks.list, "__getitem__"):
for l in rspTasks.tasks.list:
# XXX: taskseries *may* be a list
if isinstance(l.taskseries, (list, tuple)):
for t in l.taskseries:
tasks.append(Task(rtm, l, t))
else:
tasks.append(Task(rtm, l, l.taskseries))
return tasks
def get_task(list_id, series_id, task_id):
rtm = createRTM(secret.API_KEY, secret.SHARED_SECRET, secret.TOKEN)
rspTasks = rtm.tasks.getList()
tasks = []
if hasattr(rspTasks.tasks, "list") and \
hasattr(rspTasks.tasks.list, "__getitem__"):
for l in rspTasks.tasks.list:
# XXX: taskseries *may* be a list
if not hasattr(l, "taskseries"):
continue
if isinstance(l.taskseries, (list, tuple)):
for taskserie in l.taskseries:
if isinstance(taskserie.task, (list, tuple)):
for task in taskserie.task:
t = Task(rtm, l, taskserie, task)
if t.list_id == list_id and t.series_id == series_id and t.id == task_id:
return t
else:
t = Task(rtm, l, taskserie)
if t.list_id == list_id and t.series_id == series_id and t.id == task_id:
return t
else:
t = Task(rtm, l, l.taskseries)
if t.list_id == list_id and t.series_id == series_id and t.id == task_id:
return t
return None
def add(string):
rtm = createRTM(secret.API_KEY, secret.SHARED_SECRET, secret.TOKEN)
time = rtm.timelines.create()
rtm.tasks.add(timeline=time.timeline, name=string, parse=1)
return