@todo Add interface for task estimate
@todo Add interface for task location
@todo Add interface for task url
- @todo Add interface for task notes
@todo Add undo support
"""
API_KEY = '71f471f7c6ecdda6def341967686fe05'
yield list
def get_project(self, projId):
- proj = [proj for proj in self.get_projects() if projId == proj["id"]]
- assert len(proj) == 1, "%r / %r" % (proj, self._lists)
- return proj[0]
-
- def get_project_names(self):
- return (list["name"] for list in self.get_projects)
+ projs = [proj for proj in self.get_projects() if projId == proj["id"]]
+ assert len(projs) == 1, "%r: %r / %r" % (projId, projs, self._lists)
+ return projs[0]
def lookup_project(self, projName):
"""
"completedDate": task.completed,
"priority": task.priority,
"estimate": task.estimate,
- "notes": list(self._get_notes(taskId, taskSeries.notes)),
+ "notes": dict((
+ (note["id"], note)
+ for note in self._get_notes(taskId, taskSeries.notes)
+ )),
}
taskDetails = self._parse_task_details(rawTaskDetails)
yield taskDetails
)
assert rsp.stat == "ok", "Bad response: %r" % (rsp, )
+ def add_note(self, taskId, noteTitle, noteBody):
+ projId, seriesId, taskId = self._unpack_ids(taskId)
+
+ rsp = self._rtm.tasks.notes.add(
+ timeline=self._timeline,
+ list_id=projId,
+ taskseries_id=seriesId,
+ task_id=taskId,
+ note_title=noteTitle,
+ note_text=noteBody,
+ )
+ assert rsp.stat == "ok", "Bad response: %r" % (rsp, )
+
+ def update_note(self, noteId, noteTitle, noteBody):
+ projId, seriesId, taskId, note = self._unpack_ids(noteId)
+
+ rsp = self._rtm.tasks.notes.edit(
+ timeline=self._timeline,
+ note_id=noteId,
+ note_title=noteTitle,
+ note_text=noteBody,
+ )
+ assert rsp.stat == "ok", "Bad response: %r" % (rsp, )
+
+ def delete_note(self, noteId):
+ projId, seriesId, taskId, noteId = self._unpack_ids(noteId)
+
+ rsp = self._rtm.tasks.notes.delete(
+ timeline=self._timeline,
+ note_id=noteId,
+ )
+ assert rsp.stat == "ok", "Bad response: %r" % (rsp, )
+
@staticmethod
def _pack_ids(*ids):
"""