7 class FileManager(object):
14 def add_project(self, name):
15 projId = uuid.uuid4().hex
22 assert projId not in self._projects, "How did uuid %r repeat?" % projId
23 self._projects[projId] = projDetails
25 def set_project_name(self, projId, name):
26 projDetails = self._projects[projId]
27 projDetails["name"] = name
29 def set_project_visibility(self, projId, visibility):
30 projDetails = self._projects[projId]
31 projDetails["isVisible"] = False
33 def get_projects(self):
34 return (projectDetails for projectDetails in self._projects.itervalues())
36 def get_project(self, projId):
37 return self._projects[projId]
39 def lookup_project(self, projName):
41 From a project's name, returns the project's details
45 for projectDetails in self._projects.itervalues()
46 if projectDetails["name"] == projName
48 assert len(todoList) == 1, "Wrong number of lists found for %s, in %r" % (projName, todoList)
51 def get_locations(self):
52 return (locDetails for locDetails in self._locations.itervalues())
54 def get_tasks_with_details(self, projId):
57 for taskDetails in self._items
58 if taskDetails["projId"] == projId
61 def get_task_details(self, taskId):
62 return self._items[taskId]
64 def add_task(self, projId, taskName):
65 taskId = uuid.uuid4().hex
66 assert taskId not in self._items, "How did uuid %r repeat?" % taskId
72 "locationId": toolbox.Optional(),
73 "dueDate": toolbox.Optional(),
75 "completedDate": toolbox.Optional(),
76 "priority": toolbox.Optional(),
77 "estimate": toolbox.Optional(),
80 self._items[taskId] = taskDetails
82 def set_project(self, taskId, newProjId):
83 taskDetails = self._items[taskId]
84 taskDetails["projId"] = newProjId
86 def set_name(self, taskId, name):
87 taskDetails = self._items[taskId]
88 taskDetails["name"] = name
90 def set_duedate(self, taskId, dueDate):
91 taskDetails = self._items[taskId]
92 taskDetails["dueDate"] = dueDate
94 def set_priority(self, taskId, priority):
95 taskDetails = self._items[taskId]
96 taskDetails["priority"] = priority
98 def complete_task(self, taskId):
99 taskDetails = self._items[taskId]
100 taskDetails["isCompleted"] = True
101 taskDetails["completionDate"] = toolbox.Optional(datetime.datetime.now())
103 def add_note(self, taskId, noteTitle, noteBody):
104 partialNoteId = uuid.uuid4().hex
105 noteId = self._pack_ids(taskId, partialNoteId)
111 assert noteId not in self._items[taskId]["notes"]
112 self._items[taskId]["notes"][noteId] = note
114 def update_note(self, noteId, noteTitle, noteBody):
115 taskId, partialNoteId = self._unpack_ids(noteId)
116 self._items[taskId]["notes"][noteId]["title"] = noteTitle
117 self._items[taskId]["notes"][noteId]["body"] = noteBody
119 def delete_note(self, noteId):
120 taskId, partialNoteId = self._unpack_ids(noteId)
121 del self._items[taskId]["notes"][noteId]
125 return "-".join((str(id) for id in ids))
128 def _unpack_ids(ids):
129 return ids.split("-")