odoo 开发笔记 --- 在更多里面添加按钮

转: http://www.lxway.com/12591444.htm

 

 

odoo里面有两种action: ir.actions.server,ir.actions.client_multi

1.Using ir.actions.server


        XXX
        ir.actions.server
        
        code
        self.do_somthing(cr,uid,ids,context)        

2.Using ir.actions.act_window


        xxxx
        xxx.xxx
        tree,form
        form
        
        new

ir.actions.server这种可以执行自己的python代码,写在服务器端 “code”对应的方法。

ir.actions.act_window 这种写在客户端

3.在“更多”里面增加按钮


        
        
        xxxx
        action
        client_action_multi
        

服务器Action (ir.actions.server)

可以通过action定位来触发复杂的服务端代码,需要两个与客户端相关的字段:

id -- 服务端action在数据库存储的id

context (可选) -- 执行服务端action的上下文环境
储存在数据库中的action可以基于state执行一些特别的动作,部分字段在state之间是相互共享的

model_id -- 与action相关联的model,在 evaluation contexts中可用

condition (可选) -- 使用服务端的 evaluation contexts 来执行python代码,如果是False则阻止action执行,默认值是True

动作类型是可以随意扩展的,默认的动作类型:

code -- 当调用action时执行的python代码,在code片段中可以定义一个action变量,会被返回给客户端用于指定下一个执行的action。

例: 执行完action_export_more方法后,执行action的动作


            批量打包
           
            code
           
                if context.get('active_model') == 'hr.amount.edcation' and context.get('active_ids'):
                    export_id =self.action_export_more(cr, uid, context['active_ids'], context=context)
                    action = {
                        'name': u'导出',
                        'view_type': 'form',
                        'view_mode': 'form',
                        'res_model': "hr.assessment.user.export",
                        'target':'new',
                        'domain': [],
                        'res_id': export_id,
                        'views': [(519 or False, 'form')],
                        'type': 'ir.actions.act_window',
                    } 
           

       

        
           
           
            批量打包
           
       


 

 

 

你可能感兴趣的:(python)