โมดูลแรกของคุณ¶
ภาพรวม¶
บทนี้ช่วยให้คุณสร้างโมดูล Odoo แรกและปรับใช้ในโปรเจ็กต์ Odoo.sh ของคุณ
บทช่วยสอนนี้ต้องการ คุณสร้างโปรเจ็กต์บน Odoo.sh และคุณทราบ URL ของที่เก็บ Github ของคุณ
อธิบายการใช้ Git และ Github ขั้นพื้นฐานแล้ว
มีการตั้งสมมติฐานด้านล่าง:
~/src คือไดเร็กทอรีซึ่งเป็นที่ตั้งของที่เก็บ Git ที่เกี่ยวข้องกับโปรเจ็กต์ Odoo ของคุณ
odoo คือผู้ใช้ Github
odoo-addons คือที่เก็บข้อมูล Github
feature-1 คือชื่อของสาขาการพัฒนา
master คือชื่อของสาขาการใช้งาน
my_module คือชื่อของโมดูล
แทนที่สิ่งเหล่านี้ด้วยค่าที่คุณเลือก
สร้างสาขาการพัฒนา¶
จาก Odoo.sh¶
ในมุมมองสาขา:
กดปุ่ม
+
ถัดจากขั้นตอนการพัฒนาเลือกสาขา master ในรายการ Fork
พิมพ์ feature-1 ในอินพุต ถึง
เมื่อสร้างบิลด์แล้ว คุณสามารถเข้าถึงตัวแก้ไขและเรียกดูโฟลเดอร์ ~/src/user เพื่อเข้าถึงโค้ดของสาขาการพัฒนาของคุณ


