diff --git a/odoo/addons/base/controllers/rpc.py b/odoo/addons/base/controllers/rpc.py index 2fe7d794505..6154e08d957 100644 --- a/odoo/addons/base/controllers/rpc.py +++ b/odoo/addons/base/controllers/rpc.py @@ -2,6 +2,7 @@ from datetime import date, datetime from xmlrpc.client import dumps, loads import xmlrpc.client +from markupsafe import Markup from werkzeug.wrappers import Response from odoo.http import Controller, dispatch_rpc, request, route @@ -35,6 +36,7 @@ class OdooMarshaller(xmlrpc.client.Marshaller): dispatch[lazy] = dump_lazy dispatch[Command] = dispatch[int] + dispatch[Markup] = dispatch[str] # monkey-patch xmlrpc.client's marshaller diff --git a/odoo/addons/base/tests/test_xmlrpc.py b/odoo/addons/base/tests/test_xmlrpc.py index 38dcd5e8581..cd635a5b84c 100644 --- a/odoo/addons/base/tests/test_xmlrpc.py +++ b/odoo/addons/base/tests/test_xmlrpc.py @@ -18,6 +18,12 @@ class TestXMLRPC(common.HttpCase): super(TestXMLRPC, self).setUp() self.admin_uid = self.env.ref('base.user_admin').id + def xmlrpc(self, model, method, *args, **kwargs): + return self.xmlrpc_object.execute_kw( + common.get_db_name(), self.admin_uid, 'admin', + model, method, args, kwargs + ) + def test_01_xmlrpc_login(self): """ Try to login on the common service. """ db_name = common.get_db_name() @@ -45,6 +51,11 @@ class TestXMLRPC(common.HttpCase): 'res.partner', 'name_search', "admin" ) + def test_xmlrpc_html_field(self): + pid = self.xmlrpc('res.partner', 'create', {'name': 'bob', 'comment': 'sucks'}) + [p] = self.xmlrpc('res.partner', 'read', pid, ['comment']) + self.assertEqual(p['comment'], 'sucks') + def test_jsonrpc_read_group(self): self._json_call( common.get_db_name(), self.admin_uid, 'admin',