summaryrefslogtreecommitdiff
path: root/odoo
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2016-10-11 19:07:42 +0200
committerChristophe Simonis <chs@odoo.com>2016-10-11 19:07:42 +0200
commitf3532a6da6b2f02f100ebf2ae557048a8cfada73 (patch)
tree6d4ae6ef87305fa37f951bfdd213ab4d02783960 /odoo
parent341bea8f88e3c66c438cb44ca03f47a6e9270d32 (diff)
parent54ebe31f51c2e2e751df6335762511200aa06209 (diff)
[MERGE] forward port branch saas-12 up to 54ebe31
Diffstat (limited to 'odoo')
-rw-r--r--odoo/addons/base/res/res_partner.py2
-rw-r--r--odoo/addons/test_new_api/models.py7
-rw-r--r--odoo/addons/test_new_api/tests/test_new_fields.py6
-rw-r--r--odoo/fields.py6
-rw-r--r--odoo/tools/config.py2
5 files changed, 20 insertions, 3 deletions
diff --git a/odoo/addons/base/res/res_partner.py b/odoo/addons/base/res/res_partner.py
index 76e49b2ee52..74751b86f7b 100644
--- a/odoo/addons/base/res/res_partner.py
+++ b/odoo/addons/base/res/res_partner.py
@@ -213,7 +213,7 @@ class Partner(models.Model, FormatAddress):
# technical field used for managing commercial fields
commercial_partner_id = fields.Many2one('res.partner', compute='_compute_commercial_partner',
- string='Commercial Entity', store=True)
+ string='Commercial Entity', store=True, index=True)
commercial_company_name = fields.Char('Company Name Entity', compute='_compute_commercial_company_name',
store=True)
company_name = fields.Char('Company Name')
diff --git a/odoo/addons/test_new_api/models.py b/odoo/addons/test_new_api/models.py
index 5fc58ea976a..0d2054e32e5 100644
--- a/odoo/addons/test_new_api/models.py
+++ b/odoo/addons/test_new_api/models.py
@@ -71,10 +71,17 @@ class Discussion(models.Model):
message_concat = fields.Text(string='Message concatenate')
important_messages = fields.One2many('test_new_api.message', 'discussion',
domain=[('important', '=', True)])
+ very_important_messages = fields.One2many(
+ 'test_new_api.message', 'discussion',
+ domain=lambda self: self._domain_very_important())
emails = fields.One2many('test_new_api.emailmessage', 'discussion')
important_emails = fields.One2many('test_new_api.emailmessage', 'discussion',
domain=[('important', '=', True)])
+ def _domain_very_important(self):
+ """Ensure computed O2M domains work as expected."""
+ return [("important", "=", True)]
+
@api.onchange('moderator')
def _onchange_moderator(self):
self.participants |= self.moderator
diff --git a/odoo/addons/test_new_api/tests/test_new_fields.py b/odoo/addons/test_new_api/tests/test_new_fields.py
index 9c4af5d3579..22cee09ca12 100644
--- a/odoo/addons/test_new_api/tests/test_new_fields.py
+++ b/odoo/addons/test_new_api/tests/test_new_fields.py
@@ -621,6 +621,12 @@ class TestFields(common.TransactionCase):
message.important = True
self.assertIn(message, discussion.important_messages)
+ # writing on very_important_messages should call its domain method
+ self.assertIn(message, discussion.very_important_messages)
+ discussion.write({'very_important_messages': [(5,)]})
+ self.assertFalse(discussion.very_important_messages)
+ self.assertFalse(message.exists())
+
class TestHtmlField(common.TransactionCase):
diff --git a/odoo/fields.py b/odoo/fields.py
index 610839ba517..ee732b5b62f 100644
--- a/odoo/fields.py
+++ b/odoo/fields.py
@@ -1099,6 +1099,8 @@ class Integer(Field):
'group_operator': 'sum',
}
+ _description_group_operator = property(attrgetter('group_operator'))
+
def convert_to_column(self, value, record):
return int(value or 0)
@@ -1160,6 +1162,7 @@ class Float(Field):
_related__digits = property(attrgetter('_digits'))
_description_digits = property(attrgetter('digits'))
+ _description_group_operator = property(attrgetter('group_operator'))
def convert_to_column(self, value, record):
result = float(value or 0.0)
@@ -1201,6 +1204,7 @@ class Monetary(Field):
_related_currency_field = property(attrgetter('currency_field'))
_description_currency_field = property(attrgetter('currency_field'))
+ _description_group_operator = property(attrgetter('group_operator'))
def _setup_regular_base(self, model):
super(Monetary, self)._setup_regular_base(model)
@@ -1283,7 +1287,7 @@ class _String(Field):
return self.translate(callback, value)
else:
return value
-
+
class Char(_String):
""" Basic string field, can be length-limited, usually displayed as a
diff --git a/odoo/tools/config.py b/odoo/tools/config.py
index 07af83e7e3e..5584002c520 100644
--- a/odoo/tools/config.py
+++ b/odoo/tools/config.py
@@ -443,7 +443,7 @@ class configmanager(object):
for x in self.options['addons_path'].split(','))
self.options['init'] = opt.init and dict.fromkeys(opt.init.split(','), 1) or {}
- self.options['demo'] = (self.options['init']
+ self.options['demo'] = (dict(self.options['init'])
if not self.options['without_demo'] else {})
self.options['update'] = opt.update and dict.fromkeys(opt.update.split(','), 1) or {}
self.options['translate_modules'] = opt.translate_modules and map(lambda m: m.strip(), opt.translate_modules.split(',')) or ['all']