开发案例
通过此案例,你可以了解到:
1.一个基本的OpenERP模块的构成
2.字段的定义方法
3.视图定义定义的方法(表单视图,列表视图,视图动作,菜单)
需求
| 1.输入和查询课程,把信息储存到课程对象里 |
| 2.课程包含以下信息:名称,价格,天数,开始日期,教师,学员 |
| 3.每个课程可以有多个学员,要记录学员的姓名、电话、电子邮件 |
| 4.课程可以添加教材和作业等文档附件 |
| 5.用户可以设置默认值以加速输入 |
| 6.可以按名称查询课程,也可以用其他信息查找课程,并保存常用查询条件 |
| 7.可以导出课程信息到excel文件,并支持导入 |
| 8.可以按日期查看课程,并调整课程时间 |
| 9.老师只能看到自己的课程 |
写一个模块
结构
模块名就叫做oecn_training,然后它下面有四个文件,分别如下。
--oecn_training
|--__init__.py
|--__openerp__.py
|--lesson.py
|--lesson_view.xml
__init__.py
__init__.py文件是Python 的模块描述,因为OpenERP模块也是一个普通的Python模块。
# -*- encoding: utf-8 -*-
import lesson #导入包含Python代码的所有文件和目录
__openerp__.py
__openerp__.py文件(在6.0之前的版本也叫__terp__.py)它包含一个Python的字典声明这个模块的相关信息:模块名字,依赖关系,说明和组成。
{
"name" : "OECN Training", #模块名
"version" : "1.0", #模块版本
"description" : 'OECN Training Demo', #模块说明
"author" : "Shine IT", #作者
"website" : "http://www.openerp.cn", #网址
"depends" : [], #依赖的模块
"update_xml" : ["lesson_view.xml"], #模块更新的时候会读入的文件
"installable" : True, #可否安装
"category":'Generic Modules/Others' #模块类型
}
lesson.py
# -*- coding: utf-8 -*-
from osv import fields, osv
class oecn_training_lesson(osv.osv):
_name = 'oecn.training.lesson'
_discription = 'OECN 培训课程'
_columns = {
'name':fields.char('课程名',size=64,select=True),
'date_start':fields.date('开始日期',select=True),
'total_day':fields.float('总天数',digits=(16,1)),
'teacher':fields.many2one('res.users','授课老师'),
'students':fields.many2many('res.partner',string='学生'),
'price':fields.float('价格',digits=(16,2)),
}
oecn_training_lesson()
lesson_view.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--定义表单视图-->
<record model="ir.ui.view" id="oecn_training_lesson_from_view">
<field name="name">oecn.training.lesson.form</field>
<field name="type">form</field>
<field name="model">oecn.training.lesson</field>
<field name="arch" type="xml">
<field name="name"/>
<field name="date_start"/>
<field name="total_day"/>
<field name="price"/>
<field name="teacher"/>
<field name="students" colspan="4"/>
</field>
</record>
<!--定义列表视图-->
<record model="ir.ui.view" id="oecn_training_lesson_tree_view">
<field name="name">oecn.training.lesson.tree</field>
<field name="type">tree</field>
<field name="model">oecn.training.lesson</field>
<field name="arch" type="xml">
<field name="name"/>
<field name="date_start"/>
<field name="teacher"/>
<field name="price" sum="合计"/>
</field>
</record>
<!--定义视图动作-->
<record model="ir.actions.act_window" id="action_oecn_training_lesson">
<field name="name">oecn.training.lesson.action</field>
<field name="res_model">oecn.training.lesson</field>
<field name="view_type">form</field>
<field name="view_mode">form,tree</field>
<field name="view_id" ref="oecn_training_lesson_tree_view"/>
</record>
<!--定义菜单-->
<menuitem id="oecn_menu" name="OECN"/>
<menuitem id="oecn_training_menu" name="OECN Training" parent="oecn_menu"/>
<menuitem id="oecn_training_lesson_menu" name="OECN training Lesson" parent="oecn_training_menu" action="action_oecn_training_lesson"/>
</data>
</openerp>
安装一个模块
1.确保在扩展视图下(右上角小齿轮->首选项->扩展)
2.更新模块列表(设置->模块->更新模块列表)
3.搜索自己的模块(设置->模块->模块)
4.安装后重启服务器
以上内容已经收录在 OpenERP中文顾问社区的wiki。
大家只要注册了就可以随意修改,欢迎大家添砖加瓦