Mercurial > sat_tmp
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") |