c2c-oerpscenario team mailing list archive
-
c2c-oerpscenario team
-
Mailing list archive
-
Message #16768
[Bug 711919] Re: [TRUNK 3330] BUG in function parse when 2 condition and one of condion on one2many and other on active
Nice catch Serge, thanks, and the proposed patch is very much
appreciated.
In order to implement a proper fix, here is what I expect the code
should do for your example
if[('category_id.code','=','PATIENT'),('active',=,False)]:
1- first look for category_ids = [('code','=','PATIENT')] (possibly taking only active categories if there is an 'active' column in it)
2- then re-processing the domain transformed as [('category_id', 'in', category_ids), ('active','=',False)] which should work fine and consider only records with active=False that have one of these categories
PS: when proposing patches, do you have access to some command that can generate a real patch, such as "diff -u" or "bzr diff"? It can make it much easier for submitting them, and would also make them much more readable.
Thanks for reporting!
** Changed in: openobject-server
Importance: Undecided => Low
** Changed in: openobject-server
Status: Triaged => Confirmed
** Changed in: openobject-server
Milestone: None => 6.0.2
** Changed in: openobject-server
Assignee: (unassigned) => OpenERP's Framework R&D (openerp-dev-framework)
** Summary changed:
- [TRUNK 3330] BUG in function parse when 2 condition and one of condion on one2many and other on active
+ [TRUNK 3330] Search on mixed conditions including one2many and active=False is wrongly interpreted
--
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/711919
Title:
[TRUNK 3330] Search on mixed conditions including one2many and
active=False is wrongly interpreted
Status in OpenERP Server:
Confirmed
Bug description:
sample of condition
[('category_id.code','=','PATIENT'),('active',=,False)]
Description
When server parse
1 = search all partner with category code = patient , and add active =
True
2= search all partner active = False
Result = Found nothing, because active condiction not used in
one2many search
My solution (not the optimal solution, no time to do it)
before line 111 (i = -1)
add
active = False
for exp in self.__exp:
if exp[0] == 'active':
active = exp
replace line 153 (right1 = table.search(cr, uid, [(fargs[0],'in',
right)], context=context))
by
if active:
right1 = table.search(cr, uid, [(fargs[0],'in', right),active], context=context)
else:
right1 = table.search(cr, uid, [(fargs[0],'in', right)], context=context)
Note: in my example, Code is a field added in res.partner.category, so
to test it, bmaybe use field name.
References