单击一次后禁用按钮,在OpenERP的新选项卡中打开URL

时间:2014-12-29 15:01:15

标签: python openerp odoo

单击按钮(绿色箭头)后,它会在新的浏览器选项卡中启动一个URL,这是所需的行为,但按钮本身将被禁用。当我右键单击禁用按钮,然后选择"检查元素",我看到:

<button disabled="disabled" type="button" class="" title="Go!">

看起来OpenERP添加了属性&#34; disabled&#34;按钮功能&#34; action_go&#34;回报。

当然,我希望我的按钮在点击后保持启用状态。我怎么能这样做?

以下是表单上的样子:

enter image description here

以下是定义按钮的xml代码部分:

<!-- mrp_bom -->
        <record id="adamson_mrp_bom_form_view" model="ir.ui.view">
            <field name="name">adamson.mrp.bom.form.view</field>
            <field name="model">mrp.bom</field>
            <field name="type">form</field>
            <field name="inherit_id" ref="mrp.mrp_bom_form_view" />
            <field name="arch" type="xml">

                <xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='sequence']" position="before" >
                                         <field name="flag_bom_present" invisible="1" />
                                         <button class="oe_inline oe_stat_button" type="object" readonly="0" string="Go!" icon="gtk-go-forward" name="action_go" 
                     attrs="{'invisible':[('flag_bom_present','=',False)]}"  />
                                </xpath>

这是按钮操作代码:

class mrp_bom_line(osv.osv):
    _inherit = 'mrp.bom.line'

    def action_go(self, cr, uid, ids, context=None):
                bom_obj = self.pool.get('mrp.bom')
                action_obj = self.pool.get('ir.actions.act_window')
                id_s = action_obj.search(cr, uid,  [('name', '=','Bill of Materials' ), ('context', '=','{}' )])
                for rec in action_obj.browse(cr, uid, id_s, context=context):    
                        action = rec.id 
        url = '/web#id=%s&view_type=form&model=mrp.bom&action=' + str(action)
        for bom_line in self.browse(cr, uid, ids, context=context):
            if bom_line.product_id.default_code > '300':
                bom_ids = bom_obj.search(cr, uid, [('product_id', '=', bom_line.product_id.id)], context=context)
                if bom_ids:
                                        return {'type': 'ir.actions.act_url', 
                        'res_model': 'ir.actions.act_url',
                        'url':url % bom_ids[0] , 
                        'nodestroy': True, 
                        'target': 'new'}


        return True

1 个答案:

答案 0 :(得分:0)

在openerp 7中对我来说同样的问题。

但: 如果将按钮放在树中,它将无法工作。如果您将其放在表单上,​​则无法自动禁用&#34;

这是因为修复了错误: https://bugs.launchpad.net/openerp-web/+bug/1078157