<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ### 模塊結構 每個模塊都是一個目錄內的一個*模塊目錄*。指定的模塊目錄使用 [`--addons-path`](https://www.odoo.com/documentation/9.0/reference/cmdline.html#cmdoption-odoo.py--addons-path) 選項. Tip 大多數命令行選項也可以使用 [配置文件](https://www.odoo.com/documentation/9.0/reference/cmdline.html#reference-cmdline-config) 一個聲明的Odoo模塊 [manifest](https://www.odoo.com/documentation/9.0/reference/module.html#reference-module-manifest). 查看這個 [manifest documentation](https://www.odoo.com/documentation/9.0/reference/module.html#reference-module-manifest) 關于它的信息. 模塊也是一個[Python package](http://docs.python.org/2/tutorial/modules.html#packages)在`__init__.py`文件, 包含在模塊的各種Python文件導入指令. 例如,如果該模塊有一個單一的 `mymodule.py` 文件 `__init__.py` 可能包含: ~~~ Python from . import mymodule ~~~ Odoo提供了一種機制來幫助建立一個新的模塊, [odoo.py](https://www.odoo.com/documentation/9.0/reference/cmdline.html#reference-cmdline-server) 有一個命令 [scaffold](https://www.odoo.com/documentation/9.0/reference/cmdline.html#reference-cmdline-scaffold) 創建一個空模塊: ~~~ cmd $ odoo.py scaffold <module name> <where to put it> ~~~ 該命令創建一個模塊的子目錄,并自動創建一個模塊一堆標準文件。他們中的大多數只包含注釋代碼或XML。大多數這些文件的使用將在本教程中解釋。 >練習 模塊創建 使用命令行上創建一個空的模塊開院,并安裝在Odoo。 1. 調用命令 ` odoo.py支架openacademy插件`. 2. 將清單文件調整到模塊. 3. 不要打擾其他文件. *openacademy/__openerp__.py* ~~~ Python # -*- 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", # 類別可用于模塊列表中的篩選器模塊 # 檢查 https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml # 為完整列表 'category': 'Test', 'version': '0.1', # 這一個需要正確工作的模塊 'depends': ['base'], # 總是加載 'data': [ # 'security/ir.model.access.csv', 'templates.xml', ], # 只有在示范模式中加載 'demo': [ 'demo.xml', ], } ~~~ *openacademy/__init__.py* ~~~ Python # -*- coding: utf-8 -*- from . import controllers from . import models ~~~ *openacademy/controllers.py* ~~~ Python # -*- 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/demo.xml* ~~~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* ~~~Python # -*- 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* ~~~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* ~~~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> ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看