จากคอมพิวเตอร์ของคุณ¶
โคลนพื้นที่เก็บข้อมูล Github ของคุณบนคอมพิวเตอร์ของคุณ:
$ mkdir ~/src
$ cd ~/src
$ git clone https://github.com/odoo/odoo-addons.git
$ cd ~/src/odoo-addons
สร้างสาขาใหม่:
$ git checkout -b feature-1 master
สร้างโครงสร้างโมดูล¶
การถอดแบบคำนวณของโมดูล¶
แม้ว่าจะไม่จำเป็น แต่การถอดแบบคำนวณก็ช่วยหลีกเลี่ยงความน่าเบื่อในการตั้งค่าโครงสร้างโมดูล Odoo พื้นฐานได้ คุณสามารถประกอบโมดูลใหม่ได้โดยใช้ไฟล์ปฏิบัติการ odoo-bin
จากตัวแก้ไข Odoo.sh ในเทอร์มินัล:
$ odoo-bin scaffold my_module ~/src/user/
หรือจากคอมพิวเตอร์ของคุณ หากคุณมี การติดตั้ง Odoo:
$ ./odoo-bin scaffold my_module ~/src/odoo-addons/
หากคุณไม่ต้องการรบกวนการติดตั้ง Odoo บนคอมพิวเตอร์ของคุณ คุณยังสามารถ :ดาวน์โหลด:ดาวน์โหลดเทมเพลตโครงสร้างโมดูลนี้ <first_module/my_module.zip>
ซึ่งคุณจะแทนที่ my_module ทุกรายการเป็นชื่อที่คุณเลือก
โครงสร้างด้านล่างจะถูกสร้างขึ้น:
my_module
├── __init__.py
├── __manifest__.py
├── controllers
│ ├── __init__.py
│ └── controllers.py
├── demo
│ └── demo.xml
├── models
│ ├── __init__.py
│ └── models.py
├── security
│ └── ir.model.access.csv
└── views
├── templates.xml
└── views.xml
Warning
อย่าใช้อักขระพิเศษนอกเหนือจากขีดล่าง ( _ ) สำหรับชื่อโมดูลของคุณ แม้แต่เครื่องหมายยติภังค์ ( - ) ชื่อนี้ใช้สำหรับคลาส Python ของโมดูลของคุณ และการมีชื่อคลาสที่มีอักขระพิเศษอื่นที่ไม่ใช่ขีดล่างนั้นไม่ถูกต้องใน Python
ยกเลิกหมายเหตุเนื้อหาของไฟล์:
models/models.py ตัวอย่างของโมเดลที่มีฟิลด์
views/views.xml มุมมองแบบลำดับและแบบฟอร์ม โดยมีเมนูเปิดอยู่
demo/demo.xml บันทึกการสาธิตสำหรับโมเดลตัวอย่างข้างต้น
controllers/controllers.py ตัวอย่างของคอนโทรลเลอร์ที่ใช้งานบางเส้นทาง
views/templates.xml สองตัวอย่างมุมมอง qweb ที่ใช้โดยเส้นทางคอนโทรลเลอร์ด้านบน
__manifest__.py ไฟล์ Manifest ของโมดูลของคุณ รวมถึงชื่อ คำอธิบาย และไฟล์ข้อมูลที่จะโหลด คุณเพียงแค่ต้องยกเลิกหมายเหตุไฟล์ข้อมูลรายการควบคุมการเข้าถึง:
# 'security/ir.model.access.csv',
ด้วยตนเอง¶
หากคุณต้องการสร้างโครงสร้างโมดูลด้วยตนเอง คุณสามารถปฏิบัติตามบทช่วยสอน Server framework 101 เพื่อทำความเข้าใจโครงสร้างของโมดูลและเนื้อหาของแต่ละไฟล์
พุชสาขาพัฒนา¶
กำหนดขั้นตอนการเปลี่ยนแปลงที่จะ commit
$ git add my_module
commit การเปลี่ยนแปลงของคุณ
$ git commit -m "My first module"
พุชการเปลี่ยนแปลงของคุณไปยังพื้นที่เก็บข้อมูลระยะไกลของคุณ
จากเทอร์มินัลตัวแก้ไข Odoo.sh:
$ git push https HEAD:feature-1
คำสั่งข้างต้นอธิบายไว้ในส่วน commit และ push การเปลี่ยนแปลงของคุณ ของบท เครื่องมือแก้ไขออนไลน์ รวมถึงคำอธิบายเกี่ยวกับข้อเท็จจริงที่คุณจะได้รับแจ้งให้พิมพ์ชื่อผู้ใช้และรหัสผ่านของคุณ และสิ่งที่ควรทำหากคุณใช้การยืนยันแบบสองขั้นตอน
หรือจากเทอร์มินัลคอมพิวเตอร์ของคุณ:
$ git push -u origin feature-1
คุณต้องระบุ -u origin features-1 สำหรับการพุชครั้งแรกเท่านั้น จากจุดนั้น คุณสามารถใช้เพื่อพุชการเปลี่ยนแปลงในอนาคตจากคอมพิวเตอร์ของคุณ
$ git push
ทดสอบโมดูลของคุณ¶
สาขาของคุณควรปรากฏในสาขาการพัฒนาในโปรเจ็กต์ของคุณ

ในมุมมองสาขาของโปรเจ็กต์ คุณสามารถคลิกชื่อสาขาในแผงการนำทางด้านซ้ายเพื่อเข้าถึงประวัติของโปรเจ็กต์ได้

คุณจะเห็นการเปลี่ยนแปลงที่คุณเพิ่งดำเนินการ รวมถึงความคิดเห็นที่คุณตั้งไว้ที่นี่ เมื่อฐานข้อมูลพร้อมแล้ว คุณสามารถเข้าถึงได้โดยคลิกปุ่ม เชื่อมต่อ

