1. 程式人生 > >[Odoo12基礎教程]之第一篇-建立Todo應用

[Odoo12基礎教程]之第一篇-建立Todo應用

宣告:

本教程基於 Ruter 老師的 [Odoo基礎教程系列] ,Ruter老師教程的連結地址為:Odoo基礎教程系列   。

至於為什麼已經有了Ruter老師的教程,還要自己再搬移一份呢?是基於一下幾點考慮的:

1.雖然 Ruter 老師的教程可以說已經非常詳細了,但因為字數限制難免還會有一些步驟需要讀者自己去做,這其中讀者自己操作時可能會出錯;

2.Ruter 老師的教程是基於Odoo11進行指導的,但現在Odoo13即將釋出了,11可能有點落伍了;

3.自己學到的知識才是自己的,將學習中的過程和問題記錄下來,才是屬於自己的知識。

話不多說,下面讓我們進行正題吧。

 

本章內容總結

  • 1.專案前置準備
  • 2.建立模組,模組的簡單配置
  • 3.model模型及模組安裝
  • 4.建立選單檢視
  • 5.新增應用到應用列表
  • 6.建立任務列表檢視。

 

專案初始準備

如果你的odoo環境還沒有配合好的話,請參考我的另一篇文章:win10中odoo12環境配置

在配好環境之後,如果要啟動專案,需要新增如下配置:

1.將odoo-bin檔案放在odoo原始碼下,如果沒有odoo-bin檔案,可以將odoo原始碼下的一個odoo.py檔案複製並更名為odoo-bin;

2.在 odoo原始碼/setup/odoo.conf中新增odoo配置,內容如下:

3.pycharm下專案啟動配置,在綠色倒三角形旁邊

4.在odoo原始碼的目錄下建立一個myaddons資料夾,用來存放自己編寫的odoo應用/模組,這裡我的odoo原始碼是從gitee上下載的odoo12原始碼;

為了讓odoo可以檢索到我們自定義myaddons下的模組,我們要將myaddons的路徑加入到模組檢索路徑下

在 odoo.conf 檔案下新增如下配置:

addons_path=E:\YifChanSoft\Odoo\OdooSave\odoo_gitee\odoo\addons,E:\YifChanSoft\Odoo\OdooSave\odoo_gitee\myaddons

前一個是系統模組的路徑,後面一個是我們自定義模組資料夾的路徑

 

Todo應用

建立模組

在配置好環境之後,win10下執行以下命令可以建立一個應用

python odoo-bin scaffold todo myaddons

以上命令代表,在myaddons目錄下建立一個名為todo的模組。

目錄如下:

建立好todo模組後,我們在 __mainfest__.py 編寫模組的清單檔案:

__mainfest__.py

{
    'name': "todo",  # 應用/模組名
    'summary': """todo task""",  # 對應用/模組的摘要
    'description': """Todo task-list the things you need to do.""",  # 對應用/模組的描述
    'author': "YifChan",  # 作者
    'application': True,  # 將模組變成一個應用,可以在應用中搜索到
    'sequence': 1,  # 將應用/模組排在所有應用/模組的第一位
}

 

model模型及模組安裝

在我們的todo應用中,todo任務模型要有 “待辦任務”和“已完成”兩個欄位,

因此,我們在models/models.py中加入如下程式碼:

models/models.py

from odoo import models, fields, api


class TodoTask(models.Model):
    _name = 'todo.task'
    _description = '待辦事項'

    name = fields.Char('描述', required=True)
    is_done = fields.Boolean('已完成?')

在models/__inti__.py中新增如下程式碼:

from . import models

 

此時我們的專案已經可以在應用中被找到了

開啟瀏覽器進入 http://127.0.0.1:8069 ,如果你是第一次進入的話,可能需要進行如下配置

其中各個的含義如下:

  • master password:資料庫中超級管理員的密碼
  • database name:將為你現在odoo原始碼建立的pg資料庫
  • email:odoo管理員,可以不是郵箱,名字任取
  • password:odoo管理員密碼

 

填寫進入後,我們點選頁面左上角的田字形符號,選擇引數設定,點選右邊的 啟用開發者模式,截圖如下:

不要糾結我左上角的todo,這是因為我已經裝好並配置好了,原來只有todo下面的兩列。

