iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0
Software Development

Let's ODOO 開發與應用30天挑戰系列 第 3

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。


上一篇
Day2 Let's ODOO: 開發者模式
下一篇
Day4 Let's ODOO: Model(1) Class & Attribute
系列文
Let's ODOO 開發與應用30天挑戰30

尚未有邦友留言

立即登入留言