Ejemplo n.º 1
0
 def testGetSingle(self):
     doc = libxml2.parseDoc(testEntry)
     
     fragment = XMLFragment(doc)
     
     self.assertEqual(fragment.getSingle("/item/title").getFragment().content, "Test Post 1")
     self.assertEqual(fragment.getSingle("/item/category").getFragment().content, "XML")
     self.assertEqual(fragment.getSingle("/item/no-exist"), None)
Ejemplo n.º 2
0
    def _increment(self, txn, record, params):
        self.log.debug("increment called")

        targetPath = params.getValue("param[@name='target-path']")
        keyPath = params.getValue("param[@name='key-path']")

        # We get the key data that we should look for in the related documents.
        targetID = record.getValue(keyPath)
        try:
            self.log.debug("increment retrieving record " + targetID)
            target = XMLFragment(self.getRecord(txn, targetID))
            self.log.debug("increment record retrieved")

            result = target.getSingle(targetPath)
            # See whether we should update the count or add the element
            if result != None:
                count = int(result.getContent())
                result.setContent(str(count + 1))
            else:
                nodeName = targetPath.split("/")[-1]
                target.getRootElement().newChild(None, nodeName, "1")

            self.log.debug("increment saving modified record")
            self.updateRecord(txn, targetID, target.serialize())

        except NotFoundError:
            self.log.warn("increment called for non-existent target")
Ejemplo n.º 3
0
 def testGetValue(self):
     fragment = XMLFragment(testEntry)
     
     self.assertEqual(fragment.getValue("/item/title"), "Test Post 1")
     self.assertEqual(fragment.getValue("/item/category"), "XML")
     self.assertEqual(fragment.getValue("/item/category", "default"), "XML")
     self.assertEqual(fragment.getValue("/item/no-exist"), "")
     self.assertEqual(fragment.getValue("/item/no-exist", "default"), "default")
     
     # Test relative paths against nodes
     fragment2 = fragment.getSingle("/item")
     self.assertEqual(fragment2.getValue("title"), "Test Post 1")
     self.assertEqual(fragment2.getValue("category"), "XML")
     self.assertEqual(fragment2.getValue("no-exist", "default"), "default")
Ejemplo n.º 4
0
    def _decrement(self, txn, record, params):
        self.log.debug("decrement called")

        targetPath = params.getValue("param[@name='target-path']")
        keyPath = params.getValue("param[@name='key-path']")

        # We get the key data that we should look for in the related documents.
        targetID = record.getValue(keyPath)
        try:
            target = XMLFragment(self.getRecord(txn, targetID))

            result = target.getSingle(targetPath)
            if result != None:
                count = int(result.getContent()) - 1
                if count < 0:
                    count = 0
                result.setContent(str(count))

                self.updateRecord(txn, targetID, target.serialize())

        except NotFoundError:
            self.log.warn("decrement called for non-existent target")