操作
简介
actions定义系统的行为来响应用户的动作;登录的新用户,双击invoice,点击动作按钮,…
简单的动作也有很多类型:
Window: 打开一个新窗口
Report: 打印报表
o Custom Report: The personalized reports o RML Report: The XSL:RML reports
Wizard: 开始向导
Execute: server端方法的执行。
Group: 在一个组中集合多个动作
发生动作的以下事件:
用户连接,
用户双击菜单项,
用户点击图标’print’和’action’.
Example of events
在OpenERP中,所有的动作都被描述了而没有配置。两个例子:
双击菜单项时打开窗口
用户连接
Opening of the menu
当用户打开菜单选择“Operations > Partners > Partners Contact”,下一步是给用户该动作承诺的信息。
在IR中查询动作
执行动作
如果这个动作类型是打开新窗口,它显示给用户:必须对选定的对象打开这个新窗口,并且它显示视图(form or list)和使用的文件。
用户要求这个对象返回必要的信息来显示在表单视图中,字段的描述和XML视图
用户连接
当一个新用户连接到服务器端时,客户端会搜索用于显示给该用户的首页动作。一般情况下,这个动作是:在‘Operations’部分打开菜单。
步骤是:
阅读用户文件来获取ACTION_ID
读取这个动作并且执行它
字段
Action Name
The action name
Action Type
一直是’ir.action.act_window’
View Ref
用于显示对象的视图
Model
对象公布的model
Type of View
视图类型(Tree/Form)
Domain Value
在视图中减少可视数据的domain
The view
view描述表单视图或是数据列表如何显示在屏幕上。视图可以是Form类型或是Tree类型,这个取决于他们显示一个表单来编辑还是列表来看所有数据。
有动作打开‘Tree’模式时,一个表单就会被调用。表单视图可以从列表形式中打开。
The domain
这个参数让你可以控制在搜索视图中,哪些资源可以显示。
例如,在invoice这个实例中,你可以定义一个动作,这个动作用于打开发票没有付费的视图。
domain用Python写的,是元组的列表。这个元组有三个元素:
测试必须完成的字段
用于测试的运算符(<, >, =, like)
已测试的值
如果你想要获得‘Draft’发票,使用以下的domain:[(‘state’,’=’,’draft’)]。
在简单的视图中,domain定义了资源,这个资源是树根(the roots of the tree)。而对于其他的资源,如果用户开发树的分支,那么即使他们不在domain中,也会被显示出来。
Window Action
Actions are explained in more detail in section “Administration Modules - Actions”. Here’s the template of an action XML record :
<record model="ir.actions.act_window" id="action_id_1">
<field name="name">action.name</field>
<field name="view_id" ref="view_id_1"/>
<field name="domain">["list of 3-tuples (max 250 characters)"]</field>
<field name="context">{"context dictionary (max 250 characters)"}</field>
<field name="res_model">Open.object</field>
<field name="view_type">form|tree</field>
<field name="view_mode">form,tree|tree,form|form|tree</field>
<field name="usage">menu</field>
<field name="target">new</field>
</record>
这里的
id是动作在表格“ir.actions.act_window”中的标识符。它必须是唯一的。
name是动作的名称(这个字段是必须的)
view_id是当动作被激活时要显示的视图的名称。如果这个字段没有定义,拥有最高优先级的(如果两个视图有相同的优先级,那么先定义的一类视图就会被使用。),并且与对象res_model相关的一类视图就会被使用。
domain是约束条件的列表,用于筛选搜索结果使更少的记录显示在视图上。约束条件列表用AND连接在一起:当所有的约束条件都满足时,表格记录就会显示在视图上。
context是显示在视图中的上下文字典,当动作被激活时它就会打开。在XML文件中上下文字典的声明和Python字典一样有相同的语法。想要知道更多关于上下文字典的信息可以看” The context Dictionary”这个章节。
res_model是这个动作发生的对象的名称。
view_type当某个动作必须打开一个新的表单视图时,这个字段的值是form,当某个动作必须打开一个新的列表视图时,这个字段的值是tree。
view_mode仅在view_type值是form时起作用,忽略其他的情况。四种可能的值是:
form,tree: 这个视图开始时显示为表单视图,当点击“alternate view button”时,列表视图就会显示。
tree,form: 这个视图开始时显示为列表视图,当点击“alternate view button”时,表单视图就会显示。
form: 这个视图显示为表单视图,不可能显示为列表视图。
tree: 这个视图显示为列表视图,不可能显示为表单视图。
(version 5 introduced graph and calendar views)
usage is used [+ TODO +]
target:视图会在新窗口打开,就像wizard似的。
context会传递给动作本身,并加入到全局上下文中。
<record model="ir.actions.act_window" id="a">
<field name="name">account.account.tree1</field>
<field name="res_model">account.account</field>
<field name="view_type">tree</field>
<field name="view_mode">form,tree</field>
<field name="view_id" ref="v"/>
<field name="domain">[('code','=','0')]</field>
<field name="context">{'project_id': active_id}</field>
</record>
他们想要告知用户的是,用户可以在新‘tab’打开一个新窗口.
Administration > Custom > Low Level > Base > Action > Window Actions
Examples of actions
This action is declared in server/bin/addons/project/project_view.xml.
<record model="ir.actions.act_window" id="open_view_my_project">
<field name="name">project.project</field>
<field name="res_model">project.project</field>
<field name="view_type">tree</field>
<field name="domain">[('parent_id','=',False), ('manager', '=', uid)]</field>
<field name="view_id" ref="view_my_project" />
</record>
This action is declared in server/bin/addons/stock/stock_view.xml.
<record model="ir.actions.act_window" id="action_picking_form">
<field name="name">stock.picking</field>
<field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_picking_form"/>
<field name="context">{'contact_display': 'partner'}</field>
</record>
Url Action
Wizard Action
下面是个显示wizard的.XML文件。
<?xml version="1.0"?>
<openerp>
<data>
<wizard string="Employee Info"
model="hr.employee"
name="employee.info.wizard"
id="wizard_employee_info"/>
</data>
</openerp>
wizard用wizard标签来声明。想要知道更多关于wizard XML的信息可以查看“Add A New Wizard”这个章节。
你也可以使用一下的xml entry在menu中加wizard。
<?xml version="1.0"?>
<openerp>
<data>
<wizard string="Employee Info"
model="hr.employee"
name="employee.info.wizard"
id="wizard_employee_info"/>
<menuitem
name="Human Resource/Employee Info"
action="wizard_employee_info"
type="wizard"
id="menu_wizard_employee_info"/>
</data>
</openerp>
Report Action
Report declaration
报表的解释在“Reports Reporting”章节。这有一个RML报表声明的XML文件。
<?xml version="1.0"?>
<openerp>
<data>
<report id="sale_category_print"
string="Sales Orders By Categories"
model="sale.order"
name="sale_category.print"
rml="sale_category/report/sale_category_report.rml"
menu="True"
auto="False"/>
</data>
</openerp>
报表使用report标签在“data”块中声明。报表标签中的不同参数有:
id : 一个标识符,必须是唯一的
string : 菜单文字用来调用报表
model : 报表会渲染的OpenERP对象
rml : the .RML report model. Important Note : Path is relative to addons/ directory.
menu : 不管报表是否通过客户端直接调用。如果报表通过wizard来调用,设置menu为False。
auto : 确定.RML文件是否必须使用默认的解析器解析。使用客户解析器可以为你的报表定义额外的功能。