Changeset 26:59ace4d1df68 in ralphm-patches
- Timestamp:
- Jan 1, 2010, 4:18:52 PM (13 years ago)
- Branch:
- default
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
findform.patch
r21 r26 1 diff -r 031a0ad83156 -r fda6b92d81a1 wokkel/data_form.py 2 --- a/wokkel/data_form.py Wed Dec 30 21:37:33 2009 +0100 3 +++ b/wokkel/data_form.py Wed Dec 30 21:39:55 2009 +0100 4 @@ -616,3 +616,24 @@ 1 Move findForm to wokkel.data_form 2 3 diff -r ff70bda5117e wokkel/data_form.py 4 --- a/wokkel/data_form.py Fri Jan 01 16:03:51 2010 +0100 5 +++ b/wokkel/data_form.py Fri Jan 01 16:16:09 2010 +0100 6 @@ -657,3 +657,24 @@ 5 7 6 8 for field in filtered: … … 27 29 + 28 30 + return None 29 diff -r 031a0ad83156 -r fda6b92d81a1wokkel/pubsub.py30 --- a/wokkel/pubsub.py Wed Dec 30 21:37:33 2009+010031 +++ b/wokkel/pubsub.py Wed Dec 30 21:39:55 2009+010031 diff -r ff70bda5117e wokkel/pubsub.py 32 --- a/wokkel/pubsub.py Fri Jan 01 16:03:51 2010 +0100 33 +++ b/wokkel/pubsub.py Fri Jan 01 16:16:09 2010 +0100 32 34 @@ -252,30 +252,6 @@ 33 35 self.verb = verb … … 77 79 + form = data_form.findForm(verbElement, NS_PUBSUB_NODE_CONFIG) 78 80 if form: 79 if form.formType in ('submit', 'cancel'):80 self.options = form 81 @@ -43 5,7 +411,7 @@81 if form.formType == 'submit': 82 self.options = form.getValues() 83 @@ -437,7 +413,7 @@ 82 84 83 85 … … 86 88 + form = data_form.findForm(verbElement, NS_PUBSUB_SUBSCRIBE_OPTIONS) 87 89 if form: 88 if form.formType not in ('submit', 'cancel'):89 raise BadRequest(text="Unexpected form type %r" % form.formType)90 if form.formType == 'submit': 91 self.options = form.getValues() -
form-missing-tests.patch
r24 r26 1 Add missing tests for Data Forms and correct some minor issues. 2 1 3 diff -r 3ef9bc7a0d70 wokkel/data_form.py 2 4 --- a/wokkel/data_form.py Wed Dec 30 16:53:05 2009 +0100 3 +++ b/wokkel/data_form.py Fri Jan 01 01:21:56 2010 +0100 5 +++ b/wokkel/data_form.py Fri Jan 01 15:54:26 2010 +0100 6 @@ -1,6 +1,6 @@ 7 # -*- test-case-name: wokkel.test.test_data_form -*- 8 # 9 -# Copyright (c) 2003-2009 Ralph Meijer 10 +# Copyright (c) 2003-2010 Ralph Meijer 11 # See LICENSE for details. 12 13 """ 4 14 @@ -251,10 +251,10 @@ 5 15 field['var'] = self.var … … 112 122 diff -r 3ef9bc7a0d70 wokkel/test/test_data_form.py 113 123 --- a/wokkel/test/test_data_form.py Wed Dec 30 16:53:05 2009 +0100 114 +++ b/wokkel/test/test_data_form.py Fri Jan 01 01:21:56 2010 +0100 115 @@ -19,14 +19,67 @@ 124 +++ b/wokkel/test/test_data_form.py Fri Jan 01 15:54:26 2010 +0100 125 @@ -1,4 +1,4 @@ 126 -# Copyright (c) 2003-2009 Ralph Meijer 127 +# Copyright (c) 2003-2010 Ralph Meijer 128 # See LICENSE for details. 129 130 """ 131 @@ -19,14 +19,73 @@ 116 132 """ 117 133 118 134 def test_toElement(self): 135 + """ 136 + An option is an option element with a value child with the option value. 137 + """ 119 138 + option = data_form.Option('value') 120 139 + element = option.toElement() … … 128 147 + 129 148 + def test_toElementLabel(self): 149 + """ 150 + A label is rendered as an attribute on the option element. 151 + """ 130 152 option = data_form.Option('value', 'label') 131 153 element = option.toElement() … … 187 209 188 210 189 @@ -44,6 + 97,21 @@211 @@ -44,6 +103,21 @@ 190 212 self.assertEqual('test', field.var) 191 213 … … 209 231 """ 210 232 Test rendering to a DOM. 211 @@ -130,12 + 198,44 @@233 @@ -130,12 +204,44 @@ 212 234 213 235 … … 254 276 """ 255 277 A field not of type fixed must have a var. 256 @@ -250,6 +35 0,7 @@278 @@ -250,6 +356,7 @@ 257 279 field = data_form.Field.fromElement(element) 258 280 self.assertEquals(u'user@example.org', field.value) … … 262 284 """ 263 285 Parsed jid-single field values should be of type C{unicode}. 264 @@ -275,6 +3 76,85 @@286 @@ -275,6 +382,85 @@ 265 287 self.assertEquals(u'false', field.value) 266 288 … … 348 370 class FormTest(unittest.TestCase): 349 371 """ 350 @@ -289, 11 +469,13@@372 @@ -289,6 +475,7 @@ 351 373 form = data_form.Form('result') 352 374 self.assertEqual('result', form.formType) … … 356 378 """ 357 379 The toElement method returns a form's DOM representation. 358 """ 359 form = data_form.Form('result') 360 + 361 element = form.toElement() 362 363 self.assertTrue(domish.IElement.providedBy(element)) 364 @@ -303,6 +485,105 @@ 380 @@ -303,6 +490,105 @@ 365 381 self.assertEquals([], element.children) 366 382 … … 468 484 """ 469 485 C{fromElement} creates a L{data_form.Form} from a DOM representation. 470 @@ -348,6 +6 29,7 @@486 @@ -348,6 +634,7 @@ 471 487 472 488 self.assertEquals(['instruction'], form.instructions) … … 476 492 element = domish.Element((NS_X_DATA, 'x')) 477 493 element.addElement('instructions', content='instruction 1') 478 @@ -377,3 +6 59,173 @@494 @@ -377,3 +664,173 @@ 479 495 self.assertEquals('field1', form.fieldList[0].var) 480 496 self.assertIn('field2', form.fields) -
pubsub-forms.patch
r25 r26 1 diff -r bf2fb205fe5a wokkel/data_form.py 2 --- a/wokkel/data_form.py Fri Jan 01 01:28:11 2010 +0100 3 +++ b/wokkel/data_form.py Fri Jan 01 01:29:23 2010 +0100 1 Move makeFields to wokkel.data_form, add form type checking. 2 3 diff -r ba58db23e8b9 wokkel/data_form.py 4 --- a/wokkel/data_form.py Fri Jan 01 15:54:26 2010 +0100 5 +++ b/wokkel/data_form.py Fri Jan 01 16:16:57 2010 +0100 4 6 @@ -76,6 +76,7 @@ 5 7 option['label'] = self.label … … 27 29 """ 28 30 Return the DOM representation of this Field. 29 @@ -322,16 +324, 16@@31 @@ -322,16 +324,24 @@ 30 32 31 33 … … 34 36 - kwargs = dictionary.copy() 35 37 + def fromDict(fieldDict): 36 + kwargs = fieldDict.copy() 38 + """ 39 + Create a field from a dictionary. 37 40 38 41 - if 'type' in dictionary: 39 42 - kwargs['fieldType'] = dictionary['type'] 43 + This is a short hand for passing arguments directly on Field object 44 + creation. The field type is represented by the C{'type'} key. For 45 + C{'options'} the value is not a list of L{Option}s, but a dictionary 46 + keyed by value, with an optional label as value. 47 + """ 48 + kwargs = fieldDict.copy() 49 + 40 50 + if 'type' in fieldDict: 41 51 + kwargs['fieldType'] = fieldDict['type'] … … 50 60 kwargs['options'] = options 51 61 52 @@ -415,7 +4 17,7 @@62 @@ -415,7 +425,7 @@ 53 63 """ 54 64 Add a field to this form. … … 59 69 adding new fields. Multiple fields with the same name are disallowed. 60 70 """ 61 @@ -428,7 +43 0,71@@71 @@ -428,7 +438,85 @@ 62 72 self.fieldList.append(field) 63 73 … … 78 88 + 79 89 + This creates fields from a mapping of name to value(s) and adds them to 80 + this form. If C{fieldDefs} is not C{None}, this is used to fill in 90 + this form. It is typically used for generating outgoing forms. 91 + 92 + If C{fieldDefs} is not C{None}, this is used to fill in 81 93 + additional properties of fields, like the field types, labels and 82 + possible options. If C{filterUnknown} is C{True} and C{fieldDefs} is 83 + not C{None}, fields will only be created from C{values} with a 84 + corresponding entry in C{fieldDefs}. 94 + possible options. 95 + 96 + If C{filterUnknown} is C{True} and C{fieldDefs} is not C{None}, fields 97 + will only be created from C{values} with a corresponding entry in 98 + C{fieldDefs}. 99 + 100 + If the field type is unknown, the field type is derived from the field 101 + value. For single values, if the value is a C{bool}, C{'boolean'} s 102 + used, for L{JID} C{'jid-single'}, and C{'text-single'} otherwise. For 103 + multiple values, if the first item is a L{JID} C{'jid-multi'} is used. 104 + Otherwise C{'list-multi'}. 105 + 106 + Note that the values are used as given, no type coersion or checking 107 + is performed. Use L{typeCheck} to check types and coerce values of 108 + fields added to a form. 85 109 + 86 110 + @param values: Values to create fields from. … … 110 134 + fieldDict['type'] = 'jid-multi' 111 135 + else: 112 + fieldDict['type'] = ' text-multi'136 + fieldDict['type'] = 'list-multi' 113 137 + else: 114 138 + fieldDict['value'] = value … … 131 155 form['type'] = self.formType 132 156 133 @@ -516,3 + 582,48@@157 @@ -516,3 +604,56 @@ 134 158 values[name] = value 135 159 … … 142 166 + 143 167 + This method walks all named fields to check their values against their 144 + type. The field definition in C{fieldDefs} is used to check the field 145 + type. Unknown fields are ignored. 146 + 147 + If the field type is C{None} (when not set by the receiving entity), 148 + C{'text-single'} is assumed, as this is the default value. 168 + type, and is typically used for forms received from other entities.The 169 + field definition in C{fieldDefs} is used to check the field type. 170 + 171 + If C{filterUnknown} is C{True}, fields that are not present in 172 + C{fieldDefs} are removed from the form. 173 + 174 + If the field type is C{None} (when not set by the sending entity), 175 + the type from the field definitition is used, or C{'text-single'} if 176 + that is not set. 149 177 + 150 178 + @param fieldDefs: Field definitions as a dictionary. See … … 161 189 + for name, field in self.fields.iteritems(): 162 190 + if name in fieldDefs: 191 + fieldDef = fieldDefs[name] 192 + if 'type' not in fieldDef: 193 + fieldDef['type'] = 'text-single' 194 + 163 195 + if field.fieldType is None: 164 + field.fieldType = fieldDef s[name]['type']165 + elif field.fieldType != fieldDef s[name]['type']:196 + field.fieldType = fieldDef['type'] 197 + elif field.fieldType != fieldDef['type']: 166 198 + raise TypeError("Field type for %r is %r, expected %r" % 167 199 + (name, 168 200 + field.fieldType, 169 + fieldDef s[name]['type']))201 + fieldDef['type'])) 170 202 + else: 171 203 + # Field type is correct … … 180 212 + for field in filtered: 181 213 + self.removeField(field) 182 diff -r bf2fb205fe5a wokkel/pubsub.py 183 --- a/wokkel/pubsub.py Fri Jan 01 01:28:11 2010 +0100 184 +++ b/wokkel/pubsub.py Fri Jan 01 01:29:23 2010 +0100 214 diff -r ba58db23e8b9 wokkel/pubsub.py 215 --- a/wokkel/pubsub.py Fri Jan 01 15:54:26 2010 +0100 216 +++ b/wokkel/pubsub.py Fri Jan 01 16:16:57 2010 +0100 217 @@ -1,6 +1,6 @@ 218 # -*- test-case-name: wokkel.test.test_pubsub -*- 219 # 220 -# Copyright (c) 2003-2009 Ralph Meijer 221 +# Copyright (c) 2003-2010 Ralph Meijer 222 # See LICENSE for details. 223 224 """ 185 225 @@ -1012,29 +1012,11 @@ 186 226 return None … … 216 256 217 257 218 diff -r b f2fb205fe5awokkel/test/test_data_form.py219 --- a/wokkel/test/test_data_form.py Fri Jan 01 01:28:112010 +0100220 +++ b/wokkel/test/test_data_form.py Fri Jan 01 01:29:232010 +0100221 @@ -78 2,6 +782,45@@258 diff -r ba58db23e8b9 wokkel/test/test_data_form.py 259 --- a/wokkel/test/test_data_form.py Fri Jan 01 15:54:26 2010 +0100 260 +++ b/wokkel/test/test_data_form.py Fri Jan 01 16:16:57 2010 +0100 261 @@ -787,6 +787,128 @@ 222 262 self.assertRaises(data_form.Error, form.addField, field2) 223 263 … … 245 285 + 246 286 + 247 + def test_makeFieldsJID(self): 287 + def test_makeField(self): 288 + """ 289 + Fields can be created from a dict of values and a dict of field defs. 290 + """ 291 + fieldDefs = { 292 + "pubsub#persist_items": 293 + {"type": "boolean", 294 + "label": "Persist items to storage"}, 295 + "pubsub#deliver_payloads": 296 + {"type": "boolean", 297 + "label": "Deliver payloads with event notifications"}, 298 + "pubsub#creator": 299 + {"type": "jid-single", 300 + "label": "The JID of the node creator"}, 301 + "pubsub#description": 302 + {"type": "text-single", 303 + "label": "A description of the node"}, 304 + "pubsub#owner": 305 + {"type": "jid-single", 306 + "label": "Owner of the node"}, 307 + } 308 + values = {'pubsub#deliver_payloads': '0', 309 + 'pubsub#persist_items': True, 310 + 'pubsub#description': 'a great node', 311 + 'pubsub#owner': jid.JID('user@example.org'), 312 + 'x-myfield': ['a', 'b']} 313 + 314 + form = data_form.Form('submit') 315 + form.makeFields(values, fieldDefs) 316 + 317 + # Check that the expected fields have been created 318 + self.assertIn('pubsub#deliver_payloads', form.fields) 319 + self.assertIn('pubsub#persist_items', form.fields) 320 + self.assertIn('pubsub#description', form.fields) 321 + self.assertIn('pubsub#owner', form.fields) 322 + 323 + # This field is not created because there is no value for it. 324 + self.assertNotIn('pubsub#creator', form.fields) 325 + 326 + # This field is not created because it does not appear in fieldDefs 327 + self.assertNotIn('x-myfield', form.fields) 328 + 329 + # Check properties the created fields 330 + self.assertEqual('boolean', 331 + form.fields['pubsub#deliver_payloads'].fieldType) 332 + self.assertEqual('0', 333 + form.fields['pubsub#deliver_payloads'].value) 334 + self.assertEqual('Deliver payloads with event notifications', 335 + form.fields['pubsub#deliver_payloads'].label) 336 + self.assertEqual(True, 337 + form.fields['pubsub#persist_items'].value) 338 + 339 + 340 + 341 + 342 + def test_makeFieldsUnknownTypeJID(self): 343 + """ 344 + Without type, a single JID value sets field type jid-single. 345 + """ 248 346 + values = {'pubsub#creator': jid.JID('user@example.org')} 249 347 + form = data_form.Form('result') … … 253 351 + 254 352 + 255 + def test_makeFieldsJIDMulti(self): 353 + def test_makeFieldsUnknownTypeJIDMulti(self): 354 + """ 355 + Without type, multiple JID values sets field type jid-multi. 356 + """ 256 357 + values = {'pubsub#contact': [jid.JID('user@example.org'), 257 358 + jid.JID('other@example.org')]} … … 262 363 + 263 364 + 365 + def test_makeFieldsUnknownTypeBoolean(self): 366 + """ 367 + Without type, a boolean value sets field type boolean. 368 + """ 369 + values = {'pubsub#persist_items': True} 370 + form = data_form.Form('result') 371 + form.makeFields(values) 372 + field = form.fields['pubsub#persist_items'] 373 + self.assertEqual('boolean', field.fieldType) 374 + 375 + 376 + def test_makeFieldsUnknownTypeListMulti(self): 377 + """ 378 + Without type, multiple values sets field type list-multi. 379 + """ 380 + values = {'pubsub#show-values': ['chat', 'online', 'away']} 381 + form = data_form.Form('result') 382 + form.makeFields(values) 383 + field = form.fields['pubsub#show-values'] 384 + self.assertEqual('list-multi', field.fieldType) 385 + 386 + 264 387 def test_getValues(self): 265 388 """ 266 389 Each named field is represented in the values, keyed by name. 390 @@ -834,3 +956,111 @@ 391 form = data_form.Form('submit', fields=fields) 392 values = form.getValues() 393 self.assertEqual({'features': 'news'}, values) 394 + 395 + 396 + def test_typeCheckKnownFieldChecked(self): 397 + """ 398 + Known fields are type checked. 399 + """ 400 + checked = [] 401 + fieldDefs = {"pubsub#description": 402 + {"type": "text-single", 403 + "label": "A description of the node"}} 404 + form = data_form.Form('submit') 405 + form.addField(data_form.Field(var='pubsub#description', 406 + value='a node')) 407 + field = form.fields['pubsub#description'] 408 + field.typeCheck = lambda : checked.append(None) 409 + form.typeCheck(fieldDefs) 410 + 411 + self.assertEqual([None], checked) 412 + 413 + 414 + def test_typeCheckKnownFieldNoType(self): 415 + """ 416 + Known fields without a type get the type of the field definition. 417 + """ 418 + checked = [] 419 + fieldDefs = {"pubsub#description": 420 + {"type": "text-single", 421 + "label": "A description of the node"}} 422 + form = data_form.Form('submit') 423 + form.addField(data_form.Field(None, var='pubsub#description', 424 + value='a node')) 425 + field = form.fields['pubsub#description'] 426 + field.typeCheck = lambda : checked.append(None) 427 + form.typeCheck(fieldDefs) 428 + 429 + self.assertEqual('text-single', field.fieldType) 430 + self.assertEqual([None], checked) 431 + 432 + 433 + def test_typeCheckWrongFieldType(self): 434 + """ 435 + A field should have the same type as the field definition. 436 + """ 437 + checked = [] 438 + fieldDefs = {"pubsub#description": 439 + {"type": "text-single", 440 + "label": "A description of the node"}} 441 + form = data_form.Form('submit') 442 + form.addField(data_form.Field('list-single', var='pubsub#description', 443 + value='a node')) 444 + field = form.fields['pubsub#description'] 445 + field.typeCheck = lambda : checked.append(None) 446 + 447 + self.assertRaises(TypeError, form.typeCheck, fieldDefs) 448 + self.assertEqual([], checked) 449 + 450 + 451 + def test_typeCheckDefaultTextSingle(self): 452 + """ 453 + If a field definition has no type, use text-single. 454 + """ 455 + checked = [] 456 + fieldDefs = {"pubsub#description": 457 + {"label": "A description of the node"}} 458 + form = data_form.Form('submit') 459 + form.addField(data_form.Field('text-single', var='pubsub#description', 460 + value='a node')) 461 + field = form.fields['pubsub#description'] 462 + field.typeCheck = lambda : checked.append(None) 463 + form.typeCheck(fieldDefs) 464 + 465 + self.assertEqual([None], checked) 466 + 467 + 468 + def test_typeCheckUnknown(self): 469 + """ 470 + Unkown fields are not checked, but not removed if filterUnknown False. 471 + """ 472 + checked = [] 473 + fieldDefs = {} 474 + form = data_form.Form('submit') 475 + form.addField(data_form.Field('list-single', var='pubsub#description', 476 + value='a node')) 477 + field = form.fields['pubsub#description'] 478 + field.typeCheck = lambda : checked.append(None) 479 + form.typeCheck(fieldDefs, filterUnknown=False) 480 + 481 + self.assertIn('pubsub#description', form.fields) 482 + self.assertEqual([], checked) 483 + 484 + 485 + def test_typeCheckUnknownRemoved(self): 486 + """ 487 + Unkown fields are not checked, and removed if filterUnknown True. 488 + """ 489 + checked = [] 490 + fieldDefs = {} 491 + form = data_form.Form('submit') 492 + form.addField(data_form.Field('list-single', var='pubsub#description', 493 + value='a node')) 494 + field = form.fields['pubsub#description'] 495 + field.typeCheck = lambda : checked.append(None) 496 + form.typeCheck(fieldDefs, filterUnknown=True) 497 + 498 + self.assertNotIn('pubsub#description', form.fields) 499 + self.assertEqual([], checked) 500 + 501 + -
pubsub-item.patch
r18 r26 1 diff -r 2919e60d3588 -r 90bd422b8ac6wokkel/pubsub.py2 --- a/wokkel/pubsub.py Mon Dec 28 12:13:34 2009+01003 +++ b/wokkel/pubsub.py Mon Dec 28 21:19:34 2009+01001 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 4 @@ -119,33 +119,47 @@ 5 5 … … 41 41 + L{Item} is usable in all contexts involving items. 42 42 + 43 + @param namespace: The namespace of the item. Usually L{ 'NS_PUBSUB'} or44 + L{ 'NS_PUBSUB_EVENT'}.45 + @type: C{unicode} .46 + @rtype: L{domish.Element} .43 + @param namespace: The namespace of the item. Usually L{NS_PUBSUB} or 44 + L{NS_PUBSUB_EVENT}. 45 + @type: C{unicode} 46 + @rtype: L{domish.Element} 47 47 """ 48 48 + element = domish.Element((namespace, 'item')) … … 68 68 69 69 70 @@ -3 33,7 +347,13 @@70 @@ -309,7 +323,13 @@ 71 71 self.items = [] 72 72 for element in verbElement.elements(): … … 83 83 84 84 def _render_items(self, verbElement): 85 @@ -3 42,7 +362,7 @@85 @@ -318,7 +338,7 @@ 86 86 """ 87 87 if self.items: … … 92 92 93 93 def _parse_jid(self, verbElement): 94 @@ -11 05,7 +1125,7 @@94 @@ -1124,7 +1144,7 @@ 95 95 items["node"] = request.nodeIdentifier 96 96 … … 101 101 return response 102 102 103 diff -r 2919e60d3588 -r 90bd422b8ac6wokkel/test/test_pubsub.py104 --- a/wokkel/test/test_pubsub.py Mon Dec 28 12:13:34 2009+0100105 +++ b/wokkel/test/test_pubsub.py Mon Dec 28 21:19:34 2009+0100106 @@ -3 31,7 +331,6 @@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 @@ 107 107 items = list(domish.generateElementsQNamed(child.children, 108 108 'item', NS_PUBSUB)) … … 112 112 response = toResponse(iq, 'result') 113 113 self.stub.send(response) 114 @@ -6 34,8 +633,8 @@114 @@ -699,8 +698,8 @@ 115 115 116 116 request = pubsub.PubSubRequest.fromElement(parseXml(xml)) -
pubsub-request-options-form.patch
r21 r26 1 diff -r 4 38b64816faa -r 4d1379394cdawokkel/pubsub.py2 --- a/wokkel/pubsub.py Wed Dec 30 21:22:36 2009+01003 +++ b/wokkel/pubsub.py Wed Dec 30 21:29:15 2009+01004 @@ -3 80,10 +380,8 @@5 """ 6 form = PubSubRequest._findForm(verbElement, NS_PUBSUB_NODE_CONFIG)1 diff -r 459a78aaec20 wokkel/pubsub.py 2 --- a/wokkel/pubsub.py Fri Jan 01 16:17:05 2010 +0100 3 +++ b/wokkel/pubsub.py Fri Jan 01 16:17:28 2010 +0100 4 @@ -356,10 +356,8 @@ 5 """ 6 form = data_form.findForm(verbElement, NS_PUBSUB_NODE_CONFIG) 7 7 if form: 8 8 - if form.formType == 'submit': … … 15 15 raise BadRequest(text="Unexpected form type %r" % form.formType) 16 16 else: 17 @@ -4 39,12 +437,9 @@17 @@ -415,12 +413,9 @@ 18 18 def _parse_options(self, verbElement): 19 form = PubSubRequest._findForm(verbElement, NS_PUBSUB_SUBSCRIBE_OPTIONS)19 form = data_form.findForm(verbElement, NS_PUBSUB_SUBSCRIBE_OPTIONS) 20 20 if form: 21 21 - if form.formType == 'submit': … … 30 30 raise BadRequest(text="Missing options form") 31 31 32 @@ -9 56,6 +951,8 @@32 @@ -932,6 +927,8 @@ 33 33 handlerName, argNames = self._legacyHandlers[request.verb] 34 34 handler = getattr(self, handlerName) … … 39 39 40 40 # If needed, translate the result into a response 41 @@ - 1020,29 +1017,9 @@41 @@ -996,29 +993,9 @@ 42 42 return form 43 43 … … 72 72 73 73 def _preProcess_default(self, resource, request): 74 @@ -10 73,12 +1050,11 @@74 @@ -1049,12 +1026,11 @@ 75 75 76 76 … … 89 89 90 90 def _toResponse_items(self, result, resource, request): 91 diff -r 438b64816faa -r 4d1379394cda wokkel/test/test_pubsub.py 92 --- a/wokkel/test/test_pubsub.py Wed Dec 30 21:22:36 2009 +0100 93 +++ b/wokkel/test/test_pubsub.py Wed Dec 30 21:29:15 2009 +0100 91 diff -r 459a78aaec20 wokkel/test/test_pubsub.py 92 --- a/wokkel/test/test_pubsub.py Fri Jan 01 16:17:05 2010 +0100 93 +++ b/wokkel/test/test_pubsub.py Fri Jan 01 16:17:28 2010 +0100 94 @@ -1,4 +1,4 @@ 95 -# Copyright (c) 2003-2009 Ralph Meijer 96 +# Copyright (c) 2003-2010 Ralph Meijer 97 # See LICENSE for details. 98 99 """ 94 100 @@ -805,7 +805,7 @@ 95 101 self.assertEqual(JID('pubsub.example.org'), request.recipient) -
series
r24 r26 1 1 form-missing-tests.patch 2 2 pubsub-forms.patch 3 findform.patch 3 4 pubsub-request-options-form.patch 4 findform.patch5 5 pubsub-subscription-options.patch 6 6 pubsub-create-configure.patch
Note: See TracChangeset
for help on using the changeset viewer.