From 979e3d07cbc79c17eaeef5f7182fe472b21d8f28 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Tue, 18 Sep 2012 11:14:54 +0200 Subject: [PATCH] [FIX] portal: in the portal access wizard, make sure each contact appears at most once bzr revid: rco@openerp.com-20120918091454-nidpnxl6wpmqnmjc --- addons/portal/wizard/portal_wizard.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/addons/portal/wizard/portal_wizard.py b/addons/portal/wizard/portal_wizard.py index aa6a9cf96c6..1dda8fd7dd3 100644 --- a/addons/portal/wizard/portal_wizard.py +++ b/addons/portal/wizard/portal_wizard.py @@ -94,17 +94,21 @@ class wizard(osv.osv_memory): # for each partner, determine corresponding portal.wizard.user records res_partner = self.pool.get('res.partner') partner_ids = context and context.get('active_ids') or [] + contact_ids = set() user_changes = [] for partner in res_partner.browse(cr, SUPERUSER_ID, partner_ids, context): for contact in (partner.child_ids or [partner]): - in_portal = False - if contact.user_ids: - in_portal = portal_id in [g.id for g in contact.user_ids[0].groups_id] - user_changes.append((0, 0, { - 'partner_id': contact.id, - 'email': contact.email, - 'in_portal': in_portal, - })) + # make sure that each contact appears at most once in the list + if contact.id not in contact_ids: + contact_ids.add(contact.id) + in_portal = False + if contact.user_ids: + in_portal = portal_id in [g.id for g in contact.user_ids[0].groups_id] + user_changes.append((0, 0, { + 'partner_id': contact.id, + 'email': contact.email, + 'in_portal': in_portal, + })) return {'value': {'user_ids': user_changes}} def action_apply(self, cr, uid, ids, context=None):