def test_merge(self): tree = ElementTree.fromstring( '<omnifocus xmlns="http://www.omnigroup.com/namespace/OmniFocus/v1" app-id="com.omnigroup.OmniFocus.iPad" app-version="79.4.0.175422" os-name="iPhone OS" os-version="6.1" machine-model="iPad">' + '<task id="l5FczgWVl2S">' + '<task idref="gZW06uIszyr"/>' + '<added>2012-08-28T04:55:12.824Z</added>' + '<modified>2012-09-05T08:00:16.788Z</modified>' + '<name>Kill duplicates</name>' + '<rank>0</rank>' + '<order>parallel</order>' + '</task>' + '</omnifocus>') tree_upd = ElementTree.fromstring( '<omnifocus xmlns="http://www.omnigroup.com/namespace/OmniFocus/v1" app-id="com.omnigroup.OmniFocus.iPad" app-version="79.4.0.175422" os-name="iPhone OS" os-version="6.1" machine-model="iPad">' + '<task id="l5FczgWVl2S" op="update">' + '<task idref="gZW06uIszyr"/>' + '<added>2012-08-28T04:55:12.824Z</added>' + '<modified>2012-09-05T08:00:16.788Z</modified>' + '<name>Kill duplicates in bases</name>' + '<rank>0</rank>' + '<order>parallel</order>' + '</task>' + '</omnifocus>') task = Task() task.fromXmlNode(tree[0]) task.merge(tree_upd[0]) self.assertEquals(task.name, "Kill duplicates in bases")
def fromXml(self, tree): self._tree = tree root = tree self.tasks = dict() self.tasks_tree = dict() self.folders = dict() self.folders_tree = dict() self.contexts = dict() self.contexts_tree = dict() for e in root: tag = extract_tag(e.tag) if tag == 'task': task = Task() task.fromXmlNode(e) self.tasks[task.id] = task parent = task.parentRef or task.folderRef or "/" if not parent in self.tasks_tree: self.tasks_tree[parent] = [] self.tasks_tree[parent].append(task) elif tag == 'folder': folder = Folder() folder.fromXmlNode(e) self.folders[folder.id] = folder parent_folder = folder.parentRef or "/" if not parent_folder in self.folders_tree: self.folders_tree[parent_folder] = [] self.folders_tree[parent_folder].append(folder) elif tag == 'context': context = Context() context.fromXmlNode(e) self.contexts[context.id] = context parent_ctx = context.parentRef or "/" if not parent_ctx in self.contexts_tree: self.contexts_tree[parent_ctx] = [] self.contexts_tree[parent_ctx].append(context)