Skip to content

Commit

Permalink
Merge pull request #842 from StefanRijnhart/fix/8.0/partner_merge_pro…
Browse files Browse the repository at this point in the history
…tected_fields

[FIX] Protected fields break partner merge
  • Loading branch information
gurneyalex committed Apr 21, 2019
2 parents a9056d4 + 283c33f commit 21eddc0
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
3 changes: 3 additions & 0 deletions addons/crm/base_partner_merge.py
Expand Up @@ -276,6 +276,9 @@ def write_serializer(column, item):
values = dict()
for column, field in columns.iteritems():
if field._type not in ('many2many', 'one2many') and not isinstance(field, fields.function):
if field.groups and not self.pool['res.users'].has_group(cr, uid, field.groups):
continue

for item in itertools.chain(src_partners, [dst_partner]):
if item[column]:
values[column] = write_serializer(column, item[column])
Expand Down
1 change: 1 addition & 0 deletions addons/crm/tests/__init__.py
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-

import test_new_lead_notification
import test_partner_merge
30 changes: 30 additions & 0 deletions addons/crm/tests/test_partner_merge.py
@@ -0,0 +1,30 @@
# coding: utf-8
from openerp.tests.common import TransactionCase


class TestPartnerMerge(TransactionCase):
def setUp(self):
super(TestPartnerMerge, self).setUp()
self.partner1 = self.env.ref('base.res_partner_6')
self.partner2 = self.env.ref('base.res_partner_6').copy()
self.user = self.env.ref('base.user_demo')

def _do_merge(self):
# Switch to old API due to guessing mismatch
wizard_obj = self.registry['base.partner.merge.automatic.wizard']
wizard_obj._merge(
self.env.cr, self.user.id, [self.partner1.id, self.partner2.id],
self.partner2, context=self.env.context)

def test_partner_merge(self):
self._do_merge()

def test_partner_merge_protected_field(self):
""" Protecting a field with a specific group does not break merging """
column = self.env['res.partner']._columns['birthdate']
groups_orig = getattr(column, 'groups', None)
column.groups = 'base.group_system'
try:
self._do_merge()
finally:
column.groups = groups_orig

0 comments on commit 21eddc0

Please sign in to comment.