Changeset 20:9e1c2535b74e in ralphm-patches for pubsub-create-configure.patch
- Timestamp:
- Dec 30, 2009, 9:10:15 PM (11 years ago)
- Branch:
- default
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pubsub-create-configure.patch
r19 r20 1 diff -r 9a749c388cdawokkel/data_form.py2 --- a/wokkel/data_form.py Tue Dec 29 14:55:132009 +01003 +++ b/wokkel/data_form.py Tue Dec 29 15:06:542009 +01001 diff -r 26ba5a2ff579 wokkel/data_form.py 2 --- a/wokkel/data_form.py Wed Dec 30 17:55:07 2009 +0100 3 +++ b/wokkel/data_form.py Wed Dec 30 20:46:36 2009 +0100 4 4 @@ -253,10 +253,10 @@ 5 5 field['var'] = self.var … … 16 16 field.addElement('value', content=unicode(value)) 17 17 18 @@ -564,3 +564,25 @@ 19 else: 20 # Unknown field, ignoring 21 pass 22 + 18 @@ -616,3 +616,24 @@ 19 20 for field in filtered: 21 self.removeField(field) 23 22 + 24 23 + … … 42 41 + 43 42 + return None 44 diff -r 9a749c388cdawokkel/pubsub.py45 --- a/wokkel/pubsub.py Tue Dec 29 14:55:132009 +010046 +++ b/wokkel/pubsub.py Tue Dec 29 15:06:542009 +010043 diff -r 26ba5a2ff579 wokkel/pubsub.py 44 --- a/wokkel/pubsub.py Wed Dec 30 17:55:07 2009 +0100 45 +++ b/wokkel/pubsub.py Wed Dec 30 20:46:36 2009 +0100 47 46 @@ -234,7 +234,7 @@ 48 47 'optionsSet': ['nodeOrEmpty', 'jid', 'options'], … … 101 100 + form = data_form.findForm(verbElement, NS_PUBSUB_NODE_CONFIG) 102 101 if form: 103 if form.formType == 'submit':104 self.options = form .getValues()105 @@ -3 90,6 +366,46@@102 if form.formType in ('submit', 'cancel'): 103 self.options = form 104 @@ -388,6 +364,33 @@ 106 105 raise BadRequest(text="Missing configuration form") 107 106 … … 116 115 + if form: 117 116 + if form.formType == 'submit': 118 + self.options = form .getValues()117 + self.options = form 119 118 + else: 120 119 + raise BadRequest(text="Unexpected form type %r" % 121 120 + form.formType) 122 121 + else: 123 + self.options = {} 122 + form = data_form.Form('submit', 123 + formNamespace=NS_PUBSUB_NODE_CONFIG) 124 + self.options = form 124 125 + 125 126 + … … 128 129 + Render optional node configuration form in create request. 129 130 + """ 130 + def makeFields(values):131 + fields = []132 + for name, value in values.iteritems():133 + option = {'var': name}134 + if isinstance(value, list):135 + option['values'] = value136 + else:137 + option['value'] = value138 + fields.append(data_form.Field.fromDict(option))139 + return fields140 +141 131 + if self.options is not None: 142 + fields = makeFields(self.options)143 + form = data_form.Form('submit',144 + formNamespace=NS_PUBSUB_NODE_CONFIG,145 + fields=fields)146 132 + configure = verbElement.parent.addElement('configure') 147 + configure.addChild( form.toElement())133 + configure.addChild(self.options.toElement()) 148 134 + 149 135 150 136 def _parse_itemIdentifiers(self, verbElement): 151 137 """ 152 @@ -43 7,7 +453,7 @@138 @@ -435,7 +438,7 @@ 153 139 154 140 … … 157 143 + form = data_form.findForm(verbElement, NS_PUBSUB_SUBSCRIBE_OPTIONS) 158 144 if form: 159 if form.formType == 'submit': 160 self.options = form.getValues() 161 @@ -468,6 +484,7 @@ 162 self._render_options(optionsElement) 163 164 165 + 166 def parseElement(self, element): 167 """ 168 Parse the publish-subscribe verb and parameters out of a request. 169 @@ -663,7 +680,8 @@ 145 if form.formType not in ('submit', 'cancel'): 146 raise BadRequest(text="Unexpected form type %r" % form.formType) 147 @@ -451,8 +454,8 @@ 148 def _parse_optionsWithSubscribe(self, verbElement): 149 for element in verbElement.parent.elements(): 150 if element.name == 'options' and element.uri == NS_PUBSUB: 151 - form = PubSubRequest._findForm(element, 152 - NS_PUBSUB_SUBSCRIBE_OPTIONS) 153 + form = data_form.findForm(element, 154 + NS_PUBSUB_SUBSCRIBE_OPTIONS) 155 if not form: 156 continue 157 158 @@ -662,7 +665,8 @@ 170 159 pass 171 160 … … 177 166 Create a publish subscribe node. 178 167 179 @@ -67 1,11 +689,14@@168 @@ -670,12 +674,20 @@ 180 169 @type service: L{JID} 181 170 @param nodeIdentifier: Optional suggestion for the id of the node. … … 188 177 request.nodeIdentifier = nodeIdentifier 189 178 request.sender = sender 190 + request.options = options 191 179 180 + if options: 181 + form = data_form.Form(formType='result', 182 + formNamespace=NS_PUBSUB_NODE_CONFIG) 183 + form.makeFields(options) 184 + request.options = form 185 + 192 186 def cb(iq): 193 187 try: 194 @@ -952,8 +973,6 @@ 188 new_node = iq.pubsub.create["node"] 189 @@ -956,8 +968,6 @@ 195 190 d = self.getNodes(requestor, target) 196 191 else: … … 201 196 d.addCallback(lambda nodes: [disco.DiscoItem(target, node) 202 197 for node in nodes]) 203 @@ -10 81,6 +1100,13@@204 return processedValues198 @@ -1067,6 +1077,12 @@ 199 form.typeCheck(fieldDefs, filterUnknown=True) 205 200 206 201 207 202 + def _preProcess_create(self, resource, request): 208 203 + if request.options: 209 + request.options = self._checkConfiguration(resource, 210 + request.options) 204 + self._checkConfiguration(resource, request.options) 211 205 + return request 212 206 + … … 215 209 if request.nodeType not in ('leaf', 'collection'): 216 210 raise error.StanzaError('not-acceptable') 217 diff -r 9a749c388cdawokkel/test/test_pubsub.py218 --- a/wokkel/test/test_pubsub.py Tue Dec 29 14:55:132009 +0100219 +++ b/wokkel/test/test_pubsub.py Tue Dec 29 15:06:542009 +0100211 diff -r 26ba5a2ff579 wokkel/test/test_pubsub.py 212 --- a/wokkel/test/test_pubsub.py Wed Dec 30 17:55:07 2009 +0100 213 +++ b/wokkel/test/test_pubsub.py Wed Dec 30 20:46:36 2009 +0100 220 214 @@ -19,7 +19,7 @@ 221 215 from wokkel.test.helpers import TestableRequestHandlerMixin, XmlStreamStub … … 268 262 """ 269 263 Test sending delete request. 270 @@ -9 66,6 +1000,7 @@264 @@ -998,6 +1032,7 @@ 271 265 self.assertEqual(JID('user@example.org'), request.sender) 272 266 self.assertEqual(JID('pubsub.example.org'), request.recipient) … … 276 270 277 271 def test_fromElementCreateInstant(self): 278 @@ - 986,6 +1021,77@@272 @@ -1018,6 +1053,78 @@ 279 273 self.assertIdentical(None, request.nodeIdentifier) 280 274 … … 296 290 + 297 291 + request = pubsub.PubSubRequest.fromElement(parseXml(xml)) 298 + self.assertEqual({}, request.options )292 + self.assertEqual({}, request.options.getValues()) 299 293 + 300 294 + … … 318 312 + 319 313 + request = pubsub.PubSubRequest.fromElement(parseXml(xml)) 320 + self.assertEqual({}, request.options )314 + self.assertEqual({}, request.options.getValues()) 321 315 + 322 316 + … … 345 339 + 346 340 + request = pubsub.PubSubRequest.fromElement(parseXml(xml)) 347 + self.assertIn('pubsub#access_model', request.options) 348 + self.assertEqual(u'open', request.options['pubsub#access_model']) 349 + self.assertIn('pubsub#persist_items', request.options) 350 + self.assertEqual(u'0', request.options['pubsub#persist_items']) 341 + values = request.options.getValues() 342 + self.assertIn('pubsub#access_model', values) 343 + self.assertEqual(u'open', values['pubsub#access_model']) 344 + self.assertIn('pubsub#persist_items', values) 345 + self.assertEqual(u'0', values['pubsub#persist_items']) 351 346 + 352 347 + … … 354 349 """ 355 350 Test parsing a request for the default node configuration. 356 @@ -1 771,6 +1877,51@@351 @@ -1804,6 +1911,52 @@ 357 352 return d 358 353 … … 394 389 + def create(request): 395 390 + self.assertEqual({'pubsub#deliver_payloads': False, 396 + 'pubsub#persist_items': True}, request.options) 391 + 'pubsub#persist_items': True}, 392 + request.options.getValues()) 397 393 + return defer.succeed(None) 398 394 + … … 406 402 """ 407 403 A default request should result in 408 @@ -18 04,7 +1955,7 @@404 @@ -1837,7 +1990,7 @@ 409 405 self.assertEqual(NS_PUBSUB_OWNER, element.uri) 410 406 self.assertEqual(NS_PUBSUB_OWNER, element.default.uri) … … 415 411 self.resource.getConfigurationOptions = getConfigurationOptions 416 412 self.resource.default = default 417 @@ -19 33,7 +2084,7 @@413 @@ -1966,7 +2119,7 @@ 418 414 self.assertEqual(NS_PUBSUB_OWNER, element.uri) 419 415 self.assertEqual(NS_PUBSUB_OWNER, element.configure.uri)
Note: See TracChangeset
for help on using the changeset viewer.