diff sat/plugins/plugin_exp_pubsub_schema.py @ 3309:71761e9fb984

plugins tickets, merge-requests: `ticketsGet` and `mergeRequestsGet` serialisation: those methods now return data serialised with `data_format.serialise`
author Goffi <goffi@goffi.org>
date Thu, 16 Jul 2020 09:07:26 +0200
parents abca25af06d7
children
line wrap: on
line diff
--- a/sat/plugins/plugin_exp_pubsub_schema.py	Thu Jul 16 09:07:20 2020 +0200
+++ b/sat/plugins/plugin_exp_pubsub_schema.py	Thu Jul 16 09:07:26 2020 +0200
@@ -1,6 +1,5 @@
 #!/usr/bin/env python3
 
-
 # SAT plugin for Pubsub Schemas
 # Copyright (C) 2009-2020 Jérôme Poisson (goffi@goffi.org)
 
@@ -535,6 +534,7 @@
             filters=filters,
         )
         d.addCallback(self._p.transItemsData)
+        d.addCallback(lambda data: data_format.serialise(data))
         return d
 
     def prepareBridgeSet(self, service, node, schema, item_id, extra, profile_key):
@@ -601,7 +601,7 @@
         client, service, node, schema, item_id, extra = self.prepareBridgeSet(
             service, node, schema, item_id, extra
         )
-        d = self.set(
+        d = defer.ensureDeferred(self.set(
             client,
             service,
             node,
@@ -613,12 +613,12 @@
             form_ns=form_ns,
             default_node=default_node,
             fill_author=fill_author,
-        )
+        ))
         d.addCallback(lambda ret: ret or "")
         return d
 
-    @defer.inlineCallbacks
-    def set(self, client, service, node, values, schema, item_id, extra, deserialise,
+    async def set(
+            self, client, service, node, values, schema, item_id, extra, deserialise,
             form_ns, default_node=None, fill_author=True):
         """Set an item in a node with a schema
 
@@ -651,19 +651,19 @@
                 raise exceptions.DataError(
                     _('if extra["update"] is set, item_id must be set too')
                 )
-            yield self.copyMissingValues(client, service, node, item_id, form_ns, values)
+            await self.copyMissingValues(client, service, node, item_id, form_ns, values)
 
         values["updated"] = now
         if fill_author:
             if not values.get("author"):
-                id_data = yield self._i.getIdentity(client, None, ["nicknames"])
+                id_data = await self._i.getIdentity(client, None, ["nicknames"])
                 values["author"] = id_data['nicknames'][0]
             if not values.get("author_jid"):
                 values["author_jid"] = client.jid.full()
-        item_id = yield self.sendDataFormItem(
+        item_id = await self.sendDataFormItem(
             client, service, node, values, schema, item_id, extra, deserialise
         )
-        defer.returnValue(item_id)
+        return item_id
 
 
 @implementer(iwokkel.IDisco)