啟用開發者模式之後,我們繼續點選田字形符號裡的應用,然後點選導航條上的重新整理本地模組列表。

這樣我們就可以在右上角的搜尋框中搜索todo了,如果是模組的話,記得叉掉應用後再查詢模組名,這裡因為我們已經配置了todo為應用,所以可以直接查詢,查詢結果如下:

點選安裝,然後會重新整理,但是重新整理後你會發現還是回到了應用頁面,並且再次搜尋todo後,會顯示已安裝。

我們還不能進入todo應用頁面,這是因為我們還沒有給todo新增應用入口,下面我們來進行新增。

 

建立選單

在views資料夾下,我們建立一個 views/todo_menus.xml 檔案,並新增如下內容

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <!-- 主選單定義 -->
        <menuitem id="menu_todo" name="Todo"/>
        <!-- 選單動作定義 -->
        <record id="action_todo_task" model="ir.actions.act_window">
            <field name="name">待辦事項</field>
            <field name="res_model">todo.task</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="target">current</field>
        </record>
        <!-- 子選單定義 -->
        <menuitem action="action_todo_task" id="submenu_todo_task" name="待辦事項"
                  parent="menu_todo" sequence="10"/>
    </data>
</odoo>

將todo_menus.xml檔案新增入data列表中:

__mainfest__.py

'data': [
        'views/views.xml',
        'views/templates.xml',
        'views/todo_menus.xml',
    ],

搜尋模組,點選模組右上角的三點,進行升級模組。

 

注意事項

  • 在odoo中,如果你修改了xml檔案,你所做的修改要升級應用後才能生效;
  • 如果你修改了py檔案,要重啟專案並且升級應用後才能使修改生效;但是我個人習慣,只要修改了,就重啟專案並且升級應用。
  • 當你新增一個xml檢視檔案或者許可權檔案後,要將檔案放入應用下的__mainfest__.py檔案的data列表中。
  • 當你新建了一個python相關的資料夾,要在專案下的__init__.py檔案中引入資料夾;
  • 當你在應用下的某個資料夾中新建了一個要自動初始化的py檔案,要在該資料夾中的__init__.py檔案中引入你所新增的py檔案。

以上幾點很重要,故在此統一列出,在後面可能不會再贅述,請讀者牢記。

 

新增應用到應用列表

到了上一步其實我們還是不能觀察到變化,這是因為我們還沒有新增應用到應用列表中,即左上角的田字形列表中,先展示一下效果圖:

 為了實現這個,我們要確保一下三點:

  • 1,有model模型,
  • 2,在model模型的基礎上,menu.xml中有具體子選單項及動作
  • 3,在csv許可權中有檢視model的許可權並將csv檔案新增到data列表中

前面我們已經實現了model模型,和選單xml,接下來我們實現第三點,

我們給security/ir.model.access.csv檔案中新增如下內容:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_todo_task,todo.task,model_todo_task,,1,1,1,1

這裡是給todo.task模型賦予增刪改查的許可權。

做完這個我們還要將這個檔案新增到data列表中,其實只要解開該檔案的註釋即可,如下:

'data': [
        'security/ir.model.access.csv',
    ],

 

重啟專案,升級模組。

至此,我們可以點選左上角的下拉選單並可以點選todo應用來進入應用,我們可以看到如下內容:

 你可以點選建立一個任務看看。

 

建立任務列表檢視

通過上一步我們已經可以看到任務列表了,這個是系統為我們自動配置的檢視。

但是我們只能看到任務的name欄位,而無法直接看見任務是否完成,此時,我們可以配置自己的檢視來按照自己的需求來顯示任務列表。

建立 views/todo_views.xml,並在其中加入如下內容

<odoo>
    <data>
        <!-- 待辦事項列表顯示檢視 -->
        <record id="todo_task_view_tree" model="ir.ui.view">
            <field name="name">todo.task.view_tree</field>
            <field name="model">todo.task</field>
            <field name="type">tree</field>
            <field name="arch" type="xml">
                <tree string="Todo">
                    <field name="name"/>
                    <field name="is_done"/>
                </tree>
            </field>
        </record>
    </data>
</odoo>

將todo_view.xml加入data列表中。

升級應用後我們可以看到如下內容:

本節內容基本到此結束了。

&n