From 08afc150c3959dcafa08ca3624ea1f2d8d2d7aae Mon Sep 17 00:00:00 2001 From: Goffi Date: Thu, 27 Apr 2017 00:53:23 +0200 Subject: [PATCH] plugin invitations: added invitationList command --- src/plugins/plugin_misc_invitations.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/plugins/plugin_misc_invitations.py b/src/plugins/plugin_misc_invitations.py index 2e7ef2fd..586b84c5 100644 --- a/src/plugins/plugin_misc_invitations.py +++ b/src/plugins/plugin_misc_invitations.py @@ -80,6 +80,9 @@ class InvitationsPlugin(object): host.bridge.addMethod("invitationModify", ".plugin", in_sign='sa{ss}b', out_sign='', method=self._modify, async=True) + host.bridge.addMethod("invitationList", ".plugin", in_sign='s', out_sign='a{sa{ss}}', + method=self._list, + async=True) def checkExtra(self, extra): if EXTRA_RESERVED.intersection(extra): @@ -103,6 +106,7 @@ class InvitationsPlugin(object): d = self.create(**kwargs) def serialize(data): data[KEY_JID] = data[KEY_JID].full() + return data d.addCallback(serialize) return d @@ -270,7 +274,7 @@ class InvitationsPlugin(object): log.warning(_(u"Not all arguments have been consumed: {}").format(kwargs)) extra[KEY_ID] = id_ - extra[KEY_JID] = jid + extra[KEY_JID] = jid_ defer.returnValue(extra) def get(self, id_): @@ -313,3 +317,20 @@ class InvitationsPlugin(object): d = self.invitations[id_] d.addCallback(gotCurrentData) return d + + def _list(self, profile=C.PROF_KEY_NONE): + return self.list(profile) + + @defer.inlineCallbacks + def list(self, profile=C.PROF_KEY_NONE): + """List invitations + + @param profile(unicode): return invitation linked to this profile only + C.PROF_KEY_NONE: don't filter invitations + @return list(unicode): invitations uids + """ + invitations = yield self.invitations.items() + if profile != C.PROF_KEY_NONE: + invitations = {id_:data for id_, data in invitations.iteritems() if data.get(u'profile') == profile} + + defer.returnValue(invitations)