我创建了一个模块来跟踪自定义硬件锁定设备(加密狗)。一切都很好,除了我一直在努力弄清楚如何添加将自定义模块添加到高级过滤器的功能,以便我们可以搜索具有与其关联的特定系列加密狗的客户。
这是我的 res_parter.py
from osv import fields, osv
class res_partner(osv.osv):
""" Inherits partner and adds CRM information in the partner form """
_inherit = 'res.partner'
def _dongle_count(self, cr, uid, ids, field_name, arg, context=None):
res = dict(map(lambda x: (x,0), ids))
# The current user may not have access rights for sale orders
try:
for partner in self.browse(cr, uid, ids, context):
res[partner.id] = len(partner.sale_order_ids)
except:
pass
return res
_columns = {
'dongle_count': fields.function(_dongle_count, string='# of Dongles', type='integer'),
'dongle_ids': fields.one2many('dongle', 'partner_id', 'Dongles')
}
res_partner()
和我的 res_partner_view.xml
<?xml version="1.0"?>
<openerp>
<data>
<record id="act_res_partner_2_dongle" model="ir.actions.act_window">
<field name="name">Dongles</field>
<field name="res_model">dongle</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context"></field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a dongle for this customer.
</p>
</field>
</record>
<!-- Partner kanban view inhert -->
<record id="res_partner_view_buttons" model="ir.ui.view">
<field name="name">res.partner.view.buttons</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="priority" eval="20"/>
<field name="arch" type="xml">
<xpath expr="//div[@name='buttons']" position="inside">
<button name="%(act_res_partner_2_dongle)d" type="action"
string="Dongles"
attrs="{'invisible': [('customer', '=', False)]}"/>
</xpath>
</field>
</record>
</data>
</openerp>
在查看了包括此在内的各种其他模块之后,我似乎无法弄清楚我应该添加的位置/其他内容以使我的新模块显示在高级搜索下拉列表中。