Added project editing api to backends
authorEd Page <eopage@byu.net>
Sat, 18 Apr 2009 01:17:02 +0000 (20:17 -0500)
committerEd Page <eopage@byu.net>
Sat, 18 Apr 2009 01:17:02 +0000 (20:17 -0500)
src/file_backend.py
src/null_backend.py
src/rtm_backend.py

index 584480e..9fdbd44 100644 (file)
@@ -11,6 +11,25 @@ class FileManager(object):
                self._items = {}
                self._locations = {}
 
+       def add_project(self, name):
+               projId = uuid.uuid4()
+               projDetails = {
+                       "name": name,
+                       "id": projId,
+                       "isVisible": True,
+                       "isMeta": False,
+               }
+               assert projId not in self._projects, "How did uuid %r repeat?" % projId
+               self._projects[projId] = projDetails
+
+       def set_project_name(self, projId, name):
+               projDetails = self._projects[projId]
+               projDetails["name"] = name
+
+       def set_project_visibility(self, projId, visibility):
+               projDetails = self._projects[projId]
+               projDetails["isVisible"] = visibility
+
        def get_projects(self):
                return (projectDetails for projectDetails in self._projects.itervalues())
 
index 84c4fe0..5997d13 100644 (file)
@@ -3,6 +3,15 @@ class NullManager(object):
        def __init__(self, username, password, token=None):
                pass
 
+       def add_project(self, name):
+               raise NotImplementedError("Not logged in to any ToDo system")
+
+       def set_project_name(self, projId, name):
+               raise NotImplementedError("Not logged in to any ToDo system")
+
+       def set_project_visibility(self, projId, visibility):
+               raise NotImplementedError("Not logged in to any ToDo system")
+
        def get_projects(self):
                return []
 
index 8b7549c..9d7cb5f 100644 (file)
@@ -39,6 +39,32 @@ class RtMilkManager(object):
                self._timeline = resp.timeline
                self._lists = []
 
+       def add_project(self, name):
+               rsp = self._rtm.lists.add(
+                       timeline=self._timeline,
+                       name=name,
+               )
+               assert rsp.stat == "ok", "Bad response: %r" % (rsp, )
+               self._lists = []
+
+       def set_project_name(self, projId, name):
+               rsp = self._rtm.lists.setName(
+                       timeline=self._timeline,
+                       list_id=projId,
+                       name=name,
+               )
+               assert rsp.stat == "ok", "Bad response: %r" % (rsp, )
+               self._lists = []
+
+       def set_project_visibility(self, projId, visibility):
+               action = self._rtm.lists.unarchive if visibility else self._rtm.lists.archive
+               rsp = action(
+                       timeline=self._timeline,
+                       list_id=projId,
+               )
+               assert rsp.stat == "ok", "Bad response: %r" % (rsp, )
+               self._lists = []
+
        def get_projects(self):
                if len(self._lists) == 0:
                        self._populate_projects()