Odoo:act_window + refresh issue

时间:2018-03-06 16:52:53

标签: python odoo odoo-11

我真的很喜欢那个。 我在Odoo 11上。

这是我想要实现的目标:

  1. 我想在客户看板/树状视图中添加自定义默认搜索过滤器

  2. 此过滤器取决于用户的company_id 它看起来像这样(在python中)

  3. {'search_default_incompany_ids': self.env.user.company_id.name}

    以下是我的工作:

    选项1:

    起初我想过要替换" context"在现有的客户" act_window" : 在我看来:

    <record id="base.action_partner_form" model="ir.actions.act_window">
            <field name="context">{"search_default_customer":1, 'search_default_incompany_ids': user.company_id.name}</field>
        </record>
    

    =&GT;我试过&#34; user.company_id.name&#34;或&#34; company_id.name&#34;或许多东西,但无法访问此xml中的user或company_id ...

    =&GT;我只能访问&#34; uid&#34;我认为不足以回到&#39; company_id&#39;在xml(?)

    所以我去了一个python解决方案:

    选项2:

    在menuitem中,我重新定义了动作,并使用动作服务器,它自己调用python代码: 菜单项

    <menuitem id="sale.res_partner_menu"
                  parent="sale.sale_order_menu"
                  action="action_partner_form_custom_multicompany"
                  sequence="3" groups="sales_team.group_sale_salesman"/>
    

    动作服务器:

    <record id="action_partner_form_custom_multicompany" model="ir.actions.server">
            <field name="name">Customers</field>
            <field name="condition">True</field>
            <field name="type">ir.actions.server</field>
            <field name="model_id" ref="model_res_partner"/>
            <field name="state">code</field>
            <field name="code">action = model.list_all_customers()</field>
        </record>
    

    和python:

    @api.model
    def list_all_customers(self):
        context = {"search_default_customer": 1}
        if self.env.user.company_id:
            context.update({'search_default_incompany_ids': self.env.user.company_id.name})
    
        return {
            'type': 'ir.actions.act_window',
            'res_model': 'res.partner',
            'name': "Customers",
            'view_type': 'form',
            'view_mode': 'kanban,tree,form',
            'target': 'current',
            'context': context,
        }
    

    =&GT;现在,这可以用我想要的默认搜索过滤器显示看板/树视图。这正是我到目前为止所想要的......

    但是,现在从看板/树上,如果我打开一条记录,表格会打开,并且......如果我刷新表单页面:它会回到看板/列表!这是我的问题!

    当然,这不是原生menuitem + act_window的行为。

    我错过了什么?

    编辑:

    我注意到,在表单中,网址如下所示:web#id = 20105&amp; view_type = form&amp; model = res.partner&amp; menu_id = 98 =&gt;没有&#34;行动&#34;就像它在例如销售订单:web#id = 28&amp; view_type = form&amp; model = sale.order&amp; menu_id = 237&amp; action = 317这可能是因为所使用的操作是在python中而不是存储在DB中......是否存在解决这个问题?

    感谢您的帮助!

    AD

0 个答案:

没有答案