Day3 Let's ODOO: 基本架构

ODOO source code下载: Github

Addons

ODOO是一个以MVC(Model、View、Controller)架构为主体的服务,一个addon可以想成一个模组或是模组扩充,而自制模组时别忘了将自己addon的路径加到config内的addons_path,接下来我们会介绍addon内的组成。

Addons
├─ __init__.py
├─ __manifest__.py
├─ controllers
│  ├─ __init__.py
│  └─ controllers.py
├─ data
├─ demo
├─ i18n 
├─ models
│  ├─ __init__.py
│  └─ models.py
├─ security
├─ static
└─ views
   └─ views.xml

__manifest __

我们以odoo/addons/base来讲解

manifest是在叙述你这个addons的详细资讯与相关设定

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

{
    'name': 'Base',
    'version': '1.3',
    'category': 'Hidden',
    'description': """
The kernel of Odoo, needed for all installation.
===================================================
""",
    'depends': [],
    'data': [
        'data/res.lang.csv',
        'data/res_lang_data.xml',
        'data/res_partner_data.xml',
        'data/res_company_data.xml',
        'data/res_users_data.xml',
        'data/report_paperformat_data.xml',
        'data/res_currency_data.xml',
        'data/res_country_data.xml',
        'data/ir_demo_data.xml',
        'security/base_groups.xml',
        'security/base_security.xml',
        'views/base_menus.xml',
        'views/decimal_precision_views.xml',
        'views/res_config_views.xml',
        'data/res.country.state.csv',
        'views/ir_actions_views.xml',
        'views/ir_config_parameter_views.xml',
        'views/ir_cron_views.xml',
        'views/ir_filters_views.xml',
        'views/ir_mail_server_views.xml',
        'views/ir_model_views.xml',
        'views/ir_attachment_views.xml',
        'views/ir_rule_views.xml',
        'views/ir_sequence_views.xml',
        'views/ir_translation_views.xml',
        'views/ir_ui_menu_views.xml',
        'views/ir_ui_view_views.xml',
        'views/ir_default_views.xml',
        'data/ir_cron_data.xml',
        'report/ir_model_report.xml',
        'report/ir_model_templates.xml',
        'views/ir_logging_views.xml',
        'views/ir_qweb_widget_templates.xml',
        'views/ir_module_views.xml',
        'data/ir_module_category_data.xml',
        'data/ir_module_module.xml',
        'report/ir_module_reports.xml',
        'report/ir_module_report_templates.xml',
        'wizard/base_module_update_views.xml',
        'wizard/base_language_install_views.xml',
        'wizard/base_import_language_views.xml',
        'wizard/base_module_upgrade_views.xml',
        'wizard/base_module_uninstall_views.xml',
        'wizard/base_export_language_views.xml',
        'wizard/base_update_translations_views.xml',
        'wizard/base_partner_merge_views.xml',
        'data/ir_actions_data.xml',
        'data/ir_demo_failure_data.xml',
        'views/res_company_views.xml',
        'views/res_lang_views.xml',
        'views/res_partner_views.xml',
        'views/res_bank_views.xml',
        'views/res_country_views.xml',
        'views/res_currency_views.xml',
        'views/res_users_views.xml',
        'views/ir_property_views.xml',
        'views/res_config_settings_views.xml',
        'views/report_paperformat_views.xml',
        'views/onboarding_views.xml',
        'security/ir.model.access.csv',
    ],
    'demo': [
        'data/res_company_demo.xml',
        'data/res_users_demo.xml',
        'data/res_partner_bank_demo.xml',
        'data/res_currency_rate_demo.xml',
        'data/res_bank_demo.xml',
        'data/res_partner_demo.xml',
        'data/res_partner_image_demo.xml',
    ],
    'test': [],
    'installable': True,
    'auto_install': True,
    'post_init_hook': 'post_init',
}

附上几个常用的参数

name: addon显示名称

summary: addon副标题

description: addon描述

version: addon版本

author:addon作者

website:addon相关连结页面

depends: addon需要用到odoo相关的model,让他能预先安装,

data:写好新的view、report时需要将路径写在里面odoo才会读取。

auto_install:是否自动安装

其他相关的mamifest参数在官方Document

Model

ODOO的model即是用自己一套ORM去操作postgreSQL,当定义好Model後ODOO便会更新db内的table,一个model内含有名称、继承父模型、参数设定、计算、约束...等等,是ODOO里面最重要的一块。

一个Model通常含有:

  • 对应Table名称(_name)
  • 继承的父Model (_inherit)
  • 栏位设定(fields.)
  • Methods

View

用来定义在ODOO上的使用者介面,全都采用XML定义,而许多元件与画面 ODOO都有templete可以引用,如果需要加上或修改属性可以透过Xpath去寻找原本Model的参数位置进行修改,唯一要注意的是当写好一份xml要记得加进__manifest__内,否则ODOO搜寻不到。

Controllers

透过继承Controller建立,并以@route()装饰器指定路径,以URL路径来控制请求,基本上常用到的就是跳转页面以及开发API。

Reports

存放关於报表的模型与报表的画面。

static

保存静态资源,如css、js、image...等等

Security

放置权限设定,保存不同group内对模型的CURD权限。

data

初始化资料储存处

i18n

存放翻译文件档案。

大致上的结构介绍完毕,接下来会慢慢介绍比较重要的部分,明天来介绍Model。


<<:  Day03 - [丰收款] 分析技术文件後,开始做个Nonce开胃菜吧!

>>:  从零开始的8-bit迷宫探险【Level 10】游戏故事及架构设计

第29天-CSS-影像-(3-3)

背景位置 background-position 可以使用这个属性将背景图片指定到想要的位置 有以下...

【Day24】闭包(Closure)

今天我要讲解的是闭包(Closure),在进入之前我们先来看一段程序码, 首先准备一个随机生成字串的...

[Day 30] 使用ChromeDriver来做单元测试(三)

同时开启多个浏览器 有时候可能需要多个浏览器来进行测试, 譬如说用多个浏览器来测试WebSocket...

DAY29 把程序装到手机里吧

前面讲了那麽多,但都还没在真实的手机上实作,今天就来试试吧 首先先把手机开启开发者人员选项,也许每支...

模板中的 Directive 指令 (下)

指令 Directive 表单绑定 使用 v-model 建立表单的双向资料绑定,ex: input...