diff --git a/hotel_node_master/models/hotel_node.py b/hotel_node_master/models/hotel_node.py index c19757d10..65cfa5180 100644 --- a/hotel_node_master/models/hotel_node.py +++ b/hotel_node_master/models/hotel_node.py @@ -146,6 +146,12 @@ class HotelNode(models.Model): user_ids = [] for user in remote_users: + group_ids = [] + # retrieve the remote external ID(s) of group records + remote_xml_ids = noderpc.env['res.groups'].browse(user['groups_id']).get_external_id() + for key, value in remote_xml_ids.items(): + group_ids.append(gui_ids[xml_ids.index(value)]) + if user['id'] in remote_ids: idx = remote_ids.index(user['id']) user_ids.append((1, master_ids[idx], { @@ -154,6 +160,11 @@ class HotelNode(models.Model): 'email': user['email'], 'active': user['active'], 'remote_user_id': user['id'], + 'group_ids': [[ + 6, + False, + group_ids + ]] })) else: partner = self.env['res.partner'].search([('email', '=', user['email'])]) @@ -163,7 +174,6 @@ class HotelNode(models.Model): 'is_company': False, 'email': user['email'], }) - user_ids.append((0, 0, { 'name': user['name'], 'login': user['login'], @@ -171,6 +181,11 @@ class HotelNode(models.Model): 'active': user['active'], 'remote_user_id': user['id'], 'partner_id': partner.id, + 'group_ids': [[ + 6, + False, + group_ids + ]] })) vals.update({'user_ids': user_ids}) diff --git a/hotel_node_master/models/hotel_node_user.py b/hotel_node_master/models/hotel_node_user.py index a3a042a63..d6d0455dd 100644 --- a/hotel_node_master/models/hotel_node_user.py +++ b/hotel_node_master/models/hotel_node_user.py @@ -119,6 +119,7 @@ class HotelNodeUser(models.Model): :param dict vals: a dictionary of fields to update and the value to set on them. :raise: ValidationError """ + for rec in self: if 'node_id' in vals and vals['node_id'] != rec.node_id.id: msg = _("Changing a user between nodes is not allowed. Please create a new user instead.") @@ -143,6 +144,9 @@ class HotelNodeUser(models.Model): remote_vals = {} + if 'login' in vals: + remote_vals.update({'login': vals['login']}) + if 'active' in vals: remote_vals.update({'active': vals['active']}) diff --git a/hotel_node_master/models/inherited_res_partner.py b/hotel_node_master/models/inherited_res_partner.py index d69da26b7..89167ee77 100644 --- a/hotel_node_master/models/inherited_res_partner.py +++ b/hotel_node_master/models/inherited_res_partner.py @@ -12,3 +12,5 @@ class ResPartner(models.Model): # As res.partner has already a `user_ids` field, you can not use that name in this inheritance node_user_ids = fields.One2many('hotel.node.user', 'partner_id', 'Users associated to this partner') + + # TODO Override write for updating in remote nodes