Odoo14 ir.actions.act_window

xml声明

复制代码
 1     <record id="res_company_user_action" model="ir.actions.act_window">
 2         <field name="name">Users</field>
 3         <field name="res_model">res.users</field>
 4         <field name="view_mode">tree,form,kanban</field>
 5         <field name="context">
 6             {
 7                 'form_view_ref':'ship_manage.res_company_user_view_form',
 8                 'tree_view_ref':'ship_manage.res_company_user_view_tree',
 9                 'kanban_view_ref':'ship_manage.res_company_user_view_kanban',
10                 'search_view_ref':'ship_manage.res_company_user_view_search'
11             }
12         </field>
13     </record>
复制代码
ir.actions.server 调用action。这样你就可以根据当前用户去过滤信息;当然你也可以选择ir.rule过滤域去实现。
复制代码
1     <record model="ir.actions.server" id="res_company_user_server_action">
2         <field name="name">Company User Server Action</field>
3         <field name="model_id" ref="base.model_res_users"/>
4         <field name="state">code</field>
5         <field name="code">
6 action = env.ref('ship_manage.res_company_user_action').read()[0]
7 action['domain'] = [('company_id','=',env.user.company_id.id)]
8         </field>
9     </record>
复制代码

ir.actions.server 手动配置action参数

复制代码
 1     <record model="ir.actions.server" id="res_company_action1">
 2         <field name="name">Company Server Action</field>
 3         <field name="model_id" ref="base.model_res_company"/>
 4         <field name="state">code</field>
 5         <field name="code">
 6 action = {
 7     'name':'Company Test',
 8     'type': 'ir.actions.act_window',
 9     'res_model': 'res.company',
10     'view_mode': 'form',
11     'view_type': 'form',
12     'target': 'main',
13     'res_id': env.user.company_id.id,
14     'context': {'form_view_ref':'ship_manage.res_company_view_form_test'}
15 }
16         </field>
17     </record>
复制代码

button事件调用action

复制代码
xml:
<button name="get_company_action" string="Company Action" type="object"/>

python:
def get_company_action(self):
        action =     self.env.ref('ship_manage.ship_manage_res_company_action').read()[0]  #这里你也可以自己去定义
        action['res_id'] = self.env.user.company_id.id
        return action

或者自定义:
def get_company_action(self):
  return {
      'name': _('Repair Bill'),
      'type': 'ir.actions.act_window',
      'res_model': 'bill.head',
      'view_mode': 'form',
      'target': 'main',
      'res_id': rb.id,
      'context': {
      'form_view_ref': 'ship.bill_head_view_form',
      }
    }
复制代码

 

js 事件调用action。这里和唯一区别是views。list指的是tree视图,第一个参数false指的是按优先级获取默认的视图。你也可以指定一个视图id,你需要ref去获取ir.actions.act_window的记录id。

复制代码
1         _onBtnClicked: function (ev) {
2             this.do_action({
3                 type: 'ir.actions.act_window',
4                 name: this.title,
5                 res_model: this.modelName,
6                 views: [[false, 'list'], [false, 'form']],
7                 domain: ev.data.domain,
8             });
9         },
复制代码

 actions 源码相对路径:odoo/odoo/addons/base/models/ir_actions.py

posted @   看一百次夜空里的深蓝  阅读(844)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示