หากโปรเจ็กต์ Odoo.sh ของคุณได้รับการกำหนดค่าให้ติดตั้งโมดูลของคุณโดยอัตโนมัติ คุณจะเห็นโมดูลดังกล่าวในแอปฐานข้อมูลโดยตรง ไม่เช่นนั้น จะสามารถใช้งานได้ในแอปที่จะติดตั้ง
จากนั้นคุณสามารถลองใช้โมดูลของคุณ สร้างบันทึกใหม่และทดสอบฟีเจอร์และปุ่มต่างๆ ของคุณได้
ทดสอบกับข้อมูลการใช้งาน¶
คุณต้องมีฐานข้อมูลการใช้งานสำหรับขั้นตอนนี้ คุณสามารถสร้างมันขึ้นมาได้หากคุณยังไม่มี
เมื่อคุณทดสอบโมดูลของคุณในบิลด์การพัฒนาด้วยข้อมูลสาธิตและเชื่อว่าพร้อมแล้ว คุณสามารถทดสอบกับข้อมูลการใช้งานจริงได้โดยใช้สาขาการจัดเตรียม
คุณสามารถ:
ทำให้สาขาการพัฒนาของคุณเป็นสาขาชั่วคราว โดยการลากและวางลงบนชื่อส่วน การจัดเตรียม
รวมเข้ากับสาขาการจัดเตรียมที่มีอยู่ โดยการลากและวางลงในสาขาการจัดเตรียมที่กำหนด
คุณยังสามารถใช้คำสั่ง รวม git
เพื่อรวมสาขาของคุณ
สิ่งนี้จะสร้างการสร้างการจัดเตรียมใหม่ ซึ่งจะทำซ้ำฐานข้อมูลที่ใช้งานจริง และทำให้มันทำงานโดยใช้เซิร์ฟเวอร์ที่อัปเดตด้วยการเปลี่ยนแปลงล่าสุดในสาขาของคุณ

เมื่อฐานข้อมูลพร้อมแล้ว คุณจะสามารถเข้าถึงได้โดยใช้ปุ่ม เชื่อมต่อ
ติดตั้งโมดูลของคุณ¶
โมดูลของคุณจะไม่ได้รับการติดตั้งโดยอัตโนมัติ คุณต้องติดตั้งจากเมนูแอป ที่จริงแล้ว จุดประสงค์ของการสร้างการจัดเตรียมคือ เพื่อทดสอบพฤติกรรมของการเปลี่ยนแปลงของคุณตามที่จะเกิดขึ้นกับการผลิตของคุณ และในการผลิตของคุณที่คุณไม่ต้องการให้โมดูลของคุณได้รับการติดตั้งโดยอัตโนมัติ แต่เป็นไปตามความต้องการ
โมดูลของคุณอาจไม่ปรากฏในแอปของคุณโดยตรงเพื่อติดตั้ง คุณต้องอัปเดตรายการแอปก่อน:
เปิดใช้งาน โหมดนักพัฒนา
ในเมนูแอป ให้คลิกปุ่ม อัปเดตรายการแอป
ในกล่องโต้ตอบที่ปรากฏขึ้น ให้คลิกปุ่ม อัปเดต
โมดูลของคุณจะปรากฏในรายการแอปที่มีอยู่

ปรับใช้ในการใช้งาน¶
เมื่อคุณทดสอบโมดูลของคุณในสาขาการจัดเตรียมด้วยข้อมูลการผลิตของคุณ และเชื่อว่าโมดูลพร้อมสำหรับการผลิตแล้ว คุณสามารถรวมสาขาของคุณในสาขาการผลิตได้
ลากและวางสาขาการจัดเตรียมของคุณบนสาขาที่ใช้งานจริง

คุณยังสามารถใช้คำสั่ง รวม git
เพื่อรวมสาขาของคุณ
การดำเนินการนี้จะรวมการเปลี่ยนแปลงล่าสุดของสาขาการจัดเตรียมของคุณในสาขาการผลิต และอัปเดตเซิร์ฟเวอร์ที่ใช้งานจริงของคุณด้วยการเปลี่ยนแปลงล่าสุดเหล่านี้

เมื่อฐานข้อมูลพร้อมแล้ว คุณจะสามารถเข้าถึงได้โดยใช้ปุ่ม เชื่อมต่อ
ติดตั้งโมดูลของคุณ¶
โมดูลของคุณจะไม่ถูกติดตั้งโดยอัตโนมัติ คุณต้องติดตั้งด้วยตนเองตามที่อธิบายไว้ใน ด้านบนส่วนเกี่ยวกับการติดตั้งโมดูลของคุณในฐานข้อมูลชั่วคราว.
เพิ่มการเปลี่ยนแปลง¶
ส่วนนี้จะอธิบายวิธีเพิ่มการเปลี่ยนแปลงในโมดูลของคุณโดยการเพิ่มฟิลด์ใหม่ในโมเดลและปรับใช้
- จากเครื่องมือแก้ไข Odoo.sh
เรียกดูโฟลเดอร์โมดูลของคุณ ~/src/user/my_module,
จากนั้นเปิดไฟล์ models/models.py
- หรือจากคอมพิวเตอร์ของคุณ
ใช้เบราว์เซอร์ไฟล์ที่คุณเลือกเพื่อเรียกดูโฟลเดอร์โมดูลของคุณ ~/src/odoo-addons/my_module,
จากนั้น เปิดไฟล์ models/models.py โดยใช้โปรแกรมแก้ไขที่คุณเลือก เช่น Atom, Sublime Text, PyCharm, vim, ...
จากนั้นหลังจากช่องคำอธิบาย
description = fields.Text()
เพิ่มช่องวันที่และเวลา
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
จากนั้น เปิดไฟล์ views/views.xml
หลังจาก
<field name="value2"/>
เพิ่ม
<field name="start_datetime"/>
การเปลี่ยนแปลงเหล่านี้จะเปลี่ยนโครงสร้างฐานข้อมูลโดยการเพิ่มคอลัมน์ในตาราง และแก้ไขมุมมองที่จัดเก็บไว้ในฐานข้อมูล
เพื่อที่จะนำไปใช้กับฐานข้อมูลที่มีอยู่ เช่น ฐานข้อมูลการใช้งานของคุณ การเปลี่ยนแปลงเหล่านี้จำเป็นต้องมีการอัปเดตโมดูล
หากคุณต้องการให้แพลตฟอร์ม Odoo.sh ดำเนินการอัปเดตโดยอัตโนมัติเมื่อคุณพุชการเปลี่ยนแปลง ให้เพิ่มเวอร์ชันโมดูลของคุณในรายการ
เปิดรายการโมดูล __manifest__.py
แทนที่
'version': '0.1',
กับ
'version': '0.2',
แพลตฟอร์มจะตรวจจับการเปลี่ยนแปลงของเวอร์ชันและเริ่มต้นการอัปเดตโมดูลเมื่อมีการปรับใช้การแก้ไขใหม่
เรียกดูโฟลเดอร์ Git ของคุณ
จากนั้น จากเทอร์มินัล Odoo.sh:
$ cd ~/src/user/
หรือจากเทอร์มินัลคอมพิวเตอร์ของคุณ:
$ cd ~/src/odoo-addons/
จากนั้น ดำเนินการเปลี่ยนแปลงเพื่อ commit
$ git add my_module
commit การเปลี่ยนแปลงของคุณ
$ git commit -m "[ADD] my_module: add the start_datetime field to the model my_module.my_module"
พุชการเปลี่ยนแปลงของคุณ:
จากเทอร์มินัล Odoo.sh:
$ git push https HEAD:feature-1
หรือจากเทอร์มินัลคอมพิวเตอร์ของคุณ:
$ git push
จากนั้นแพลตฟอร์มจะสร้างโครงสร้างใหม่สำหรับสาขา feature-1

