From 18c5d0cb67061ed6019939aeff58d5d42b97b523 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Mon, 26 Jan 2015 14:10:46 +0100 Subject: [PATCH 1/4] [FIX] allow to change partner_id_display --- partner_relations/model/res_partner.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/partner_relations/model/res_partner.py b/partner_relations/model/res_partner.py index 68b744442..1dddfd913 100644 --- a/partner_relations/model/res_partner.py +++ b/partner_relations/model/res_partner.py @@ -69,6 +69,16 @@ class ResPartner(orm.Model): if value[0] == 0: relation_obj.create(cr, uid, value[2], context=context2) if value[0] == 1: + # if we write partner_id_display, we also need to pass + # type_selection_id in order to have this write end up on + # the correct field + if 'partner_id_display' in value[2] and 'type_selection_id'\ + not in value[2]: + relation_data = relation_obj.read( + cr, uid, [value[1]], ['type_selection_id'], + context=context)[0] + value[2]['type_selection_id'] =\ + relation_data['type_selection_id'] relation_obj.write( cr, uid, value[1], value[2], context=context2) if value[0] == 2: From a8d0f4bb8143b74a813bd6274c661b14b663c93e Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Wed, 28 Jan 2015 11:30:31 +0100 Subject: [PATCH 2/4] [FIX] logic error --- partner_relations/model/res_partner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/partner_relations/model/res_partner.py b/partner_relations/model/res_partner.py index 1dddfd913..3372407aa 100644 --- a/partner_relations/model/res_partner.py +++ b/partner_relations/model/res_partner.py @@ -21,7 +21,7 @@ ############################################################################## import time from openerp.osv import orm, fields -from openerp.osv.expression import is_leaf, OR, FALSE_LEAF +from openerp.osv.expression import is_leaf, AND, OR, FALSE_LEAF from openerp.tools import DEFAULT_SERVER_DATE_FORMAT from openerp.tools.translate import _ @@ -107,7 +107,7 @@ class ResPartner(orm.Model): context=context) if not relation_type_selection_ids: - result = OR([result, FALSE_LEAF]) + result = AND([result, [FALSE_LEAF]]) for relation_type_selection_id in relation_type_selection_ids: type_id, is_inverse = relation_type_selection\ From c0e19e41ff7b3c027cfc1d990b8b40314595ac1c Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Thu, 29 Jan 2015 17:13:07 +0100 Subject: [PATCH 3/4] [FIX] search in res.partner.relation.type to support translated searches --- partner_relations/model/res_partner.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/partner_relations/model/res_partner.py b/partner_relations/model/res_partner.py index 3372407aa..288802f50 100644 --- a/partner_relations/model/res_partner.py +++ b/partner_relations/model/res_partner.py @@ -103,8 +103,14 @@ class ResPartner(orm.Model): relation_type_selection_ids.append(arg[2]) else: relation_type_selection_ids = relation_type_selection\ - .search(cr, uid, [('name', arg[1], arg[2])], - context=context) + .search( + cr, uid, + [ + '|', + ('type_id.name', arg[1], arg[2]), + ('type_id.name_inverse', arg[1], arg[2]), + ], + context=context) if not relation_type_selection_ids: result = AND([result, [FALSE_LEAF]]) From edca46c71ccc983797398fff208df945308a58d6 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Thu, 29 Jan 2015 17:22:46 +0100 Subject: [PATCH 4/4] [FIX] search both sides of the relation isolated to avoid false positives --- partner_relations/model/res_partner.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/partner_relations/model/res_partner.py b/partner_relations/model/res_partner.py index 288802f50..ff307b36e 100644 --- a/partner_relations/model/res_partner.py +++ b/partner_relations/model/res_partner.py @@ -106,11 +106,18 @@ class ResPartner(orm.Model): .search( cr, uid, [ - '|', ('type_id.name', arg[1], arg[2]), - ('type_id.name_inverse', arg[1], arg[2]), + ('record_type', '=', 'a'), ], context=context) + relation_type_selection_ids.extend( + relation_type_selection.search( + cr, uid, + [ + ('type_id.name_inverse', arg[1], arg[2]), + ('record_type', '=', 'b'), + ], + context=context)) if not relation_type_selection_ids: result = AND([result, [FALSE_LEAF]])