← Back to team overview

c2c-oerpscenario team mailing list archive

[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