comparison sat_tmp/wokkel/rsm.py @ 84:896e76caa204

wokkel (rsm): fix Pubsub service: - properly get RSM response from `items` return value - add RSM handler in `items` workflow
author Goffi <goffi@goffi.org>
date Tue, 25 Jan 2022 18:53:06 +0100
parents 76b7ae23dc66
children ba3f695fff34
comparison
equal deleted inserted replaced
83:2d99519090b9 84:896e76caa204
412 class PubSubService(pubsub.PubSubService): 412 class PubSubService(pubsub.PubSubService):
413 """PubSubService extension to handle RSM.""" 413 """PubSubService extension to handle RSM."""
414 414
415 _request_class = PubSubRequest 415 _request_class = PubSubRequest
416 416
417 def _toResponse_items(self, elts, resource, request): 417 def _toResponse_items(self, resp_tuple, resource, request):
418 # default method only manage <item/> elements 418 elts, rsm_response = resp_tuple
419 # but we need to add RSM set element
420 rsm_elt = None
421 for idx, elt in enumerate(reversed(elts)):
422 if elt.name == "set" and elt.uri == NS_RSM:
423 rsm_elt = elts.pop(-1-idx)
424 break
425 419
426 response = pubsub.PubSubService._toResponse_items(self, elts, 420 response = pubsub.PubSubService._toResponse_items(self, elts,
427 resource, request) 421 resource, request)
428 if rsm_elt is not None: 422 if rsm_response is not None:
429 response.addChild(rsm_elt) 423 response.addChild(rsm_response.toElement())
430 424
431 return response 425 return response
426
427
428 PubSubService._legacyHandlers["items"][1].append("rsm")