Fixing some load/save issues with filebackend
[doneit] / src / file_backend.py
index e846f98..4d80fe5 100644 (file)
@@ -19,14 +19,30 @@ class FileBackend(object):
                        "items": self._items,
                        "locations": self._locations,
                }
-               pickle.dump(state, self._filename)
+               with open(self._filename, "wb") as pickleFile:
+                       pickle.dump(state, pickleFile)
 
        def load(self):
-               state = pickle.load(self._filename)
+               state = {
+                       "projects": {},
+                       "items": {},
+                       "locations": {},
+               }
+               try:
+                       with open(self._filename, "rb") as pickleFile:
+                               state = pickle.load(pickleFile)
+               except IOError, e:
+                       if e.errno != 2:
+                               raise
+               except EOFError, e:
+                       pass
                self._projects = state["projects"]
                self._items = state["items"]
                self._locations = state["locations"]
 
+               if len(self._projects) == 0:
+                       self.add_project("Inbox")
+
        def add_project(self, name):
                projId = uuid.uuid4().hex
                projDetails = {
@@ -71,7 +87,7 @@ class FileBackend(object):
                return self._locations.itervalues()
 
        def get_tasks_with_details(self, projId):
-               return self._items[projId]
+               return self._items[projId].itervalues()
 
        def get_task_details(self, taskId):
                projId, partialTaskId = self._unpack_ids(taskId)