Changeset 47:f6d222b68f1c in ralphm-patches for pubsub-item.patch
- Timestamp:
- Mar 7, 2011, 7:39:36 PM (11 years ago)
- Branch:
- default
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pubsub-item.patch
r45 r47 1 diff -r e58b9f2cf8a3 wokkel/pubsub.py 2 --- a/wokkel/pubsub.py Fri Jan 01 01:34:14 2010 +0100 3 +++ b/wokkel/pubsub.py Fri Jan 01 11:12:36 2010 +0100 4 @@ -119,33 +119,47 @@ 1 diff -r d16bd03316ad wokkel/generic.py 2 --- a/wokkel/generic.py Mon Feb 28 09:31:41 2011 +0100 3 +++ b/wokkel/generic.py Mon Feb 28 09:43:34 2011 +0100 4 @@ -38,13 +38,12 @@ 5 @return: The DOM structure, or C{None} on empty or incomplete input. 6 @rtype: L{domish.Element} 7 """ 8 - roots = [] 9 results = [] 10 elementStream = domish.elementStream() 11 - elementStream.DocumentStartEvent = roots.append 12 - elementStream.ElementEvent = lambda elem: roots[0].addChild(elem) 13 - elementStream.DocumentEndEvent = lambda: results.append(roots[0]) 14 - elementStream.parse(string) 15 + elementStream.DocumentStartEvent = lambda _: None 16 + elementStream.ElementEvent = lambda elem: results.append(elem) 17 + elementStream.DocumentEndEvent = lambda: None 18 + elementStream.parse('<dummy>%s</dummy>' % string) 19 return results and results[0] or None 20 21 22 diff -r d16bd03316ad wokkel/pubsub.py 23 --- a/wokkel/pubsub.py Mon Feb 28 09:31:41 2011 +0100 24 +++ b/wokkel/pubsub.py Mon Feb 28 09:43:34 2011 +0100 25 @@ -157,33 +157,56 @@ 5 26 6 27 … … 15 36 - Item payload can be added using C{addChild} or C{addRawXml}, or using the 16 37 - C{payload} keyword argument to C{__init__}. 17 + @ivar itemIdentifier: optional item identifier38 + @ivar itemIdentifier: Optional item identifier. 18 39 + @type itemIdentifier: L{unicode} 19 + @ivar payload: optional item payload. Either as a domish element, or as40 + @ivar payload: Optional item payload. Either as a L{domish.Element}, or as 20 41 + serialized XML. 21 + @type payload: object providing L{domish.IElement} or L{unicode}. 42 + @type payload: Object providing L{domish.IElement} or L{unicode}. 43 + @ivar timestamp: Optional timestamp when the item was published as 8601 44 + string. Timestamps that include a time component must have a time zone 45 + indicated. 46 + @type timestamp: C{unicode} 47 + @ivar publisher: Optional entity that published this item. 48 + @type publisher: L{JID} 22 49 """ 23 50 24 51 - def __init__(self, id=None, payload=None): 25 + def __init__(self, itemIdentifier=None, payload=None): 52 + def __init__(self, itemIdentifier=None, payload=None, 53 + timestamp=None, publisher=None): 26 54 + self.itemIdentifier = itemIdentifier 27 55 + self.payload = payload 56 + self.timestamp = timestamp 57 + self.publisher = publisher 28 58 + 29 59 + … … 59 89 + if self.payload is not None: 60 90 + if isinstance(self.payload, basestring): 61 + self.addRawXml(self.payload)91 + element.addRawXml(self.payload) 62 92 else: 63 93 - self.addChild(payload) 64 + self.addChild(self.payload)94 + element.addChild(self.payload) 65 95 + 66 96 + return element … … 68 98 69 99 70 @@ -3 09,7 +323,13 @@100 @@ -351,7 +374,13 @@ 71 101 self.items = [] 72 102 for element in verbElement.elements(): … … 83 113 84 114 def _render_items(self, verbElement): 85 @@ -3 18,7 +338,7 @@115 @@ -360,8 +389,7 @@ 86 116 """ 87 117 if self.items: 88 118 for item in self.items: 119 - item.uri = NS_PUBSUB 89 120 - verbElement.addChild(item) 90 121 + verbElement.addChild(item.toElement()) … … 92 123 93 124 def _parse_jid(self, verbElement): 94 @@ -1 124,7 +1144,7 @@125 @@ -1307,8 +1335,7 @@ 95 126 items["node"] = request.nodeIdentifier 96 127 97 128 for item in result: 129 - item.uri = NS_PUBSUB 98 130 - items.addChild(item) 99 131 + items.addChild(item.toElement()) … … 101 133 return response 102 134 103 diff -r e58b9f2cf8a3 wokkel/test/test_pubsub.py 104 --- a/wokkel/test/test_pubsub.py Fri Jan 01 01:34:14 2010 +0100 105 +++ b/wokkel/test/test_pubsub.py Fri Jan 01 11:12:36 2010 +0100 106 @@ -365,7 +365,6 @@ 135 @@ -1359,8 +1386,7 @@ 136 nodeIdentifier, subscriber, 137 subscriptions) 138 for item in items: 139 - item.uri = NS_PUBSUB_EVENT 140 - message.event.items.addChild(item) 141 + message.event.items.addChild(item.toElement(NS_PUBSUB_EVENT)) 142 self.send(message) 143 144 145 diff -r d16bd03316ad wokkel/test/test_pubsub.py 146 --- a/wokkel/test/test_pubsub.py Mon Feb 28 09:31:41 2011 +0100 147 +++ b/wokkel/test/test_pubsub.py Mon Feb 28 09:43:34 2011 +0100 148 @@ -115,6 +115,30 @@ 149 150 151 152 +class ItemTest(unittest.TestCase): 153 + 154 + def test_toElement(self): 155 + item = pubsub.Item(itemIdentifier='test') 156 + element = item.toElement() 157 + self.assertEquals('test', element.getAttribute('id')) 158 + 159 + 160 + def test_toElementPayload(self): 161 + payload = domish.Element(('testns', 'test')) 162 + item = pubsub.Item(itemIdentifier='test', payload=payload) 163 + element = item.toElement() 164 + self.assertNotIdentical(None, element.test) 165 + self.assertEquals('testns', element.test.uri) 166 + 167 + 168 + def test_toElementPayloadRawXML(self): 169 + payload = u"<test xmlns='testns'/>" 170 + item = pubsub.Item(itemIdentifier='test', payload=payload) 171 + element = item.toElement() 172 + self.assertEquals(1, len(element.children)) 173 + self.assertEquals(payload, element.children[0]) 174 + 175 + 176 class PubSubClientTest(unittest.TestCase): 177 timeout = 2 178 179 @@ -465,7 +489,6 @@ 107 180 items = list(domish.generateElementsQNamed(child.children, 108 181 'item', NS_PUBSUB)) … … 112 185 response = toResponse(iq, 'result') 113 186 self.stub.send(response) 114 @@ - 699,8 +698,8 @@187 @@ -1048,8 +1071,8 @@ 115 188 116 189 request = pubsub.PubSubRequest.fromElement(parseXml(xml)) … … 122 195 123 196 197 def test_fromElementPublishItemsOptions(self): 198 @@ -1075,8 +1098,9 @@ 199 200 request = pubsub.PubSubRequest.fromElement(parseXml(xml)) 201 self.assertEqual(2, len(request.items)) 202 - self.assertEqual(u'item1', request.items[0]["id"]) 203 - self.assertEqual(u'item2', request.items[1]["id"]) 204 + self.assertEqual(u'item1', request.items[0].itemIdentifier) 205 + self.assertEqual(u'item2', request.items[1].itemIdentifier) 206 + 207 124 208 def test_fromElementPublishNoNode(self): 209 """
Note: See TracChangeset
for help on using the changeset viewer.