summaryrefslogtreecommitdiff
path: root/addons/web_editor
diff options
context:
space:
mode:
authorRaphael Collet <rco@openerp.com>2016-02-23 14:54:34 +0100
committerRaphael Collet <rco@openerp.com>2016-03-21 13:46:44 +0100
commit4ddc32313996c8cf6e8e6dffd2253aad8a144ccf (patch)
tree32e6eaf4c7317b944c18d7758cb61f0636949a40 /addons/web_editor
parenteb04aa1e395d347c474181e90f8c8eded1d17ca3 (diff)
[FIX] base: fix and complete migration of base/ir
- add or fix decorators on methods - fix most compute methods (wrong dependencies) - revert changes in `eval_context` of `ir.actions` - various code simplifications and improvements - migrate methods that were not - ir_qweb: modify `QWebContext` to take an environment instead of `cr`, `uid`, `context` - ir_qweb: convert `AssetsBundle` to use new API `env` - ir_ui_view: use decorator `multi` on method `read_combined` - ir_ui_view: ensure that method `render` is never called with an xml_id - ir_ui_view: factor out part of the `ormcache` key of method `_read_template`
Diffstat (limited to 'addons/web_editor')
-rw-r--r--addons/web_editor/controllers/main.py2
-rw-r--r--addons/web_editor/models/ir_qweb.py6
-rw-r--r--addons/web_editor/models/ir_ui_view.py2
-rw-r--r--addons/web_editor/tests/test_converter.py62
4 files changed, 25 insertions, 47 deletions
diff --git a/addons/web_editor/controllers/main.py b/addons/web_editor/controllers/main.py
index bd4fd66bcb8..ca418645471 100644
--- a/addons/web_editor/controllers/main.py
+++ b/addons/web_editor/controllers/main.py
@@ -18,7 +18,7 @@ class Web_Editor(http.Controller):
#------------------------------------------------------
@http.route('/web_editor/snippets', type='json', auth="user")
def snippets(self, **kwargs):
- return request.registry["ir.ui.view"].render(request.cr, request.uid, 'web_editor.snippets', None, context=request.context)
+ return request.env.ref('web_editor.snippets').render(None)
#------------------------------------------------------
# Backend html field
diff --git a/addons/web_editor/models/ir_qweb.py b/addons/web_editor/models/ir_qweb.py
index 149fcc5cc74..a0fe989391c 100644
--- a/addons/web_editor/models/ir_qweb.py
+++ b/addons/web_editor/models/ir_qweb.py
@@ -57,9 +57,6 @@ class QWeb(orm.AbstractModel):
template_attributes['call'] = template_attributes['snippet']
return self.render_tag_call(element, template_attributes, generated_attributes, qwebcontext)
- def get_converter_for(self, field_type):
- return self.pool.get('ir.qweb.field.' + field_type, self.pool['ir.qweb.field'])
-
#------------------------------------------------------
# QWeb fields
@@ -102,9 +99,6 @@ class Field(orm.AbstractModel):
def from_html(self, cr, uid, model, field, element, context=None):
return self.value_from_string(element.text_content().strip())
- def qweb_object(self):
- return self.pool['ir.qweb']
-
class Integer(orm.AbstractModel):
_name = 'ir.qweb.field.integer'
diff --git a/addons/web_editor/models/ir_ui_view.py b/addons/web_editor/models/ir_ui_view.py
index dd7501c44f9..01082efb37b 100644
--- a/addons/web_editor/models/ir_ui_view.py
+++ b/addons/web_editor/models/ir_ui_view.py
@@ -12,6 +12,8 @@ class view(osv.osv):
@api.cr_uid_ids_context
def render(self, cr, uid, id_or_xml_id, values=None, engine='ir.qweb', context=None):
+ if isinstance(id_or_xml_id, list):
+ id_or_xml_id = id_or_xml_id[0]
if not values:
values = {}
if values.get('editable'):
diff --git a/addons/web_editor/tests/test_converter.py b/addons/web_editor/tests/test_converter.py
index 48a157c5d17..6772a15019a 100644
--- a/addons/web_editor/tests/test_converter.py
+++ b/addons/web_editor/tests/test_converter.py
@@ -6,7 +6,7 @@ from lxml import etree, html
from lxml.builder import E
from openerp.tests import common
-from openerp.addons.base.ir import ir_qweb
+from openerp.addons.base.ir.ir_qweb import QWebContext
from openerp.addons.web_editor.models.ir_qweb import html_to_text
@@ -116,32 +116,25 @@ class TestHTMLToText(unittest.TestCase):
class TestConvertBack(common.TransactionCase):
def setUp(self):
super(TestConvertBack, self).setUp()
+ self.env = self.env(context={'inherit_branding': True})
+
+ def qwebcontext(self, data):
+ return QWebContext(self.env, data)
def field_rountrip_result(self, field, value, expected):
model = 'web_editor.converter.test'
- Model = self.registry(model)
- id = Model.create(
- self.cr, self.uid, {
- field: value
- })
- [record] = Model.browse(self.cr, self.uid, [id])
+ record = self.env[model].create({field: value})
e = etree.Element('span')
field_value = 'record.%s' % field
e.set('t-field', field_value)
- rendered = self.registry('ir.qweb').render_tag_field(
- e, {'field': field_value}, '', ir_qweb.QWebContext(self.cr, self.uid, {
- 'record': record,
- }, context={'inherit_branding': True}))
- element = html.fromstring(
- rendered, parser=html.HTMLParser(encoding='utf-8'))
-
- converter = self.registry('ir.qweb').get_converter_for(
- element.get('data-oe-type'))
+ qwebcontext = self.qwebcontext({'record': record})
+ rendered = self.env['ir.qweb'].render_tag_field(e, {'field': field_value}, '', qwebcontext)
+ element = html.fromstring(rendered, parser=html.HTMLParser(encoding='utf-8'))
- value_back = converter.from_html(
- self.cr, self.uid, model, Model._fields[field], element)
+ converter = self.env['ir.qweb'].get_converter_for(element.get('data-oe-type'))
+ value_back = converter.from_html(model, record._fields[field], element)
if isinstance(expected, str):
expected = expected.decode('utf-8')
@@ -162,7 +155,6 @@ class TestConvertBack(common.TransactionCase):
def test_char(self):
self.field_roundtrip('char', "foo bar")
-
self.field_roundtrip('char', "ⒸⓄⓇⒼⒺ")
def test_selection(self):
@@ -199,45 +191,35 @@ class TestConvertBack(common.TransactionCase):
model = 'web_editor.converter.test'
field = 'many2one'
- Sub = self.registry('web_editor.converter.test.sub')
- sub_id = Sub.create(self.cr, self.uid, {'name': "Foo"})
- sub2_id = Sub.create(self.cr, self.uid, {'name': "Bar"})
-
- Model = self.registry(model)
- id = Model.create(self.cr, self.uid, {field: sub_id})
- [record] = Model.browse(self.cr, self.uid, [id])
+ subrec1 = self.env['web_editor.converter.test.sub'].create({'name': "Foo"})
+ subrec2 = self.env['web_editor.converter.test.sub'].create({'name': "Bar"})
+ record = self.env[model].create({field: subrec1.id})
e = etree.Element('span')
field_value = 'record.%s' % field
e.set('t-field', field_value)
- rendered = self.registry('ir.qweb').render_tag_field(
- e, {'field': field_value}, '', ir_qweb.QWebContext(self.cr, self.uid, {
- 'record': record,
- }, context={'inherit_branding': True}))
-
+ qwebcontext = self.qwebcontext({'record': record})
+ rendered = self.env['ir.qweb'].render_tag_field(e, {'field': field_value}, '', qwebcontext)
element = html.fromstring(rendered, parser=html.HTMLParser(encoding='utf-8'))
+
# emulate edition
- element.set('data-oe-many2one-id', str(sub2_id))
+ element.set('data-oe-many2one-id', str(subrec2.id))
element.text = "New content"
- converter = self.registry('ir.qweb').get_converter_for(
- element.get('data-oe-type'))
-
- value_back = converter.from_html(
- self.cr, self.uid, model, Model._fields[field], element)
+ converter = self.env['ir.qweb'].get_converter_for(element.get('data-oe-type'))
+ value_back = converter.from_html(model, record._fields[field], element)
self.assertIsNone(
value_back, "the m2o converter should return None to avoid spurious"
" or useless writes on the parent record")
-
self.assertEqual(
- Sub.browse(self.cr, self.uid, sub_id).name,
+ subrec1.name,
"Foo",
"element edition can't change directly the m2o record"
)
self.assertEqual(
- Model.browse(self.cr, self.uid, id).many2one.name,
+ record.many2one.name,
"Bar",
"element edition should have been change the m2o id"
)