Skip to Content
Menu
This question has been flagged
1 Reply
3220 Views


<record id="action_import_sale_order_line_wizard" model="ir.actions.act_window">

    <field name="name">Import Material</field>

    <field name="type">ir.actions.act_window</field>

    <field name="res_model">import.sale.order.line.wizard</field>

    <field name="domain">[('proposal_id', '=', active_id)]</field>

    <field name="view_mode">tree,form</field>

    <field name="view_id" ref="configurator.import_sale_order_line_wizard_tree"/>

    <field name="binding_model_id" ref="model_proposals"/>

    <field name="binding_view_types">form</field>

    <field name="context">{'default_proposal_id': active_id}</field>

</record>

   


I want to make  to add this condition attrs="{'readonly': ['|', ('state', '!=', 'draft'), ('is_author', '=', False)]}"​. But where should I put it?


I've tried add {'invisible': [('state', '!=', 'draft'), ('is_author', '=', False)]}. But I'm getting error


<record id="action_import_sale_order_line_wizard" model="ir.actions.act_window">

    <field name="name">Import Material</field>

    <field name="type">ir.actions.act_window</field>

    <field name="res_model">import.sale.order.line.wizard</field>

    <field name="domain">[('proposal_id', '=', active_id)]</field>

    <field name="view_mode">tree,form</field>

    <field name="view_id" ref="configurator.import_sale_order_line_wizard_tree"/>

    <field name="binding_model_id" ref="model_proposals"/>

    <field name="binding_view_types">form</field>

    <field name="context">{'default_proposal_id': active_id}</field>

    <field name="attrs">{'invisible': [('state', '!=', 'draft'), ('is_author', '=', False)]}</field>

</record>


 

Avatar
Discard
Author Best Answer

While waiting, I already implement different approach to solve my problem. Instead of hiding the button, I prevent the user to access


I change my xml to add the "Import Material" button

<record id="action_import_sale_order_line_wizard2" model="ir.actions.server">

        <field name="name">Import Material</field>

        <field name="type">ir.actions.server</field>

        <field name="model_id" ref="model_proposals" />

        <field name="binding_model_id" ref="model_proposals" />

        <field name="state">code</field>

        <field name="code">action = records.action_import_sale_order_line_wizard()</field>

    </record>


Then in model_proposals I add new function to call the view


    def action_import_sale_order_line_wizard(self):

        if self.state != 'draft' or not self.is_author:

            raise UserError(_('You can only import sale order line in draft state and you are the author of this proposal'))

        return {

            'name': _('Import Material'),

            'type': 'ir.actions.act_window',

            'res_model': 'import.sale.order.line.wizard',

            'domain': [('proposal_id', '=', self.id,

            },

        }

Avatar
Discard
Related Posts Replies Views Activity
3
Jan 24
8629
1
Oct 23
8170
0
Apr 23
1468
3
Dec 23
20158
0
Mar 24
4839