跳至內容
yuanchih-home
  • 主頁
  • 數位創新生態系
  • Odoo台灣研究所
  • 關於我們
  • 聯絡我們
  • 0
  • 登入
  • 聯絡我們
yuanchih-home
  • 0
    • 主頁
    • 數位創新生態系
    • Odoo台灣研究所
    • 關於我們
    • 聯絡我們
  • 登入
  • 聯絡我們

【Odoo 開發分享】如何建立第一個 Odoo 應用程式(一)

  • 所有網誌
  • Odoo台灣研究所
  • 【Odoo 開發分享】如何建立第一個 Odoo 應用程式(一)
  • 2018年11月13日 作者
    【Odoo 開發分享】如何建立第一個 Odoo 應用程式(一)
    info@yuanchih-consult.com
    | 未有評論

    大家好,

    之前的文章有討論如何使用開發者模式建立一個應用程式,這次我們將用程式碼的方式建立第一個 Odoo 應用程式:一個簡單的待辦事宜 (To-Do) 應用程式。它能夠讓我們加入新任務,並將這些任務標記為已完成,最後清除所有已完成任務的任務列表。

    從基礎知識開始:建立並安裝一個新模組,可以進行更新開發時所做的修改。

    Odoo 遵循類似 MVC 的體系結構,我們將在 To-Do 的應用程式中實作各層:

    • model, 定義應用程式資料的結構
    • view, 描述使用者界面
    • controller, 應用程式的商務邏輯

    接著會設定存取控制的安全性,最後再幫模組加入一些說明和品牌訊息。

    透過這些方法,您將能夠逐漸了解組成應用程式的基本建構,並從零開始建構 Odoo 模組。

    建立一個新的插件 (addon) 模組

    一個插件 (addon) 模組是一個包含 Odoo 功能的目錄。它可以加入新功能或修改現有功能。插件模組目錄必須包含 __manifest__.py 描述檔,以及其他檔案目錄。

    某些插件模組屬於應用程式。這些用於 Odoo 的應用程式,通常會有自己的 top menu。它們為 CRM 或 HR 等功能提供核心要素。因此,它們會顯示在 Odoo Apps 中。

    另一種非應用程式模組插件會為這些應用程式增加額外的功能。一種簡單的區分方法如下:

    • 如果您的模組向 Odoo 加入新功能或主要功能,則可能應該是一個應用程式。
    • 如果模組只是對現有應用程式的功能進行更改,那麼它可能是標準的插件模組。

    結論:

    插件 (addon) 模組分為兩種:

    • 獨立功能的應用程式
    • 增加功能的輔助程式

    建立模組的基本架構

    客製化的模組應該要與 Odoo 的完整原始碼區分。而我們的程式碼應該保存在自己的目錄中,而且絕不能混淆 Odoo 的原始碼。

    因此,為了保管我們的自定義模組,我們將使用一個新的目錄叫 custom-addons。

    Odoo 插件模組是一個包含 __manifest__.py 描述檔的目錄。需要被 Python 導入 (import),所以它也必須有一個 __init__.py。

    模組的目錄名稱是其技術名稱。我們將使用 todo_app。技術名稱必須是有效的 Python 標識符號:

    以字母開頭,並且只能包含字母,數字和下劃線字符。

    如果使用命令行,可以使用以下命令初始化我們的模組目錄,其中有一個空的 __init__.py:

    $ mkdir -p ~/odoo-dev/custom-addons/todo_app
    $ touch ~/odoo-dev/custom-addons/todo_app/__init__.py
    

    接下來,我們需要加入描述檔。它應該只包含一個 Python 字典,包含大約十幾種可能的屬性。

    現在,使用以下內容建立 __manifest__.py 以及 __init__.py:

    {
        'name': 'To-Do Application',
        'description': 'Manage personal to-do tasks.',
        'author': 'Daniel Reis',
        'depends': ['base'],
        'application': True,
    }
    

    依賴 depends 屬性是一個與其他模組相依的列表。安裝此模組後,Odoo 將自動安裝它們。這不是強制性屬性,但建議保留。

    如果不需要特定的依賴關係,至少應該依賴核心基礎模組。要小心確保所有的依賴關係都有明確設置;

    否則,模組可能無法安裝在乾淨的資料庫中(由於缺少依賴關係),或者如果偶然其他所需模組載入後出現載入錯誤。

    目前 todo_app 應用程式,暫時不需要任何特定的依賴關係,因此我們只依賴於基礎模組。

    為了簡潔起見,我們選擇僅使用一些基本描述符號:

    • name: 是帶有 addon 模組標題的字串。
    • description: 是一個帶有功能描述的長文字,通常採用 RST 格式。
    • author: 是作者姓名。它是一個字串,但可以包含以逗號分隔的名稱列表。
    • depends: 依賴的插件模組的列表。它們將在此模組之前自動安裝。
    • application: 是一個 Boolean flag,宣告 addon 模組是否應該作為 Apps 列表中的應用程式。
    • summary: 是顯示為模組副標題的字串。預設情況下 version 是 1.0。它應遵循版本規則(有關詳細訊息,請參閱 http://semver.org/ )。在我們的模組版本之前使用 Odoo 版本是一個好習慣,例如:11.0.1.0。
    • license identifier: 預設為 LGPL-3。
    • website: 是一個 URL,用於搜尋有關該模組的更多訊息。這可以幫助人們找到更多文件或問題跟踪器來提交錯誤和建議。
    • category: 是一個包含模組功能類別的字符串,預設為 Uncategorized。可以在 Settings | User | Groups 的“應用程式”欄位下拉列表中找到現有類別的列表。

    這些其他描述符鍵也可用:

    • installable: 預設為 True,但可以設置為 False 來禁用模組。
    • auto_install: 如果設置為True,將在所有依賴項已安裝後立即自動安裝。它用於“膠水”模組,一旦兩個功能安裝在同一個實例中,它們就會將兩個功能連接在一起。

    增加一個圖示

    很簡單,只需要將一個 static/description/icon.png 加入到模組中。

    請複製 odoo/addons/note/static/description/icon.png 檔案到 custom-addons/todo_app/static/description 目錄中

    $ cd ~/odoo-dev
    $ mkdir -p ./custom-addons/todo_app/static/description
    $ cp ./odoo/addons/note/static/description/icon.png ./custom-addons/todo_app/static/description

    licenses

    為您的工作選擇許可證非常重要,您應該仔細考慮您的最佳選擇及其影響。 Odoo 模組最常用的許可證是 GNU 寬通用公共許可證 v3(LGPLv3)和 Affero 通用公共許可證 v3(AGPLv3)。 LGPL更寬容並且允許商業修改,而不需要共享相應的原始碼。 AGPL 是一個更強大的開源許可證,並且需要服務託管來共享源程式碼。透過 https://www.gnu.org/licenses/ 可以了解更多關於 GNU 許可的訊息。

    安裝新模組

    我們現在有一個最小結構的插件模組,而且可以安裝在的 Odoo 中。而 Odoo Server 需要知道 todo_app 模組目錄,並且讓它們可以安裝。

    加入插件模組的路徑

    要為 Odoo 提供新模組,需要將包含該模組的目錄位置告訴 Odoo,然後更新 Odoo 模組列表。

    $ cd ~/odoo-dev
    $ ./odoo/odoo-bin -d todo --addons-path="custom-addons,odoo/addons" --save
    

    –save 選項保存您在配置檔案中使用的選項。這讓我們無需每次重新啟動服務器時都重複它們; 只需執行 ./odoo-bin 並使用上次保存的選項。

    您可以使用 -c 選項指定要使用(並保存到)的配置檔案和位置。

    仔細查看服務器日誌。它應該有一個 INFO ? odoo: addons paths:[…] 訊息,同時包括 custom-addons 目錄。

    安裝新模組

    在可以安裝新的插件模組之前,需要更新模組列表。

    這可以從應用程式頂層菜單和更新應用程式列表選項完成。它更新模組列表,將自上次更新以來可能加入的所有模組加入到列表中。請記住,我們需要為此選項啟用開發者模式才可見。

    確保您的 Web 客戶端會話使用正確的資料庫。您可以在右上角檢查:資料庫名稱顯示在括號中,緊跟在使用者名後面,這是一種限制服務器僅使用預期資料庫的方法。

    在 Odoo 11.0 之前,這是透過附加選項 --db-filter=^MYDB$ 完成的。而 Odoo 11.0 則改成 -d(或 --database)會自動執行該過濾器。

    Apps 選項向我們顯示可用模組的列表。預設情況下,它只顯示應用程式模組。由於我們已經建立了一個應用程式模組,因此我們不需要移除該過濾器來查看它。

    在搜索中鍵入 todo,你應該看到我們的新模組,準備好安裝:

    現在點擊模組的安裝按鈕,一個新的 Odoo 模組就安裝好了(但還沒有功能)!

    網誌: Odoo台灣研究所
    # Odoo Odoo在地化 模組開發
    登入 發表評論
    【Odoo 開發分享】如何建立第一個 Odoo 應用程式(二)
    取得聯絡
    追蹤我們
    版權所有 © 元植管理顧問有限公司
    由 Odoo - 最強的 開源電商平台 驅動