ORM:
bugfix on child_of on many2many Project: start date Partners: Click on a category to get partners (chilf_od) bzr revid: fp@tinyerp.com-34022ebc4df94ad47bcb900f6bc73ceda15fda4d
This commit is contained in:
parent
0dd6a5e1df
commit
5ef2194dc0
|
@ -321,7 +321,7 @@
|
|||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_partner_form">
|
||||
<field name="name">Partner</field>
|
||||
<field name="name">Partners</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">res.partner</field>
|
||||
<field name="view_type">form</field>
|
||||
|
@ -491,7 +491,7 @@
|
|||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="action_partner_category">
|
||||
<field name="name">Partner Categories Architecture</field>
|
||||
<field name="name">Partner categories</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">res.partner.category</field>
|
||||
<field name="view_type">tree</field>
|
||||
|
@ -500,8 +500,28 @@
|
|||
</record>
|
||||
<menuitem name="Partners/Configuration/Categories" action="action_partner_category" id="menu_partner_category"/>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_partner_by_category">
|
||||
<field name="res_model">res.partner</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('category_id','child_of', [active_id])]</field>
|
||||
</record>
|
||||
<record model="ir.values" id="ir_action_partner_by_category">
|
||||
<field name="key2" eval="'tree_but_open'"/>
|
||||
<field name="model" eval="'res.partner.category'"/>
|
||||
<field name="name">Open partners</field>
|
||||
<field name="value" eval="'ir.actions.act_window,%d'%action_partner_by_category"/>
|
||||
<field name="object" eval="True"/>
|
||||
</record>
|
||||
|
||||
|
||||
<menuitem
|
||||
name="Partners/Partners/Partners by categories"
|
||||
action="action_partner_category"
|
||||
id="menu_partner_category_main"/>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_partner_category_form">
|
||||
<field name="name">Partner Categories</field>
|
||||
<field name="name">Partner categories</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">res.partner.category</field>
|
||||
<field name="view_type">form</field>
|
||||
|
|
|
@ -1495,12 +1495,20 @@ class orm(object):
|
|||
ids2 = [x[0] for x in self.pool.get(field._obj).name_search(cr, user, args[i][2], [], 'like')]
|
||||
else:
|
||||
ids2 = args[i][2]
|
||||
def _rec_get(ids):
|
||||
def _rec_get(ids, table, parent):
|
||||
if not ids:
|
||||
return []
|
||||
if 'active' in table._columns:
|
||||
ids2 = table.search(cr, user, [(parent,'in',ids),('active','in', [True, False])])
|
||||
else:
|
||||
ids2 = table.search(cr, user, [(parent, 'in', ids)])
|
||||
return ids + _rec_get(ids2, table, parent)
|
||||
def _rec_convert(ids):
|
||||
if not len(ids): return []
|
||||
cr.execute('select '+field._id1+' from '+field._rel+' where '+field._id2+' in ('+','.join(map(str,ids))+')')
|
||||
ids = [x[0] for x in cr.fetchall()]
|
||||
return ids + _rec_get(ids)
|
||||
args[i] = ('id','in',ids2+_rec_get(ids2))
|
||||
return ids
|
||||
args[i] = ('id','in',_rec_convert(ids2+_rec_get(ids2, self.pool.get(field._obj), table._parent_name)))
|
||||
else:
|
||||
if isinstance(args[i][2], basestring):
|
||||
res_ids = [x[0] for x in self.pool.get(field._obj).name_search(cr, user, args[i][2], [], args[i][1])]
|
||||
|
|
Loading…
Reference in New Issue