iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
Odoo

Odoo 魔法學院: 一步一腳印帶你成為客製化大師系列 第 5

[Day05] 開始第一個專案 (續續集)(真的是最後一個了)

  • 分享至 

  • xImage
  •  

今天的目標

  • 建立新Model
  • 讓Model在使用者介面中使用
  • 配置使用者權限
  • 創造View

建立新Model

這邊讓我們的待辦事項清單應用程式有一個資料庫結構,提供我們要使用的資料結構並儲存。
首先Settings裡面,點選Technical->Database Structure->Models,然後點選new,
填寫基本資料:
- Model Description:To-do Item
- Model:x_todo_item
底下Fields,點選Add a line,需要去新增屬性:
- Field Name: x_is_done
- Field Label: Is Done?
- Field Type: boolean
如果不想每個人都可以選擇,這邊就可以去限制,一樣點選Add a line:
- Field Name: x_work_team_ids
- Field Label: Work Team
- Field Type: many2many
- Related Model: res.partner
- Domain: [('x_is_work_team', '=', True)]
輸入跟儲存內容後,就得到資料庫,接下來就要讓使用者可以存取。

讓Model在使用者介面中使用

Technical->User Interface->Menu Items
- Menu: To-do
- Action: 選擇 ir.actions.act_window,旁邊的下拉式選單中點Create and Edit:
-- Create: Action form
-- Action Name: To-do Items
-- External ID Object: x_todo_item (目標model的名稱)
儲存後,去看使用者介面卻沒有出現,就算重新整理也沒有,why?
因為目前使用者沒有權限去存取,之後就是要去配置使用者的權限。

配置使用者權限

使用者的權限會根據所屬的群組,我們需要建立一個群組,指派給有權存取的使用者:
Settings裡,Users & Companies->Group,新增以下:
- Name: To-Do User
- 下方Inherited,點選Add a line:
-- 選擇User types / Internal User
Tips:如果需要給予特定Model存取權限,最快的方式,就是使用群組下方的Access Rights,直接輸入Name跟Model選擇To-do Item,後面新增,給予建立、刪除、讀取、寫入的存取權,授予相應的權限。

建立完一個群組,指派一位管理員來管理:
在Users & Companies->Users選擇Mitchell Admin,在Access Rights裡面最下面會有一個To-do User,勾選起來,在待辦事項清單應用程式可以看到。
預設情況下,每個使用者都能讀取Model的所有資料,但在我們待辦事項清單應用程式中,不應該能看到其他人的待辦事項,所以可以根據要求設定規則。
那要如何設定呢?
- Settings->Technical->Security->Record,新增規則:
- Name: To-do User Own Items.
- Model:選擇剛剛一開始創建的Model(To-do Item)
- Access Rights: 勾選所有
- Rule Definition(Domain Filter): [('create_uid', '=', user.id)]
- Groups: add a line 選擇To-do User
規則這樣就設定完成了,讓每個人都只能看到自己的待辦事項。

建立View

我們做完待辦事項的model,最後就是要來建立View,讓使用者瀏覽現有紀錄。
回到Settings->Technical->User Interface->Views:
- View Name: To-do List View
- View Type: Tree
- Model: x_todo_item
- Architecture: 新增XML code

<tree>

  <field name="x_name" />

  <field name="x_is_done" />

</tree>

另外也可以變成表格顯示:
回上一頁,新增一個Views:
- View Name: To-do Form View.
- View Type: Form.
- Model: x_todo_item.
- Architecture: 新增XML code

<form>

  <group>

    <field name="x_name" />

    <field name="x_is_done" />

    <field name="x_work_team_ids"

           widget="many2many_tags"

           context="{'default_x_is_work_team': True}" />

  </group>

</form>

也可以讓搜尋框用特定自段搜尋。
再回上一頁,新增一個Views:

  • View Name: To-do Search View
  • View Type: Search
  • Model: x_todo_item
  • Architecture: 新增XML code
<search>

<filter name="item_not_done"

         string="Not Done"

         domain="[('x_is_done', '=', False)]" />

</search>

這樣我們的待辦事項應用程式就看起來完整許多。


上一篇
[Day04] 開始第一個專案 (續集)
下一篇
[Day06] 準備開發環境(終於踏出第一步了)
系列文
Odoo 魔法學院: 一步一腳印帶你成為客製化大師30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言