diff options
| author | Raphael Collet <rco@openerp.com> | 2016-02-23 14:54:34 +0100 |
|---|---|---|
| committer | Raphael Collet <rco@openerp.com> | 2016-03-21 13:46:44 +0100 |
| commit | 4ddc32313996c8cf6e8e6dffd2253aad8a144ccf (patch) | |
| tree | 32e6eaf4c7317b944c18d7758cb61f0636949a40 /addons/web_editor | |
| parent | eb04aa1e395d347c474181e90f8c8eded1d17ca3 (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.py | 2 | ||||
| -rw-r--r-- | addons/web_editor/models/ir_qweb.py | 6 | ||||
| -rw-r--r-- | addons/web_editor/models/ir_ui_view.py | 2 | ||||
| -rw-r--r-- | addons/web_editor/tests/test_converter.py | 62 |
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" ) |
