ผลต่างระหว่างรุ่นของ "Tutorial Odoo 9.0"
จาก Morange Wiki
Bombay (คุย | มีส่วนร่วม) (→แก้ไขไฟล์ ต่างๆ) |
Tewarath (คุย | มีส่วนร่วม) (→Build an Odoo Module (สร้างโมดูลของ Odoo)) |
||
(ไม่แสดง 31 รุ่นระหว่างกลางโดยผู้ใช้ 3 คน) | |||
แถว 1: | แถว 1: | ||
+ | == หัวข้อ Tutorial == | ||
+ | * [[Tutorial Odoo 9.0]] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_2_:_%E0%B8%81%E0%B8%B2%E0%B8%A3_Install_Module Tutorial Odoo 9.0 Part 2 : การ Install Module] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_3_:_%E0%B8%81%E0%B8%B3%E0%B8%AB%E0%B8%99%E0%B8%94_Model_%26_Demo Tutorial Odoo 9.0 Part 3 : กำหนด Model & Demo] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_4_:_Basic_View Tutorial Odoo 9.0 Part 4 : Basic View] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_5_:_Relations_between_models Tutorial Odoo 9.0 Part 5 : Relations between models] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_6_:_Inheritance Tutorial Odoo 9.0 Part 6 : Inheritance] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_7_:_Computed_fields_and_default_values Tutorial Odoo 9.0 Part 7 : Computed fields & default values] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_8_:_Onchange_%26_Model_constraints Tutorial Odoo 9.0 Part 8 : Onchange & Model constraints] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_9_:_Advanced_Views Tutorial Odoo 9.0 Part 9 : Advanced Views] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_10_:_Workflows Tutorial Odoo 9.0 Part 10 : Workflows] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_11_:_Security Tutorial Odoo 9.0 Part 11 : Security] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_12_:_Wizards Tutorial Odoo 9.0 Part 12 : Wizards] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_13_:_Internationalization Tutorial Odoo 9.0 Part 13 : Internationalization ] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_14_:_Reporting Tutorial Odoo 9.0 Part 14 : Reporting] | ||
+ | * [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_15_:_WebServices#.E0.B8.97.E0.B8.B3_WebService Tutorial Odoo 9.0 Part 15 : WebServices] | ||
+ | |||
== Build an Odoo Module (สร้างโมดูลของ Odoo) == | == Build an Odoo Module (สร้างโมดูลของ Odoo) == | ||
− | <p>1.สร้างโมดูล ด้วยคำสั่งดังนี้ </p> | + | <p>1. สร้างโมดูล ด้วยคำสั่งดังนี้ </p> |
− | <pre> odoo.py scaffold openacademy addons </pre> | + | <pre>odoo.py scaffold openacademy addons</pre> |
<p>หลังจากนั้นจะได้ไฟล์มีโครงสร้างเป็นดังนี้ </p> | <p>หลังจากนั้นจะได้ไฟล์มีโครงสร้างเป็นดังนี้ </p> | ||
<p>[[ไฟล์:Odoo9-1.png|800px|'''คำสั่งที่ใช้งาน สร้าง Folder''']]</p> | <p>[[ไฟล์:Odoo9-1.png|800px|'''คำสั่งที่ใช้งาน สร้าง Folder''']]</p> | ||
− | + | <br/><br/> | |
− | <p> 2. | + | <p> 2. ตั้งค่า Path ให้ Odoo ค้นหา App ที่เราสร้างพบ</p> |
หมายเหตุ : ถ้าใช้คำสั่งไม่ได้ ให้ล๊อกอินในฐานะ Root | หมายเหตุ : ถ้าใช้คำสั่งไม่ได้ ให้ล๊อกอินในฐานะ Root | ||
− | <pre> sudo nano /etc/odoo/openerp-server.conf </pre | + | <pre>sudo nano /etc/odoo/openerp-server.conf </pre> |
− | |||
− | |||
− | |||
− | <p> [[ไฟล์:Tutor-odoo- | + | <p>[[ไฟล์:Tutor-odoo-2.png|400px|'''คำสังเขียนไฟล์''']]</p> |
+ | <br/> | ||
+ | แก้ไข addons_path = ให้เพิ่ม path ของที่อยู่ไฟล์ addons ต่อท้ายจากที่อยู่ที่ระบบได้สร้างไว้ โดยคั่นด้วยเครื่องหมาย "," (Comma) | ||
− | + | <p>[[ไฟล์:Tutor-odoo-3.png|400px|'''คำสังเขียนไฟล์''']]</p> | |
+ | <br/><br/> | ||
+ | ไปที่ http://localhost:8069/ เพื่อไปตั้งค่า Database (หากทำแล้วให้ผ่านขั้นตอนนี้ไป) | ||
− | <p> [[ไฟล์:Tutor-odoo-4.png|600px|'''ตั้งค่า Database'']]</p> | + | <p>[[ไฟล์:Tutor-odoo-4.png|600px|'''ตั้งค่า Database'']]</p> |
− | + | <br/><br/><br/> | |
− | + | 3. แก้ไขไฟล์ ต่างๆ ดังนี้ | |
− | |||
<h3>openacademy/__openerp__.py</h3><br/> | <h3>openacademy/__openerp__.py</h3><br/> | ||
<pre> | <pre> | ||
แถว 53: | แถว 70: | ||
'data': [ | 'data': [ | ||
# 'security/ir.model.access.csv', | # 'security/ir.model.access.csv', | ||
− | 'templates.xml', | + | 'views/templates.xml', |
], | ], | ||
# only loaded in demonstration mode | # only loaded in demonstration mode | ||
'demo': [ | 'demo': [ | ||
− | 'demo.xml', | + | 'demo/demo.xml', |
], | ], | ||
} | } | ||
แถว 65: | แถว 82: | ||
<pre> | <pre> | ||
# -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||
− | + | import controllers | |
− | + | import models | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
− | <h3>openacademy/demo.xml</h3> <br/> | + | <h3>openacademy/demo/demo.xml</h3> <br/> |
<pre> | <pre> | ||
<openerp> | <openerp> | ||
แถว 119: | แถว 115: | ||
</pre> | </pre> | ||
− | <h3>openacademy/models.py</h3> <br/> | + | <h3>openacademy/models/models.py</h3> <br/> |
− | |||
<pre> | <pre> | ||
แถว 138: | แถว 133: | ||
access_openacademy_openacademy,openacademy.openacademy,model_openacademy_openacademy,,1,0,0,0 | access_openacademy_openacademy,openacademy.openacademy,model_openacademy_openacademy,,1,0,0,0 | ||
</pre> | </pre> | ||
− | <h3>openacademy/templates.xml</h3> <br/> | + | <h3>openacademy/views/templates.xml</h3> <br/> |
<pre> | <pre> | ||
แถว 165: | แถว 160: | ||
</pre> | </pre> | ||
− | <h3> | + | <h3>openacademy/controllers/controllers.py</h3><br/> |
+ | <pre># -*- coding: utf-8 -*- | ||
+ | from openerp import http | ||
+ | |||
+ | # class Openacademy(http.Controller): | ||
+ | # @http.route('/openacademy/openacademy/', auth='public') | ||
+ | # def index(self, **kw): | ||
+ | # return "Hello, world" | ||
+ | |||
+ | # @http.route('/openacademy/openacademy/objects/', auth='public') | ||
+ | # def list(self, **kw): | ||
+ | # return http.request.render('openacademy.listing', { | ||
+ | # 'root': '/openacademy/openacademy', | ||
+ | # 'objects': http.request.env['openacademy.openacademy'].search([]), | ||
+ | # }) | ||
+ | |||
+ | # @http.route('/openacademy/openacademy/objects/<model("openacademy.openacademy"):obj>/', auth='public') | ||
+ | # def object(self, obj, **kw): | ||
+ | # return http.request.render('openacademy.object', { | ||
+ | # 'object': obj | ||
+ | # })</pre> | ||
+ | |||
+ | <h3>openacademy/__inti__.py</h3><br/> | ||
<pre> | <pre> | ||
import controllers | import controllers | ||
แถว 171: | แถว 188: | ||
</pre> | </pre> | ||
− | <h3>models/__init__.py</h3><br/> | + | <h3>openacademy/models/__init__.py</h3><br/> |
<pre>import models</pre> | <pre>import models</pre> | ||
− | <h3>controllers/__init__.py</h3><br/> | + | <h3>openacademy/controllers/__init__.py</h3><br/> |
<pre>import controllers</pre> | <pre>import controllers</pre> | ||
+ | <br/><br/> | ||
+ | เมื่อทำการแก้ไขเสร็จเรียบร้อย ให้ไปที่ http://localhost:8069/ และคลิกเมนู App จะได้ผลลัพธ์ตามภาพ | ||
+ | |||
+ | [[ไฟล์:Tutor-odoo-5.png |600px]] | ||
+ | |||
− | |||
− | [[ | + | หัวข้อถัดไป [[Tutorial Odoo 9.0 Part 2 : การ Install Module ]] |
+ | |||
+ | ==อ้างอิง== | ||
+ | * https://www.odoo.com/documentation/9.0/howtos/backend.html |
รุ่นแก้ไขปัจจุบันเมื่อ 11:06, 24 ตุลาคม 2559
เนื้อหา
- 1 หัวข้อ Tutorial
- 2 Build an Odoo Module (สร้างโมดูลของ Odoo)
- 2.1 openacademy/__openerp__.py
- 2.2 openacademy/__init__.py
- 2.3 openacademy/demo/demo.xml
- 2.4 openacademy/models/models.py
- 2.5 openacademy/security/ir.model.access.csv
- 2.6 openacademy/views/templates.xml
- 2.7 openacademy/controllers/controllers.py
- 2.8 openacademy/__inti__.py
- 2.9 openacademy/models/__init__.py
- 2.10 openacademy/controllers/__init__.py
- 3 อ้างอิง
หัวข้อ Tutorial
- Tutorial Odoo 9.0
- Tutorial Odoo 9.0 Part 2 : การ Install Module
- Tutorial Odoo 9.0 Part 3 : กำหนด Model & Demo
- Tutorial Odoo 9.0 Part 4 : Basic View
- Tutorial Odoo 9.0 Part 5 : Relations between models
- Tutorial Odoo 9.0 Part 6 : Inheritance
- Tutorial Odoo 9.0 Part 7 : Computed fields & default values
- Tutorial Odoo 9.0 Part 8 : Onchange & Model constraints
- Tutorial Odoo 9.0 Part 9 : Advanced Views
- Tutorial Odoo 9.0 Part 10 : Workflows
- Tutorial Odoo 9.0 Part 11 : Security
- Tutorial Odoo 9.0 Part 12 : Wizards
- Tutorial Odoo 9.0 Part 13 : Internationalization
- Tutorial Odoo 9.0 Part 14 : Reporting
- Tutorial Odoo 9.0 Part 15 : WebServices
Build an Odoo Module (สร้างโมดูลของ Odoo)
1. สร้างโมดูล ด้วยคำสั่งดังนี้
odoo.py scaffold openacademy addons
หลังจากนั้นจะได้ไฟล์มีโครงสร้างเป็นดังนี้
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
2. ตั้งค่า Path ให้ Odoo ค้นหา App ที่เราสร้างพบ
หมายเหตุ : ถ้าใช้คำสั่งไม่ได้ ให้ล๊อกอินในฐานะ Root
sudo nano /etc/odoo/openerp-server.conf
แก้ไข addons_path = ให้เพิ่ม path ของที่อยู่ไฟล์ addons ต่อท้ายจากที่อยู่ที่ระบบได้สร้างไว้ โดยคั่นด้วยเครื่องหมาย "," (Comma)
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
ไปที่ http://localhost:8069/ เพื่อไปตั้งค่า Database (หากทำแล้วให้ผ่านขั้นตอนนี้ไป)
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
3. แก้ไขไฟล์ ต่างๆ ดังนี้
openacademy/__openerp__.py
# -*- coding: utf-8 -*- { 'name': "Open Academy", 'summary': """Manage trainings""", 'description': """ Open Academy module for managing trainings: - training courses - training sessions - attendees registration """, 'author': "My Company", 'website': "http://www.yourcompany.com", # Categories can be used to filter modules in modules listing # Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml # for the full list 'category': 'Test', 'version': '0.1', # any module necessary for this one to work correctly 'depends': ['base'], # always loaded 'data': [ # 'security/ir.model.access.csv', 'views/templates.xml', ], # only loaded in demonstration mode 'demo': [ 'demo/demo.xml', ], }
openacademy/__init__.py
# -*- coding: utf-8 -*- import controllers import models
openacademy/demo/demo.xml
<openerp> <data> <!-- --> <!-- <record id="object0" model="openacademy.openacademy"> --> <!-- <field name="name">Object 0</field> --> <!-- </record> --> <!-- --> <!-- <record id="object1" model="openacademy.openacademy"> --> <!-- <field name="name">Object 1</field> --> <!-- </record> --> <!-- --> <!-- <record id="object2" model="openacademy.openacademy"> --> <!-- <field name="name">Object 2</field> --> <!-- </record> --> <!-- --> <!-- <record id="object3" model="openacademy.openacademy"> --> <!-- <field name="name">Object 3</field> --> <!-- </record> --> <!-- --> <!-- <record id="object4" model="openacademy.openacademy"> --> <!-- <field name="name">Object 4</field> --> <!-- </record> --> <!-- --> </data> </openerp>
openacademy/models/models.py
# -*- coding: utf-8 -*- from openerp import models, fields, api # class openacademy(models.Model): # _name = 'openacademy.openacademy' # name = fields.Char()
openacademy/security/ir.model.access.csv
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink access_openacademy_openacademy,openacademy.openacademy,model_openacademy_openacademy,,1,0,0,0
openacademy/views/templates.xml
<openerp> <data> <!-- <template id="listing"> --> <!-- <ul> --> <!-- <li t-foreach="objects" t-as="object"> --> <!-- <a t-attf-href="{{ root }}/objects/{{ object.id }}"> --> <!-- <t t-esc="object.display_name"/> --> <!-- </a> --> <!-- </li> --> <!-- </ul> --> <!-- </template> --> <!-- <template id="object"> --> <!-- <h1><t t-esc="object.display_name"/></h1> --> <!-- <dl> --> <!-- <t t-foreach="object._fields" t-as="field"> --> <!-- <dt><t t-esc="field"/></dt> --> <!-- <dd><t t-esc="object[field]"/></dd> --> <!-- </t> --> <!-- </dl> --> <!-- </template> --> </data> </openerp>
openacademy/controllers/controllers.py
# -*- coding: utf-8 -*- from openerp import http # class Openacademy(http.Controller): # @http.route('/openacademy/openacademy/', auth='public') # def index(self, **kw): # return "Hello, world" # @http.route('/openacademy/openacademy/objects/', auth='public') # def list(self, **kw): # return http.request.render('openacademy.listing', { # 'root': '/openacademy/openacademy', # 'objects': http.request.env['openacademy.openacademy'].search([]), # }) # @http.route('/openacademy/openacademy/objects/<model("openacademy.openacademy"):obj>/', auth='public') # def object(self, obj, **kw): # return http.request.render('openacademy.object', { # 'object': obj # })
openacademy/__inti__.py
import controllers import models
openacademy/models/__init__.py
import models
openacademy/controllers/__init__.py
import controllers
เมื่อทำการแก้ไขเสร็จเรียบร้อย ให้ไปที่ http://localhost:8069/ และคลิกเมนู App จะได้ผลลัพธ์ตามภาพ
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
หัวข้อถัดไป Tutorial Odoo 9.0 Part 2 : การ Install Module