# HG changeset patch # User Goffi # Date 1547402179 -3600 # Node ID 7c490bb608477b4809e38e9bbc453e35c0b23704 # Parent e81964db3cd6fb6474971343e3f89ac0a34036a2 backend: items ids are returned in payload if not specified on publish diff -r e81964db3cd6 -r 7c490bb60847 src/backend.py --- a/src/backend.py Sun Jan 13 18:56:17 2019 +0100 +++ b/src/backend.py Sun Jan 13 18:56:19 2019 +0100 @@ -70,7 +70,7 @@ from twisted.internet import defer, reactor from twisted.words.protocols.jabber.error import StanzaError # from twisted.words.protocols.jabber.jid import JID, InvalidFormat -from twisted.words.xish import utility +from twisted.words.xish import domish, utility from wokkel import disco from wokkel import data_form @@ -380,6 +380,7 @@ items_data = [] check_overwrite = False + ret_payload = None # payload returned, None or domish.Element for item in items: # we enforce publisher (cf XEP-0060 ยง7.1.2.3) item['publisher'] = requestor.full() @@ -389,6 +390,12 @@ if not item.getAttribute("id"): item["id"] = yield node.getNextId() new_item = True + ret_pubsub_elt = domish.Element((pubsub.NS_PUBSUB, u'pubsub')) + ret_publish_elt = ret_pubsub_elt.addElement(u'publish') + ret_publish_elt[u'node'] = node.nodeIdentifier + ret_item_elt = ret_publish_elt.addElement(u'item') + ret_item_elt["id"] = item[u"id"] + ret_payload = ret_pubsub_elt else: check_overwrite = True new_item = False @@ -410,6 +417,7 @@ yield node.storeItems(items_data, requestor) yield self._doNotify(node, items_data, deliverPayloads, pep, recipient) + defer.returnValue(ret_payload) def _doNotify(self, node, items_data, deliverPayloads, pep, recipient): if items_data and not deliverPayloads: