iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Odoo

利用【AI】工具,聰明進行 Odoo 程式開發系列 第 16

Day16:個案一:學校圖書管理(12)-網站圖書預約-新增網頁選單

  • 分享至 

  • xImage
  •  

使用者故事

作為一名讀者,我希望能提交購書建議,並能查看建議的處理進度,以參與圖書館的館藏建設。

2.1.在網站新建page,直接用xml在website.page新建,不要在手動建立
2.讓讀者查看購書建議處理進度,並新增一按鈕,提交購書建議,
2.在後台管理面新增選單查看購書建議,並設定處理進度

GPT重點回應

1. 建立購書建議模型

models/library_book_suggestion.py

from odoo import models, fields, api
from datetime import date

class LibraryBookSuggestion(models.Model):
    _name = 'library.book.suggestion'
    _description = '購書建議'

    name = fields.Char(string='書名', required=True)
    author = fields.Char(string='作者')
    isbn = fields.Char(string='ISBN')
    suggested_by = fields.Many2one('res.users', string='建議人', default=lambda self: self.env.user, readonly=True)
    suggestion_date = fields.Date(string='建議日期', default=fields.Date.context_today, readonly=True)
    state = fields.Selection([
        ('submitted', '已提交'),
        ('in_progress', '處理中'),
        ('accepted', '已採納'),
        ('rejected', '已拒絕')],
        string='狀態', default='submitted', tracking=True)
    note = fields.Text(string='備註')

3. 建立網站頁面(透過 XML 定義)

我們將使用 XML 直接在 website.page 中創建一個頁面。

views/library_book_suggestion_templates.xml

4. 建立控制器

我們需要建立控制器來處理頁面的請求和表單的提交。

controllers/library_book_suggestion_controller.py

5. 在後台管理面新增選單和視圖

views/library_book_suggestion_views.xml
views/library_book_suggestion_views.xml

6. 新增網頁page及選單


本章小節

我們實現了讀者提交購書建議並查看處理進度的功能,並將其整合到圖書館網站中。特別地,我們著重在網站頁面的創建和網站選單的配置上,讓讀者能夠在網站的主選單中方便地訪問購書建議功能。

網頁選單的應用

1. 建立網站頁面

我們透過 XML 定義的方式,直接在 website.page 中創建了一個新的網站頁面,供讀者提交購書建議並查看自己的建議處理進度。

以下是我們在 XML 中定義的 website.page 記錄:

<record id="library_book_suggestion_page" model="website.page">
    <field name="name">購書建議</field>
    <field name="is_published">True</field>
    <field name="website_published">True</field>
    <field name="url">/my/booksuggestions</field>
    <field name="view_id" ref="library_management.library_book_suggestion_template"/>
</record>
  • 說明
    • name:頁面的名稱,顯示在後台和前台。
    • is_published:設定為 True,確保頁面已發布,可供訪問。
    • website_published:設定為 True,確保頁面在網站上可見。
    • url:頁面的訪問路徑,讀者可以通過此 URL 訪問購書建議頁面。
    • view_id:引用了我們定義的購書建議頁面的模板,需要確保模板已正確定義並加載。

2. 添加網站選單

為了讓讀者能夠方便地訪問購書建議頁面,我們在網站的主選單中添加了一個新選項。以下是我們在 XML 中定義的 website.menu 記錄:

<record id="menu_library_book_suggestion" model="website.menu">
    <field name="name">購書建議</field>
    <field name="page_id" ref="library_management.library_book_suggestion_page"/>
    <field name="parent_id" ref="website.main_menu"/>
    <field name="sequence" type="int">70</field>
</record>
  • 說明
    • name:選單的名稱,顯示在網站的導航欄中。
    • page_id:關聯到我們創建的 website.page,當用戶點擊選單時,將打開該頁面。
    • parent_id:指定選單的父級,這裡我們設置為網站的主選單。
    • sequence:控制選單的顯示順序,數值越小,顯示越靠前。

https://ithelp.ithome.com.tw/upload/images/20240929/20102255jQGnLKLKeK.jpg

結語

我們了解了如何在 Odoo 中使用 XML 直接定義網站頁面和選單,並將其與自定義的模板和控制器結合,實現特定的功能需求。這種方式不僅靈活,而且易於維護,為我們的圖書館系統提供了良好的擴展性。

同時,我們要注意開發過程中,細節的重要性。例如,模組名稱的統一、模板引用的正確性、文件加載順序等,都可能影響到功能的實現和系統的穩定性。遇到問題時,我們需要冷靜分析,從多個角度檢查,才能找到解決方案。

詳細程式碼,可查看github修改記錄

https://github.com/kulius/odoo17_ithelp

上一篇
Day15:個案一:學校圖書管理(11)-網站查詢圖書
下一篇
Day17:個案一:學校圖書管理(13)-統計表及報表
系列文
利用【AI】工具,聰明進行 Odoo 程式開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言