Mercurial > libervia-backend
changeset 304:e04ccf122bb6
microblog sending
- Bridge: added sendPersonalEvent to DBus frontend
- plugin XEP_0277: * fixed unicode issue
* node options are now changed instead of node being deleted/recreated for setMicroblogAccess
- xml_tools: fixed unicode issue
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 26 Mar 2011 17:51:19 +0100 |
parents | 2b52a5da0978 |
children | 15a12bf2bb62 |
files | frontends/src/bridge/DBus.py src/bridge/bridge_constructor/dbus_frontend_template.py src/plugins/plugin_xep_0277.py src/tools/xml_tools.py |
diffstat | 4 files changed, 21 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/frontends/src/bridge/DBus.py Thu Mar 24 21:15:26 2011 +0100 +++ b/frontends/src/bridge/DBus.py Sat Mar 26 17:51:19 2011 +0100 @@ -217,3 +217,6 @@ def getLastMicroblogs(self, jid, max_items, profile_key='@DEFAULT@', callback=None, errback=None): return self.db_comm_iface.getLastMicroblogs(jid, max_items, profile_key, reply_handler=callback, error_handler=errback) + + def sendPersonalEvent(self, event_type, data, profile_key='@DEFAULT@'): + return self.db_comm_iface.sendPersonalEvent(event_type, data, profile_key)
--- a/src/bridge/bridge_constructor/dbus_frontend_template.py Thu Mar 24 21:15:26 2011 +0100 +++ b/src/bridge/bridge_constructor/dbus_frontend_template.py Sat Mar 26 17:51:19 2011 +0100 @@ -99,3 +99,6 @@ def getLastMicroblogs(self, jid, max_items, profile_key='@DEFAULT@', callback=None, errback=None): return self.db_comm_iface.getLastMicroblogs(jid, max_items, profile_key, reply_handler=callback, error_handler=errback) + def sendPersonalEvent(self, event_type, data, profile_key='@DEFAULT@'): + return self.db_comm_iface.sendPersonalEvent(event_type, data, profile_key) +
--- a/src/plugins/plugin_xep_0277.py Thu Mar 24 21:15:26 2011 +0100 +++ b/src/plugins/plugin_xep_0277.py Sat Mar 26 17:51:19 2011 +0100 @@ -117,15 +117,16 @@ content = data['content'] if not content: error(_("Microblog data's content value must not be empty")) + return 3 _uuid = unicode(uuid.uuid1()) _entry = Entry() #FIXME: need to escape html - _entry.title = content.encode('utf-8') + _entry.title = unicode(content).encode('utf-8') _entry.author = Author() _entry.author.name = data.get('author',self.host.getJidNStream(profile)[0].userhost()).encode('utf-8') _entry.updated = float(data.get('timestamp',time())) - _entry.id = _uuid - _entry_elt = ElementParser()(str(_entry)) + _entry.id = str(_uuid) + _entry_elt = ElementParser()(str(_entry).decode('utf-8')) item = pubsub.Item(payload=_entry_elt) item['id'] = _uuid self.host.plugins["XEP-0060"].publish(None, NS_MICROBLOG, [item], profile_key = profile) @@ -145,14 +146,15 @@ def setMicroblogAccess(self, access="presence", profile_key='@DEFAULT@'): """Create a microblog node on PEP with given access - If the node already exists, it is deleted and recreated + If the node already exists, it change options @param access: Node access model, according to xep-0060 #4.5 @param profile_key: profile key""" jid, xmlstream = self.host.getJidNStream(profile_key) + _options = {NS_ACCESS_MODEL:access, NS_PERSIST_ITEMS:1, NS_MAX_ITEMS:-1} def cb(result): #Node is created with right permission - debug(_("Microblog node created")) + debug(_("Microblog node has now access %s") % access) def fatal_err(s_error): #Something went wrong @@ -162,14 +164,17 @@ #If the node already exists, the condition is "conflict", #else we have an unmanaged error if s_error.value.condition=='conflict': - d = self.host.plugins["XEP-0060"].deleteNode(jid.userhostJID(), NS_MICROBLOG, profile_key=profile_key) - d.addCallback(lambda x: create_node().addCallback(cb).addErrback(fatal_err)) - d.addErrback(fatal_err) + #d = self.host.plugins["XEP-0060"].deleteNode(jid.userhostJID(), NS_MICROBLOG, profile_key=profile_key) + #d.addCallback(lambda x: create_node().addCallback(cb).addErrback(fatal_err)) + change_node_options().addCallback(cb).addErrback(fatal_err) else: fatal_err(s_error) def create_node(): - return self.host.plugins["XEP-0060"].createNode(jid.userhostJID(), NS_MICROBLOG, {NS_ACCESS_MODEL:access, NS_PERSIST_ITEMS:1, NS_MAX_ITEMS:-1}, profile_key=profile_key) + return self.host.plugins["XEP-0060"].createNode(jid.userhostJID(), NS_MICROBLOG, _options, profile_key=profile_key) + + def change_node_options(): + return self.host.plugins["XEP-0060"].setOptions(jid.userhostJID(), NS_MICROBLOG, jid.userhostJID(), _options, profile_key=profile_key) create_node().addCallback(cb).addErrback(err_cb)
--- a/src/tools/xml_tools.py Thu Mar 24 21:15:26 2011 +0100 +++ b/src/tools/xml_tools.py Sat Mar 26 17:51:19 2011 +0100 @@ -324,5 +324,5 @@ parser.DocumentEndEvent = onEnd tmp = domish.Element(("", "s")) tmp.addRawXml(s.replace('\n','').replace('\t','')) - parser.parse(tmp.toXml()) + parser.parse(tmp.toXml().encode('utf-8')) return self.result.firstChildElement()