Tutorial Odoo 9.0

จาก Morange Wiki

หัวข้อ 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 ก่อน (ถ้าทำแล้วให้ผ่านขึ้นตอนนี้ไป)

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

แก้ไขไฟล์ ต่างๆ

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


อ้างอิง