Az első modulja¶
Áttekintés¶
Ez a fejezet segít létrehozni az első Odoo modulját és telepíteni azt az Odoo.sh projektjében.
Ez az útmutató megköveteli, hogy létrehozott egy projektet az Odoo.sh-n, és ismeri a Github repozitóriumának URL-jét.
A Git és a Github alapvető használata magyarázatra kerül.
Az alábbi feltételezések érvényesek:
~/src az a könyvtár, ahol az Odoo projektekhez kapcsolódó Git repozitóriumok találhatók,
odoo a Github felhasználó,
odoo-addons a Github adattár,
feature-1 a fejlesztési ág neve,
master a termelési ág neve,
my_module a modul neve.
Cserélje le ezeket az Ön által választott értékekre.
Hozza létre a fejlesztési ágat¶
Az Odoo.sh-ból¶
Az ágak nézetében:
nyomja meg a
+gombot a fejlesztési szakasz mellett,válassza ki a master ágat a Fork kiválasztásban,
írja be a feature-1 kifejezést a Címzett mezőbe.

Miután a build elkészült, hozzáférhet a szerkesztőhöz, és böngészhet a ~/src/user mappába, hogy hozzáférjen a fejlesztési ág kódjához.
A számítógépéről¶
Klónozza a Github adattárát a számítógépére:
$ mkdir ~/src
$ cd ~/src
$ git clone https://github.com/odoo/odoo-addons.git
$ cd ~/src/odoo-addons
Hozzon létre egy új ágat:
$ git checkout -b feature-1 master
Hozza létre a modul struktúráját¶
A modul vázának elkészítése¶
Bár nem szükséges, a vázszerkezet elkerüli az alapvető Odoo modul struktúra beállításának unalmát. Új modult hozhat létre a odoo-bin végrehajtható fájl használatával.
Az Odoo.sh szerkesztőből, egy terminálban:
$ odoo-bin scaffold my_module ~/src/user/
Vagy a számítógépéről, ha van Odoo telepítése:
$ ./odoo-bin scaffold my_module ~/src/odoo-addons/
Ha nem szeretné az Odoo telepítésével fárasztani magát a számítógépén, akkor letöltheti ezt a modul struktúra sablont, amelyben minden my_module előfordulást lecserélhet a választott névre.
Az alábbi struktúra fog létrejönni:
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
Figyelem
Ne használjon speciális karaktereket a modul nevében, kivéve az aláhúzásjelet ( _ ), még kötőjelet ( - ) sem. Ez a név a modul Python osztályaihoz lesz használva, és az aláhúzásjelen kívüli speciális karakterekkel rendelkező osztálynevek nem érvényesek a Pythonban.
Kommentelje ki a fájlok tartalmát:
models/models.py, egy példa modell a mezőivel,
views/views.xml, egy fa és egy űrlap nézet, a menükkel, amelyek megnyitják őket,
demo/demo.xml, demó rekordok a fenti példa modellhez,
controllers/controllers.py, egy útvonalakat megvalósító vezérlő példája,
views/templates.xml, két példa qweb nézet, amelyeket a fenti vezérlő útvonalak használnak,
__manifest__.py, a modulod manifesztje, amely például tartalmazza a címét, leírását és a betöltendő adatfájlokat. Csak ki kell kommentelned a hozzáférés-vezérlési lista adatfájlt:
# 'security/ir.model.access.csv',
Kézzel¶
Ha manuálisan szeretnéd létrehozni a modul struktúráját, kövesd a Server framework 101 útmutatót, hogy megértsd a modul struktúráját és az egyes fájlok tartalmát.
A fejlesztési ág feltöltése¶
A módosítások színpadra állítása a commit-hoz
$ git add my_module
A módosítások elkötelezése
$ git commit -m "My first module"
A módosítások feltöltése a távoli tárhelyedre
Egy Odoo.sh szerkesztő terminálból:
$ git push https HEAD:feature-1
A fenti parancs magyarázata a Commit & Push your changes szakaszban található a Online Editor fejezetben. Tartalmazza a magyarázatot arra vonatkozóan, hogy miért kell megadnia a felhasználónevét és jelszavát, valamint mit tegyen, ha kétfaktoros hitelesítést használ.
Vagy a számítógép termináljáról:
$ git push -u origin feature-1
Az első push esetén meg kell adnia a -u origin feature-1 paramétert. Ettől a ponttól kezdve, hogy a jövőbeli változtatásait a számítógépéről push-olja, egyszerűen használhatja
$ git push
Tesztelje a modulját¶
A fejlesztési ágai között meg kell jelennie az ágának a projektjében.
A projekt ágak nézetében a bal oldali navigációs panelen kattinthat az ága nevére, hogy hozzáférjen annak történetéhez.
Itt láthatja az éppen push-olt változtatásokat, beleértve a beállított megjegyzést is. Amint az adatbázis készen áll, a Connect gombra kattintva érheti el azt.
Ha az Odoo.sh projektje úgy van konfigurálva, hogy automatikusan telepítse a modulját, akkor közvetlenül láthatja az adatbázis alkalmazásai között. Ellenkező esetben elérhető lesz a telepítendő alkalmazások között.
Ezután játszhat a moduljával, új rekordokat hozhat létre, és tesztelheti a funkcióit és gombjait.
Tesztelés a termelési adatokkal¶
Ehhez a lépéshez szüksége van egy éles adatbázisra. Létrehozhatja, ha még nem rendelkezik vele.
Miután tesztelte a modulját egy fejlesztési buildben a demó adatokkal, és úgy gondolja, hogy készen áll, tesztelheti az éles adatokkal egy staging ágon keresztül.
Választhat:
Tegye a fejlesztési ágát staging ággá, azzal, hogy áthúzza a staging szekció címére.
Egy meglévő staging ágba is egyesítheti, azzal, hogy áthúzza a megadott staging ágra.
Használhatja a git merge parancsot is az ágak egyesítésére.
Ez egy új staging buildet hoz létre, amely lemásolja az éles adatbázist, és futtatja azt egy szerverrel, amelyet az ágának legújabb változásaival frissítettek.
Amint az adatbázis készen áll, a Csatlakozás gombbal érheti el.
Telepítse a modulját¶
A modulja nem települ automatikusan, az alkalmazások menüből kell telepítenie. Valójában a staging build célja az, hogy tesztelje a változtatásai viselkedését, ahogyan az az éles környezetben lenne, és az éles környezetben nem szeretné, ha a modulja automatikusan települne, hanem igény szerint.
A modulod lehet, hogy nem jelenik meg közvetlenül a telepíthető alkalmazások között, először frissítened kell az alkalmazáslistádat:
Aktiváld a fejlesztői módot
az alkalmazások menüben kattints a Alkalmazások lista frissítése gombra,
a megjelenő párbeszédablakban kattints a Frissítés gombra.
A modulod ezután megjelenik az elérhető alkalmazások listájában.
Telepítés éles környezetben¶
Miután tesztelted a modulodat egy előkészítő ágon a termelési adataiddal, és úgy gondolod, hogy készen áll az éles környezetre, egyesítheted az ágat az éles ággal.
Húzd és ejtsd az előkészítő ágat az éles ágra.
Használhatja a git merge parancsot is az ágak egyesítésére.
Ez egyesíti az előkészítő ág legújabb változásait az éles ággal, és frissíti az éles szervert ezekkel a legújabb változásokkal.
Amint az adatbázis készen áll, a Csatlakozás gombbal érheti el.
Telepítse a modulját¶
A modulod nem lesz automatikusan telepítve, manuálisan kell telepítened, ahogy azt a fenti szakaszban az előkészítő adatbázisokban történő modul telepítéséről leírtuk.
Változtatás hozzáadása¶
Ez a szakasz bemutatja, hogyan adhat hozzá változtatást a moduljához egy új mező hozzáadásával egy modellben, és hogyan telepítheti azt.
- Az Odoo.sh szerkesztőből,
keresse meg a modul mappáját ~/src/user/my_module,
majd nyissa meg a models/models.py fájlt.
- Vagy a számítógépéről,
használja a választott fájlkezelőt, hogy elérje a modul mappáját ~/src/odoo-addons/my_module,
majd nyissa meg a models/models.py fájlt a választott szerkesztővel, például Atom, Sublime Text, PyCharm, vim, …
Ezután, a leírás mező után
description = fields.Text()
Adjon hozzá egy datetime mezőt
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
Ezután nyissa meg a views/views.xml fájlt.
Utána
<field name="value2"/>
Hozzáad
<field name="start_datetime"/>
Ezek a változtatások módosítják az adatbázis szerkezetét egy oszlop hozzáadásával egy táblában, és módosítanak egy adatbázisban tárolt nézetet.
Annak érdekében, hogy ezek a változtatások alkalmazásra kerüljenek a meglévő adatbázisokban, mint például a termelési adatbázisában, szükséges a modul frissítése.
Ha azt szeretné, hogy a frissítést automatikusan elvégezze az Odoo.sh platform, amikor feltölti a változtatásait, növelje meg a modul verzióját a manifest fájlban.
Nyissa meg a modul manifest fájlt __manifest__.py.
Cserélje le
'version': '0.1',
val
'version': '0.2',
A platform érzékeli a verzióváltozást, és elindítja a modul frissítését az új revízió telepítésekor.
Keresse meg a Git mappáját.
Ezután, egy Odoo.sh terminálból:
$ cd ~/src/user/
Vagy a számítógép termináljáról:
$ cd ~/src/odoo-addons/
Ezután, állítsa be a módosításait elkötelezésre
$ git add my_module
A módosítások elkötelezése
$ git commit -m "[ADD] my_module: add the start_datetime field to the model my_module.my_module"
Töltse fel a módosításait:
Egy Odoo.sh terminálból:
$ git push https HEAD:feature-1
Vagy a számítógép termináljáról:
$ git push
A platform ezután létrehoz egy új buildet a feature-1 ághoz.
Miután tesztelte a módosításait, összevonhatja azokat a termelési ággal, például az ágat a termelési ágra húzva az Odoo.sh felületén. Mivel növelte a modul verzióját a manifestben, a platform automatikusan frissíti a modult, és az új mező közvetlenül elérhető lesz. Ellenkező esetben manuálisan is frissítheti a modult az alkalmazások listájában.
Használjon külső Python könyvtárat¶
Ha szeretne használni egy külső Python könyvtárat, amely nincs alapértelmezetten telepítve, definiálhat egy requirements.txt fájlt, amely felsorolja azokat a külső könyvtárakat, amelyektől a moduljai függenek.
Megjegyzés
Nem lehetséges rendszer csomagokat telepíteni vagy frissíteni egy Odoo.sh adatbázison (pl. apt csomagok). Azonban meghatározott feltételek mellett csomagok telepítése megfontolható. Ez vonatkozik azokra a Python modulokra is, amelyek rendszer csomagokat igényelnek a fordításhoz, és a harmadik féltől származó Odoo modulokra.
PostgreSQL kiterjesztések nem támogatottak az Odoo.sh-n.
További információért tekintse meg a GYIK oldalunkat.
A platform ezt a fájlt fogja használni a projektjéhez szükséges Python könyvtárak automatikus telepítéséhez.
A funkciót ebben a szakaszban magyarázzuk el az Unidecode library használatával a moduljában.
Hozzon létre egy requirements.txt fájlt a tárolója gyökérmappájában.
Az Odoo.sh szerkesztőből hozzon létre és nyissa meg a ~/src/user/requirements.txt fájlt.
Vagy a számítógépéről hozzon létre és nyissa meg a ~/src/odoo-addons/requirements.txt fájlt.
Hozzáad
unidecode
Ezután használja a könyvtárat a moduljában, például a modellje név mezőjében lévő karakterek ékezetének eltávolítására.
Nyissa meg a models/models.py fájlt.
Előtt
from odoo import models, fields, api
Hozzáad
from unidecode import unidecode
Utána
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
Hozzáad
@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 függőség hozzáadása esetén a modul verziójának növelése szükséges ahhoz, hogy a platform telepítse azt.
Szerkessze a modul manifest fájlt __manifest__.py
Cserélje le
'version': '0.2',
val
'version': '0.3',
Állítsa színpadra és kötelezze el a változtatásait:
$ 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"
Ezután tolja fel a változtatásait:
Egy Odoo.sh terminálban:
$ git push https HEAD:feature-1
A számítógép termináljában:
$ git push