เมื่อคุณทดสอบการเปลี่ยนแปลงแล้ว คุณสามารถรวมการเปลี่ยนแปลงในสาขาการใช้งานได้ เช่น โดยการลากและวางสาขาบนสาขาการใช้งานในอินเทอร์เฟซ Odoo.sh เมื่อคุณเพิ่มเวอร์ชันของโมดูลในรายการ แพลตฟอร์มจะอัปเดตโมดูลโดยอัตโนมัติและฟิลด์ใหม่ของคุณจะพร้อมใช้งานโดยตรง ไม่เช่นนั้น คุณสามารถอัปเดตโมดูลภายในรายการแอปด้วยตนเองได้
ใช้ไลบรารี Python ภายนอก¶
หากคุณต้องการใช้ไลบรารี Python ภายนอกที่ไม่ได้ติดตั้งตามค่าเริ่มต้น คุณสามารถกำหนดไฟล์ requirements.txt ซึ่งแสดงรายการไลบรารีภายนอกที่โมดูลของคุณใช้อยู่
Note
ไม่สามารถติดตั้งหรืออัปเกรดแพ็คเกจระบบบนฐานข้อมูล Odoo.sh ได้ (เช่น แพ็คเกจ apt) อย่างไรก็ตาม ภายใต้เงื่อนไขเฉพาะ อาจพิจารณาบรรจุภัณฑ์สำหรับการติดตั้งได้ นอกจากนี้ยังใช้กับ โมดูล Python ที่ต้องการแพ็คเกจระบบสำหรับการคอมไพล์ และ โมดูล Odoo บุคคลที่สาม
ส่วนขยาย PostgreSQL ไม่รองรับบน Odoo.sh
หากต้องการข้อมูลเพิ่มเติม โปรดดู คำถามที่พบบ่อยของเรา
แพลตฟอร์มจะใช้ไฟล์นี้เพื่อติดตั้งไลบรารี Python ที่โปรเจ็กต์ของคุณต้องการโดยอัตโนมัติ
ฟีเจอร์นี้อธิบายไว้ในส่วนนี้โดยใช้ ไลบรารี Unidecode ในโมดูลของคุณ
สร้างไฟล์ requirements.txt ในโฟลเดอร์รูทของที่เก็บข้อมูลของคุณ
จากโปรแกรมแก้ไข Odoo.sh ให้สร้างและเปิดไฟล์ ~/src/user/requirements.txt
หรือจากคอมพิวเตอร์ของคุณ ให้สร้างและเปิดไฟล์ ~/src/odoo-addons/requirements.txt
เพิ่ม
unidecode
จากนั้นใช้ไลบรารีในโมดูลของคุณ เช่น เพื่อลบการเน้นเสียงออกจากอักขระในช่องชื่อโมเดลของคุณ
เปิดไฟล์ models/models.py
ก่อนหน้า
from odoo import models, fields, api
เพิ่ม
from unidecode import unidecode
หลังจาก
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
เพิ่ม
@api.model
def create(self, values):
if 'name' in values:
values['name'] = unidecode(values['name'])
return super(my_module, self).create(values)
def write(self, values):
if 'name' in values:
values['name'] = unidecode(values['name'])
return super(my_module, self).write(values)
การเพิ่มการพึ่งพา Python จำเป็นต้องเพิ่มเวอร์ชันโมดูลเพื่อให้แพลตฟอร์มติดตั้งได้
แก้ไขรายการโมดูล __manifest__.py
แทนที่
'version': '0.2',
กับ
'version': '0.3',
Stage และ commit การเปลี่ยนแปลงของคุณ:
$ git add requirements.txt
$ git add my_module
$ git commit -m "[IMP] my_module: automatically remove special chars in my_module.my_module name field"
จากนั้น พุชการเปลี่ยนแปลงของคุณ:
ในเทอร์มินัล Odoo.sh:
$ git push https HEAD:feature-1
ในเทอร์มินัลคอมพิวเตอร์ของคุณ:
$ git push