diff sat/plugins/plugin_exp_events.py @ 3040:fee60f17ebac

jp: jp asyncio port: /!\ this commit is huge. Jp is temporarily not working with `dbus` bridge /!\ This patch implements the port of jp to asyncio, so it is now correctly using the bridge asynchronously, and it can be used with bridges like `pb`. This also simplify the code, notably for things which were previously implemented with many callbacks (like pagination with RSM). During the process, some behaviours have been modified/fixed, in jp and backends, check diff for details.
author Goffi <goffi@goffi.org>
date Wed, 25 Sep 2019 08:56:41 +0200
parents ab2696e34d29
children 3c924cb207d9
line wrap: on
line diff
--- a/sat/plugins/plugin_exp_events.py	Wed Sep 25 08:53:38 2019 +0200
+++ b/sat/plugins/plugin_exp_events.py	Wed Sep 25 08:56:41 2019 +0200
@@ -381,7 +381,7 @@
 
         if register:
             yield self.register(
-                client, service, None, {}, node, event_id, event_elt, creator=True)
+                client, None, {}, service, node, event_id, item_elt, creator=True)
         defer.returnValue(node)
 
     def _eventModify(self, service, node, id_, timestamp_update, data_update,
@@ -447,24 +447,29 @@
                 events.append((timestamp, data))
         defer.returnValue(events)
 
-    def _eventInviteeGet(self, service, node, profile_key):
+    def _eventInviteeGet(self, service, node, invitee_jid_s, profile_key):
         service = jid.JID(service) if service else None
         node = node if node else NS_EVENT
         client = self.host.getClient(profile_key)
-        return self.eventInviteeGet(client, service, node)
+        invitee_jid = jid.JID(invitee_jid_s) if invitee_jid_s else None
+        return self.eventInviteeGet(client, service, node, invitee_jid)
 
     @defer.inlineCallbacks
-    def eventInviteeGet(self, client, service, node):
+    def eventInviteeGet(self, client, service, node, invitee_jid=None):
         """Retrieve attendance from event node
 
         @param service(unicode, None): PubSub service
-        @param node(unicode): PubSub node of the event
+        @param node(unicode): PubSub node of the event's invitees
+        @param invitee_jid(jid.JId, None): jid of the invitee to retrieve (None to
+          retrieve profile's invitation). The bare jid correspond to the PubSub item id.
         @return (dict): a dict with current attendance status,
             an empty dict is returned if nothing has been answered yed
         """
+        if invitee_jid is None:
+            invitee_jid = client.jid
         try:
             items, metadata = yield self._p.getItems(
-                client, service, node, item_ids=[client.jid.userhost()]
+                client, service, node, item_ids=[invitee_jid.userhost()]
             )
             event_elt = next(items[0].elements(NS_EVENT, "invitee"))
         except (exceptions.NotFound, IndexError):