summaryrefslogtreecommitdiff
path: root/odoo/addons/base
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2016-09-22 15:23:45 +0200
committerChristophe Simonis <chs@odoo.com>2016-09-22 15:23:45 +0200
commit856476d4418390ca89ef161e31faf61248eeaa1d (patch)
treef87ab29316440a28e9032d1b811eeb7ea5155653 /odoo/addons/base
parent4b812d9965128b02b4ac5ea49a66da622953cddc (diff)
parentb1b700adb1f26bb43e8f4b77b85f969a4b52d36c (diff)
[MERGE] forward port branch saas-12 up to b1b700a
Diffstat (limited to 'odoo/addons/base')
-rw-r--r--odoo/addons/base/i18n/base.pot2
-rw-r--r--odoo/addons/base/ir/ir_model.py11
-rw-r--r--odoo/addons/base/ir/ir_qweb/qweb.py2
-rw-r--r--odoo/addons/base/res/res_users.py2
-rw-r--r--odoo/addons/base/tests/test_qweb.py10
5 files changed, 16 insertions, 11 deletions
diff --git a/odoo/addons/base/i18n/base.pot b/odoo/addons/base/i18n/base.pot
index 6fa284e7b7f..7394362b3e6 100644
--- a/odoo/addons/base/i18n/base.pot
+++ b/odoo/addons/base/i18n/base.pot
@@ -8826,7 +8826,7 @@ msgstr ""
#. module: base
#: code:addons/base/res/res_users.py:316
#, python-format
-msgid "Invalid group by"
+msgid "Invalid 'group by' parameter"
msgstr ""
#. module: base
diff --git a/odoo/addons/base/ir/ir_model.py b/odoo/addons/base/ir/ir_model.py
index a1652323180..5d3260e58f2 100644
--- a/odoo/addons/base/ir/ir_model.py
+++ b/odoo/addons/base/ir/ir_model.py
@@ -414,6 +414,7 @@ class IrModelFields(models.Model):
any(field.state != 'manual' for field in self):
raise UserError(_("This column contains module data and cannot be removed!"))
+ model_names = self.mapped('model')
self._drop_column()
res = super(IrModelFields, self).unlink()
@@ -423,6 +424,8 @@ class IrModelFields(models.Model):
self._cr.commit()
api.Environment.reset()
registry = Registry.new(self._cr.dbname)
+ models = registry.descendants(model_names, '_inherits')
+ registry.init_models(self._cr, models, dict(self._context, update_custom_fields=True))
registry.signal_registry_change()
return res
@@ -455,8 +458,9 @@ class IrModelFields(models.Model):
if vals['model'] in self.pool:
# setup models; this re-initializes model in registry
self.pool.setup_models(self._cr, partial=(not self.pool.ready))
- # update database schema
- self.pool.init_models(self._cr, [vals['model']], dict(self._context, update_custom_fields=True))
+ # update database schema of model and its descendant models
+ models = self.pool.descendants([vals['model']], '_inherits')
+ self.pool.init_models(self._cr, models, dict(self._context, update_custom_fields=True))
self.pool.signal_registry_change()
return res
@@ -538,7 +542,8 @@ class IrModelFields(models.Model):
if patched_models:
# update the database schema of the models to patch
- self.pool.init_models(self._cr, patched_models, dict(self._context, update_custom_fields=True))
+ models = self.pool.descendants(patched_models, '_inherits')
+ self.pool.init_models(self._cr, models, dict(self._context, update_custom_fields=True))
if column_rename or patched_models:
self.pool.signal_registry_change()
diff --git a/odoo/addons/base/ir/ir_qweb/qweb.py b/odoo/addons/base/ir/ir_qweb/qweb.py
index ad0aaaa5f88..a50f478779f 100644
--- a/odoo/addons/base/ir/ir_qweb/qweb.py
+++ b/odoo/addons/base/ir/ir_qweb/qweb.py
@@ -246,7 +246,7 @@ class QWeb(object):
"""
body = []
self.compile(template, options)(self, body.append, values or {})
- return u''.join(body)
+ return u''.join(body).encode('utf8')
def compile(self, template, options):
""" Compile the given template into a rendering function::
diff --git a/odoo/addons/base/res/res_users.py b/odoo/addons/base/res/res_users.py
index aa269952e0b..2b5cff01818 100644
--- a/odoo/addons/base/res/res_users.py
+++ b/odoo/addons/base/res/res_users.py
@@ -313,7 +313,7 @@ class Users(models.Model):
if self._uid != SUPERUSER_ID:
groupby_fields = set([groupby] if isinstance(groupby, basestring) else groupby)
if groupby_fields.intersection(USER_PRIVATE_FIELDS):
- raise AccessError(_('Invalid group by'))
+ raise AccessError(_("Invalid 'group by' parameter"))
return super(Users, self).read_group(domain, fields, groupby, offset=offset, limit=limit, orderby=orderby, lazy=lazy)
@api.model
diff --git a/odoo/addons/base/tests/test_qweb.py b/odoo/addons/base/tests/test_qweb.py
index 949fc72ad3e..0210b03df05 100644
--- a/odoo/addons/base/tests/test_qweb.py
+++ b/odoo/addons/base/tests/test_qweb.py
@@ -25,7 +25,7 @@ class TestQWebTField(TransactionCase):
field = etree.Element('span', {'t-field': u'company.name'})
company = self.env['res.company'].create({'name': "My Test Company"})
- result = self.engine.render(field, {'company': company}).encode('utf-8')
+ result = self.engine.render(field, {'company': company})
self.assertEqual(
result,
'<span data-oe-model="res.company" data-oe-id="%d" '
@@ -41,7 +41,7 @@ class TestQWebTField(TransactionCase):
s = u"Testing «ταБЬℓσ»: 1<2 & 4+1>3, now 20% off!"
company = self.env['res.company'].create({'name': s})
- result = self.engine.render(field, {'company': company}).encode('utf-8')
+ result = self.engine.render(field, {'company': company})
self.assertEqual(
result,
'<span data-oe-model="res.company" data-oe-id="%d" '
@@ -56,13 +56,13 @@ class TestQWebTField(TransactionCase):
field = etree.Element('td', {'t-field': u'company.name'})
with self.assertRaisesRegexp(QWebException, r'^RTE widgets do not work correctly'):
- self.engine.render(field, {'company': None}).encode('utf-8')
+ self.engine.render(field, {'company': None})
def test_reject_t_tag(self):
field = etree.Element('t', {'t-field': u'company.name'})
with self.assertRaisesRegexp(QWebException, r'^t-field can not be used on a t element'):
- self.engine.render(field, {'company': None}).encode('utf-8')
+ self.engine.render(field, {'company': None})
from copy import deepcopy
@@ -128,7 +128,7 @@ class TestQWeb(TransactionCase):
result = doc.find('result[@id="{}"]'.format(template)).text
self.assertEqual(
- qweb.render(template, values=params, load=loader).strip().encode('utf-8'),
+ qweb.render(template, values=params, load=loader).strip(),
(result or u'').strip().encode('utf-8'),
template
)