ผลต่างระหว่างรุ่นของ "Tutorial Odoo 9.0"

จาก Morange Wiki
แถว 3: แถว 3:
 
* [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_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_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]
* [[Tutorial Odoo 9.0 Part 4 : Basic View]]
+
* [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_4_:_Basic_View Tutorial Odoo 9.0 Part 4 : Basic View]
* [[Tutorial Odoo 9.0 Part 5 : Relations between models]]
+
* [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_5_:_Relations_between_models Tutorial Odoo 9.0 Part 5 : Relations between models]
* [[Tutorial Odoo 9.0 Part 6 : Inheritance]]
+
* [https://wiki.morange.co.th/Tutorial_Odoo_9.0_Part_6_:_Inheritance Tutorial Odoo 9.0 Part 6 : Inheritance]
  
 
== Build an Odoo Module (สร้างโมดูลของ Odoo) ==  
 
== Build an Odoo Module (สร้างโมดูลของ Odoo) ==  

รุ่นแก้ไขเมื่อ 04:29, 15 กรกฎาคม 2559

หัวข้อ Tutorial

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.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.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/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.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
#         })

views/__inti__.py


import controllers
import models

models/__init__.py


import models

controllers/__init__.py


import controllers



เมื่อทำการแก้ไขเสร็จเรียบร้อย ให้ไปที่ http://localhost:8069/ และคลิกเมนู App จะได้ผลลัพธ์ตามภาพ

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย


หัวข้อถัดไป Tutorial Odoo 9.0 Part 2 : การ Install Module


อ้างอิง