ODOO OpenERP  8.0 开发基础教程连载一


ODOO OpenERP 8.0 开发基础教程连载一

www.chinamaker.net 2014-10-27 14:30:31 admin

ODOO OpenERP  8.0 开发基础教程连载一

作者:苏州远鼎信息技术有限公司(转载请保留此信息)

1.启动停止 Odoo server

         Odoo 使用客户机/服务器体系结构,其中客户端的 Web 浏览器通过 RPC 的方式访问 odoo 服务器。业务逻辑和扩展运行在服务器端,当然也支持将一些客户端特性(例如,新的数据表示诸如交互式地图添加到客户端。为了启动服务器,简单在命令行调用odoo.py,在某些情况下需要加入文件全路径 。服务器思可以通过在终端按两次 ctrl-c 或者kill掉相应的服务器进程终止。

2.构建Odoo模块

服务器和客户端扩展被打包为在数据库中的任选加载模块。Odoo模块可以添加全新的业务逻辑Odoo系统或者改变和扩展现有的业务逻辑一个模块可以创建你的国家的会计规则到Odoo通用会计系统下一个模块可能实现了一个车队的实时可视化管理Odoo一切都以模块开头和结尾

2.1 一个模块组成

一个Odoo模块可以包含多个元素业务对象(Business Objects)    声明为Python类这些资源会根据他们的配置被 Odoo 自动的持久化数据文件(Data Files)    XML或CSV文件中声明元数据视图或工作流配置数据模块参数演示数据等。网络控制器(Web controllers)    处理来自Web浏览器的请求静态网页数据(Static web data)    使用Web界面网页的图像CSS或JavaScript文件

2.2 模块结构

每个模块都是模块目录中的一个目录模块目录使用--addons路径选项指定技巧:大多数命令行选项可以使用配置文件设置        一个 Odoo 模块是由它的 Manifest 文件声明是强制性的,它包含了一个 Python 字典,声明模块的各种元数据该模块名称和说明他正常工作所依赖的 Odoo 模块列表,引用的数据文件...Manifest 文件的一般结构

{    'name': "MyModule",    'version': '1.0',    'depends': ['base'],    'author': "Author Name",    'category': 'Category',    'description': """    Description text    """,    # data files always loaded at installation    'data': [        'mymodule_view.xml',    ],    # data files containing optionally loaded demonstration data    'demo': [        'demo_data.xml',    ],}

模块也是一个名为 __init__.py 的 python package, 它用 import 引入这个模块的各种 python 文件。举个例子,如果这个模块只有一个文件 mymodule.py, __init_.py 文件内容可能只有这一句:

import mymodule

幸运的是,有一个机制帮助你创建一个模块。odoo.py 命令有一个子命令 scaffold 用来创建一个空模块:odoo.py scaffold

这个命令为你的模块创建了一个子目录,并且自动的创建了模块的各种文件。很多文件只有注释或者是XML。这些文件的使用会在这个教程中详细解释。作业:创建一个模块

使用上面的命令创建一个空模块 Open Academy, 并且安装到 odoo 中。1)调用命令 odoo.py scaffold openacademy addons2)调整你模块的 manifest 文件。3)不要动其它文件。Use the command line above to create an empty module Open Academy, and install it in Odoo.

  1. Invoke the command odoo.py scaffold openacademy addons.
  2. Adapt the manifest file to your module.
  3. Don’t bother about the other files
以下是生成的文件清单。随后我们详细解释。openacademy/__openerp__.py
openacademy/__init__.py
openacademy/controllers.py
Oopenacademy/demo.xml
penacademy/models.py
from openerp import models, fields, api
openacademy/security/ir.model.access.csv
openacademy/templates.xml

2.3 对象 - 关系映射(ORM)

Odoo的一个关键组成部分是 ORM 层避免了手工编写大部分SQL,并提供可扩展性和安全性服务[2]业务对象被声明为扩展模式,它们集成到自动化系统的持久性Python类模型可以通过定义中进行配置设置多个属性最重要的属性_name是必需的,它定义了模块在Odoo系统中的名称这里是一个模块的最小完整定义from openerp import modelsclass MinimalModel(models.Model):    _name = 'test.model'

2.5 模块的字段(Fields)

