fixed html-im stanza plugin
This commit is contained in:
parent
dd77d2165d
commit
2384858f5e
3 changed files with 26 additions and 7 deletions
|
@ -202,7 +202,7 @@ class basexmpp(object):
|
|||
message['body'] = mbody
|
||||
message['subject'] = msubject
|
||||
if mnick is not None: message['nick'] = mnick
|
||||
if mhtml is not None: message['html'] = mhtml
|
||||
if mhtml is not None: message['html']['html'] = mhtml
|
||||
return message
|
||||
|
||||
def makePresence(self, pshow=None, pstatus=None, ppriority=None, pto=None, ptype=None, pfrom=None):
|
||||
|
|
|
@ -11,24 +11,24 @@ class HTMLIM(ElementBase):
|
|||
namespace = 'http://jabber.org/protocol/xhtml-im'
|
||||
name = 'html'
|
||||
plugin_attrib = 'html'
|
||||
interfaces = set(('html'))
|
||||
interfaces = set(('html',))
|
||||
plugin_attrib_map = set()
|
||||
plugin_xml_map = set()
|
||||
|
||||
def setHtml(self, html):
|
||||
if issinstance(html, str):
|
||||
if isinstance(html, str):
|
||||
html = ET.XML(html)
|
||||
if html.find('{http://www.w3.org/1999/xhtml}body') is None:
|
||||
if html.tag != '{http://www.w3.org/1999/xhtml}body':
|
||||
body = ET.Element('{http://www.w3.org/1999/xhtml}body')
|
||||
body.append(html)
|
||||
self.xml.append(body)
|
||||
else:
|
||||
body = html
|
||||
self.xml.append(html)
|
||||
self.xml.append(html)
|
||||
|
||||
def getHtml(self):
|
||||
html = self.xml.find('{http://www.w3.org/1999/xhtml}body')
|
||||
if html is None: return ''
|
||||
return __str__(html)
|
||||
return html
|
||||
|
||||
def delHtml(self):
|
||||
return self.__del__()
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
import unittest
|
||||
from xml.etree import cElementTree as ET
|
||||
|
||||
class testmessagestanzas(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
import sleekxmpp.stanza.message as m
|
||||
from sleekxmpp.basexmpp import stanzaPlugin
|
||||
from sleekxmpp.stanza.htmlim import HTMLIM
|
||||
stanzaPlugin(m.Message, HTMLIM)
|
||||
self.m = m
|
||||
|
||||
def testGroupchatReplyRegression(self):
|
||||
|
@ -21,5 +25,20 @@ class testmessagestanzas(unittest.TestCase):
|
|||
msg = self.m.Message()
|
||||
msg.attrib.attrib.attrib['to'] = 'usr@server.tld'
|
||||
self.failUnless(str(msg['to']) == 'usr@server.tld')
|
||||
|
||||
def testHTMLPlugin(self):
|
||||
"Test message/html/html stanza"
|
||||
msgtxt = """<message to="fritzy@netflint.net/sleekxmpp" type="chat"><body>this is the plaintext message</body><html xmlns="http://jabber.org/protocol/xhtml-im"><body xmlns="http://www.w3.org/1999/xhtml"><p>This is the htmlim message</p></body></html></message>"""
|
||||
msg = self.m.Message()
|
||||
msg['to'] = "fritzy@netflint.net/sleekxmpp"
|
||||
msg['body'] = "this is the plaintext message"
|
||||
msg['type'] = 'chat'
|
||||
p = ET.Element('{http://www.w3.org/1999/xhtml}p')
|
||||
p.text = "This is the htmlim message"
|
||||
msg['html']['html'] = p
|
||||
msg2 = self.m.Message()
|
||||
values = msg.getValues()
|
||||
msg2.setValues(values)
|
||||
self.failUnless(msgtxt == str(msg) == str(msg2))
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromTestCase(testmessagestanzas)
|
||||
|
|
Loading…
Reference in a new issue