From 6724b696bc4917cbf5a02f0479e7da12ba80df86 Mon Sep 17 00:00:00 2001 From: Goffi Date: Wed, 25 Nov 2015 10:45:22 +0100 Subject: [PATCH] plugin XEP-0277, group blog: added item2data trigger + group permission are parsed when receiving a new item --- src/plugins/plugin_misc_groupblog.py | 10 ++++++++++ src/plugins/plugin_xep_0277.py | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/src/plugins/plugin_misc_groupblog.py b/src/plugins/plugin_misc_groupblog.py index 339054c4..834c6cb4 100755 --- a/src/plugins/plugin_misc_groupblog.py +++ b/src/plugins/plugin_misc_groupblog.py @@ -131,6 +131,7 @@ class GroupBlog(object): # async=True) # host.trigger.add("PubSubItemsReceived", self.pubSubItemsReceivedTrigger) + host.trigger.add("XEP-0277_item2data", self._item2dataTrigger) host.trigger.add("XEP-0277_data2entry", self._data2entryTrigger) host.trigger.add("XEP-0277_comments", self._commentsTrigger) @@ -165,6 +166,15 @@ class GroupBlog(object): log.error("Service should be available !") return {} + def _item2dataTrigger(self, item_elt, entry_elt, microblog_data): + """Parse item to find group permission elements""" + config_form = data_form.findForm(item_elt, NS_PUBSUB_ITEM_CONFIG) + if config_form is None: + return + access_model = config_form.get(self._p.OPT_ACCESS_MODEL, self._p.ACCESS_OPEN) + if access_model == self._p.ACCESS_ROSTER: + common.iter2dict('group', config_form.fields[self._p.OPT_ROSTER_GROUPS_ALLOWED].values, microblog_data) + def _data2entryTrigger(self, client, mb_data, entry_elt, item_elt): """Build fine access permission if needed diff --git a/src/plugins/plugin_xep_0277.py b/src/plugins/plugin_xep_0277.py index 97ffe41e..8854c4d2 100755 --- a/src/plugins/plugin_xep_0277.py +++ b/src/plugins/plugin_xep_0277.py @@ -319,6 +319,10 @@ class XEP_0277(object): categories = (category_elt.getAttribute('term','') for category_elt in entry_elt.elements(NS_ATOM, 'category')) common.iter2dict('tag', categories, microblog_data) + ## the trigger ## + # if other plugins have things to add or change + yield self.host.trigger.point("XEP-0277_item2data", item_elt, entry_elt, microblog_data) + defer.returnValue(microblog_data) @defer.inlineCallbacks