字段Fields定义了model 可以保存什么、存在哪里。Fields定义成 model 类的属性:

from openerp import models, fieldsclass LessMinimalModel(models.Model):    _name = 'test.model2'    name = fields.Char()

常见属性

象模块一样,字段 fields 也是可以通过把配置属性作为参数进行配置:
name = field.Char(required=True)

一些属性可以被所有字段使用,下面是最常见的几个:string (unicode, default: field’s name)字段在UI上的标签 (用户可见).required (bool, default: False)如果为True, 字段不能为空,当创建一个记录时它必须有一个值或者有默认值。help (unicode, default: '')长的形式,在用户界面上提供帮助提示index (bool, default: False)请求 Odoo 在数据库上对那个列创建用户索引。Requests that Odoo create a database index id="simple-fields">

简单字段(Simple fields)

字段可以分为两大类:simple fields 是atomic 值直接存储在模块的表中。和realtional fileds 关联本模块或者其他模块的记录。simple fields a例子是 Boolean, Date, Char等.

保留字段(Reserved fields)

Odoo 创建了一些在所有的模块(model)中都有的字段。这些字段由系统管理不能被写入。如果需要的时候可以读取:

id (Id)
the unique identifier for a record in its model
create_date (Datetime)
creation date of the record
create_uid (Many2one)
user who created the record
write_date (Datetime)
last modification date of the record
write_uid (Many2one)
user who last modified the record

特殊字段(Special fields)

默认情况下, Odoo 要求所有的字段的都有一个 name fileds 以便执行各种显示和查询动作。为这些目的使用的字段可以通过设置 rec name 覆盖。

作业  定义一个model定义一个新数据模块Course 在open academy 中.一个课程有名称title和描述。课程必须有名称title。编辑 openacademy/models.py 使它包含一个课程类。

openacademy/models.py
from openerp import models, fields, apiclass Course(models.Model):    _name = 'openacademy.course'    name = fields.Char(string="Title", required=True)    description = fields.Text()

数据文件(Data files)

Odoo 很大程度上是一个数据驱动系统。尽管模块的行为通过 python code 进行了个性化,但是模块(module)的部分数据在加载的时候已经被设置。

技巧

一些模块的存在仅仅是为了向 Odoo保存数据。模块的数据通过数据文件声明:带elements 的XML 文件. 每一个element创建或者更新一条数据库记录. model="{model name}" id="{record identifier}"> name="{a field name}">{a value}

  • model is the name of the Odoo model for the record
  • id is an external identifier, it allows referring to the record (without having to know its in-database identifier)
  • elements have a name which is the name of the field in the model (e.g. description). Their body is the field’s value.

数据文件必须通过 manefest 文件声明以便被夹加载,他们可以定义在'data'列表 (总是加载) or 或者在 'demo' 列表 (只有在演示模式才能被加载。).作业:定义一个演示数据(Define demonstration data)创建一个带几条演示数据填充的 courses 模块,编辑openacademy/demo.xml文件使其包含一些数据.

openacademy/demo.xml
             model="openacademy.course" id="course0">             name="name">Course 0             name="description">Course 0's description也可以是几行的                             model="openacademy.course" id="course1">             name="name">Course 1                     
                             model="ir.actions.act_window" id="course_list_action">             name="name">Courses             name="res_model">openacademy.course             name="view_type">form             name="view_mode">tree,form             name="help" type="html">                 class="oe_view_nocontent_create">Create the first course                

 

id="main_openacademy_menu" name="Open Academy"/> id="openacademy_menu" name="Open Academy" parent="main_openacademy_menu"/> id="courses_menu" name="Courses" parent="openacademy_menu" action="course_list_action"/>

来源:苏州远鼎官网


相关标签 TAG :  ODOO  OpenERP    8  0  开发基础教程  


苏州远鼎

运用前沿科学技术,苏州远鼎信息技术有限公司以开源管理软件产品为核心,为企业和政府组织提供软件及服务,是OpenERP(Odoo)专业服务商,中国开源管理软件服务市场的领跑者。

Read More

远鼎产品

联系远鼎

  • 苏州工业园区星湖街328号22栋301
  • +86-0512-69361217
  • odoo@chinamaker.net
  • www.chinamaker.net