ODOO source code下載: Github
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
我們以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
ODOO的model即是用自己一套ORM去操作postgreSQL,當定義好Model後ODOO便會更新db內的table,一個model內含有名稱、繼承父模型、參數設定、計算、約束...等等,是ODOO裡面最重要的一塊。
一個Model通常含有:
用來定義在ODOO上的使用者介面,全都採用XML定義,而許多元件與畫面 ODOO都有templete可以引用,如果需要加上或修改屬性可以透過Xpath去尋找原本Model的參數位置進行修改,唯一要注意的是當寫好一份xml要記得加進__manifest__
內,否則ODOO搜尋不到。
透過繼承Controller
建立,並以@route()
裝飾器指定路徑,以URL路徑來控制請求,基本上常用到的就是跳轉頁面以及開發API。
存放關於報表的模型與報表的畫面。
保存靜態資源,如css、js、image...等等
放置權限設定,保存不同group內對模型的CURD權限。
初始化資料儲存處
存放翻譯文件檔案。
大致上的結構介紹完畢,接下來會慢慢介紹比較重要的部分,明天來介紹Model。