7 class FileManager(object):
14 def get_projects(self):
15 return (projectDetails for projectDetails in self._projects.itervalues())
17 def get_project(self, projId):
18 return self._projects[projId]
20 def get_project_names(self):
21 return (projectDetails["name"] for projectDetails in self._projects.itervalues())
23 def lookup_project(self, projName):
25 From a project's name, returns the project's details
29 for projectDetails in self._projects.itervalues()
30 if projectDetails["name"] == projName
32 assert len(todoList) == 1, "Wrong number of lists found for %s, in %r" % (projName, todoList)
35 def get_locations(self):
36 return (locDetails for locDetails in self._locations.itervalues())
38 def get_tasks_with_details(self, projId):
41 for taskDetails in self._items
42 if taskDetails["projId"] == projId
45 def get_task_details(self, taskId):
46 return self._items[taskId]
48 def add_task(self, projId, taskName):
50 assert taskId not in self._items, "How did uuid %r repeat?" % taskId
56 "locationId": toolbox.Optional(),
57 "dueDate": toolbox.Optional(),
59 "completedDate": toolbox.Optional(),
60 "priority": toolbox.Optional(),
61 "estimate": toolbox.Optional(),
64 self._items[taskId] = taskDetails
66 def set_project(self, taskId, newProjId):
67 taskDetails = self._items[taskId]
68 taskDetails["projId"] = newProjId
70 def set_name(self, taskId, name):
71 taskDetails = self._items[taskId]
72 taskDetails["name"] = name
74 def set_duedate(self, taskId, dueDate):
75 taskDetails = self._items[taskId]
76 taskDetails["dueDate"] = dueDate
78 def set_priority(self, taskId, priority):
79 taskDetails = self._items[taskId]
80 taskDetails["priority"] = priority
82 def complete_task(self, taskId):
83 taskDetails = self._items[taskId]
84 taskDetails["isCompleted"] = True
85 taskDetails["completionDate"] = toolbox.Optional(datetime.datetime.now())
87 def add_note(self, taskId, noteTitle, noteBody):
88 partialNoteId = uuid.uuid4()
89 noteId = self._pack_ids(taskId, partialNoteId)
95 assert noteId not in self._items[taskId]["notes"]
96 self._items[taskId]["notes"][noteId] = note
98 def update_note(self, noteId, noteTitle, noteBody):
99 taskId, partialNoteId = self._unpack_ids(noteId)
100 self._items[taskId]["notes"][noteId]["title"] = noteTitle
101 self._items[taskId]["notes"][noteId]["body"] = noteBody
103 def delete_note(self, noteId):
104 taskId, partialNoteId = self._unpack_ids(noteId)
105 del self._items[taskId]["notes"][noteId]
109 return "-".join((str(id) for id in ids))
112 def _unpack_ids(ids):
113 return ids.split("-")