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:
Fabien Pinckaers 2007-07-30 18:23:17 +00:00
parent 0dd6a5e1df
commit 5ef2194dc0
2 changed files with 34 additions and 6 deletions

View File

@ -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>

View File

@ -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])]