Mercurial > libervia-backend
diff src/plugins/plugin_misc_groupblog.py @ 706:80e9d3ecb272
plugin XEP-0277, group blog: rich text management for sending microblogs
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 14 Nov 2013 18:35:51 +0100 |
parents | 3c304929af74 |
children | 890fbf2d7fdd |
line wrap: on
line diff
--- a/src/plugins/plugin_misc_groupblog.py Thu Nov 14 17:53:47 2013 +0100 +++ b/src/plugins/plugin_misc_groupblog.py Thu Nov 14 18:35:51 2013 +0100 @@ -250,9 +250,12 @@ @param message: message to publish @param extra: dict which option name as key, which can be: - allow_comments: True to accept comments, False else (default: False) + - rich: if present, contain rich text in currently selected syntax """ node_name = self.getNodeName(client.jid) mblog_data = {'content': message} + if 'rich' in extra: + mblog_data['rich'] = extra['rich'] P = self.host.plugins["XEP-0060"] access_model_value = ACCESS_TYPE_MAP[access_type] @@ -275,29 +278,33 @@ # node owned by somebody else) defer_blog = self.host.plugins["XEP-0060"].createNode(service, comments_node, _options, profile_key=client.profile) - mblog_item = self.host.plugins["XEP-0277"].data2entry(mblog_data, client.profile) - form = data_form.Form('submit', formNamespace=NS_PUBSUB_ITEM_CONFIG) + def itemCreated(mblog_item): + form = data_form.Form('submit', formNamespace=NS_PUBSUB_ITEM_CONFIG) - if access_type == "PUBLIC": - if access_list: - raise BadAccessListError("access_list must be empty for PUBLIC access") - access = data_form.Field(None, P.OPT_ACCESS_MODEL, value=access_model_value) - form.addField(access) - elif access_type == "GROUP": - access = data_form.Field(None, P.OPT_ACCESS_MODEL, value=access_model_value) - allowed = data_form.Field(None, P.OPT_ROSTER_GROUPS_ALLOWED, values=access_list) - form.addField(access) - form.addField(allowed) - mblog_item.addChild(form.toElement()) - elif access_type == "JID": - raise NotImplementedError - else: - error(_("Unknown access_type")) - raise BadAccessTypeError + if access_type == "PUBLIC": + if access_list: + raise BadAccessListError("access_list must be empty for PUBLIC access") + access = data_form.Field(None, P.OPT_ACCESS_MODEL, value=access_model_value) + form.addField(access) + elif access_type == "GROUP": + access = data_form.Field(None, P.OPT_ACCESS_MODEL, value=access_model_value) + allowed = data_form.Field(None, P.OPT_ROSTER_GROUPS_ALLOWED, values=access_list) + form.addField(access) + form.addField(allowed) + mblog_item.addChild(form.toElement()) + elif access_type == "JID": + raise NotImplementedError + else: + error(_("Unknown access_type")) + raise BadAccessTypeError - defer_blog = self.host.plugins["XEP-0060"].publish(service, node_name, items=[mblog_item], profile_key=client.profile) - defer_blog.addErrback(self._mblogPublicationFailed) - return defer_blog + defer_blog = self.host.plugins["XEP-0060"].publish(service, node_name, items=[mblog_item], profile_key=client.profile) + defer_blog.addErrback(self._mblogPublicationFailed) + return defer_blog + + entry_d = self.host.plugins["XEP-0277"].data2entry(mblog_data, client.profile) + entry_d.addCallback(itemCreated) + return entry_d def _mblogPublicationFailed(self, failure): #TODO @@ -311,6 +318,7 @@ @param message: microblog @param extra: dict which option name as key, which can be: - allow_comments: True to accept comments, False else (default: False) + - rich: if present, contain rich text in currently selected syntax @profile_key: %(doc_profile)s """ @@ -347,9 +355,9 @@ service, node = self.host.plugins["XEP-0277"].parseCommentUrl(node_url) mblog_data = {'content': message} - mblog_item = self.host.plugins["XEP-0277"].data2entry(mblog_data, profile) - - return self.host.plugins["XEP-0060"].publish(service, node, items=[mblog_item], profile_key=profile) + entry_d = self.host.plugins["XEP-0277"].data2entry(mblog_data, profile) + entry_d.addCallback(lambda mblog_item: self.host.plugins["XEP-0060"].publish(service, node, items=[mblog_item], profile_key=profile)) + return entry_d def _itemsConstruction(self, items, pub_jid, client): """ Transforms items to group blog data and manage comments node