Egy testreszabott adatbázis frissítése¶
Az Odoo új verziójára való frissítés kihívást jelenthet, különösen, ha az adatbázis, amelyen dolgozik, egyedi modulokat tartalmaz. Ennek az oldalnak a célja, hogy elmagyarázza az adatbázis testreszabott modulokkal történő frissítésének technikai folyamatát. További útmutatásért, hogyan frissítsen egy adatbázist testreszabott modulok nélkül, tekintse meg a Frissítési dokumentációt.
We consider a custom module, any module that extends the standard code of Odoo and that was not built with the Studio app. Before upgrading such a module, or before requesting its upgrade, have a look at the Szolgáltatási szintű megállapodás (SLA) to make sure who’s responsible for it.
Amíg az adatbázis egyedi frissítésén dolgozik, tartsa szem előtt a frissítés céljait:
Maradjon támogatott
Szerezze meg a legújabb funkciókat
Élvezze a teljesítményjavulást
Csökkentse a technikai adósságot
Használja ki a biztonsági fejlesztéseket
Az Odoo minden új verziójával változások kerülnek bevezetésre. Ezek a változások hatással lehetnek azokra a modulokra, amelyekre testreszabásokat fejlesztettek ki. Ez az oka annak, hogy egy egyedi modulokat tartalmazó adatbázis frissítése további lépéseket igényel a forráskód frissítése érdekében.
Ezek a lépések követendők a testreszabott adatbázisok frissítéséhez:
1. lépés: Fejlesztések leállítása¶
A frissítés megkezdése elkötelezettséget és fejlesztési erőforrásokat igényel. Ha a fejlesztések folytatódnak, azokat a funkciókat minden változtatáskor újra kell frissíteni és tesztelni. Ezért javasoljuk a kódbázis teljes befagyasztását a frissítési folyamat megkezdésekor. Mondanunk sem kell, hogy a hibajavítás mentesül ezen ajánlás alól.
Miután leállította a fejlesztést, jó gyakorlat a fejlesztések értékelése és összehasonlítása a jelenlegi verzió és a célzott verzió közötti új funkciókkal. Kihívás elé állítsa a fejlesztéseket, amennyire csak lehet, és találjon funkcionális megoldásokat. A fejlesztések és az Odoo standard verziója közötti redundancia eltávolítása megkönnyíti a frissítési folyamatot és csökkenti a technikai adósságot.
Megjegyzés
Információt találhat a verziók közötti változásokról a Kiadási Megjegyzések oldalon.
2. lépés: Frissített adatbázis igénylése¶
Once the developments have stopped for the custom modules and the implemented features have been challenged to remove redundancy and unnecessary code, the next step is to request an upgraded test database. To do so, follow the steps mentioned in Frissített tesztadatbázis beszerzése, depending on the hosting type of your database.
Ennek a szakasznak a célja nem az, hogy elkezdjen dolgozni az egyedi modulokkal a frissített adatbázisban, hanem hogy megbizonyosodjon arról, hogy a standard frissítési folyamat zökkenőmentesen működik, és a tesztadatbázis megfelelően kerül átadásra. Ha ez nem így van, és a frissítési kérelem meghiúsul, kérje az Odoo segítségét a támogatási oldal segítségével, a frissítés tesztelésével kapcsolatos opció kiválasztásával.
3. lépés: Üres adatbázis¶
Mielőtt egy frissített tesztadatbázison dolgozna, javasoljuk, hogy a testreszabott fejlesztéseket egy üres adatbázison tegye működőképessé a frissítés célzott verziójában. Ez biztosítja, hogy a testreszabás kompatibilis az Odoo új verziójával, lehetővé teszi annak elemzését, hogyan viselkedik és lép kölcsönhatásba az új funkciókkal, és garantálja, hogy ne okozzanak problémát az adatbázis frissítésekor.
A testreszabott modulok üres adatbázison való működtetése segít elkerülni azokat a változtatásokat és hibás konfigurációkat, amelyek jelen lehetnek a termelési adatbázisban (mint például a studio testreszabás, testreszabott weboldal oldalak, e-mail sablonok vagy fordítások). Ezek nem intrinszikusan kapcsolódnak a testreszabott modulokhoz, és nem kívánt problémákat okozhatnak a frissítési folyamat ezen szakaszában.
Ahhoz, hogy a testreszabott modulok üres adatbázison működjenek, javasoljuk az alábbi lépések követését:
Testreszabott modulok telepíthetővé tétele¶
Az első lépés, hogy a testreszabott modulokat telepíthetővé tegyük az új Odoo verzióban. Ez azt jelenti, hogy biztosítjuk, hogy ne legyenek tracebacks vagy figyelmeztetések a telepítésük során. Ehhez telepítse a testreszabott modulokat egyenként az új Odoo verzió üres adatbázisába, és javítsa ki az ebből adódó tracebacks és figyelmeztetéseket.
Ez a folyamat segít azonosítani a modulok telepítése során felmerülő problémákat. Például:
Érvénytelen modulfüggőségek.
Szintaxis változás: eszközök deklarációja, OWL frissítések, attrs.
Hivatkozások standard mezőkre, modellekre, nézetekre, amelyek már nem léteznek vagy átnevezésre kerültek.
Xpath, amely áthelyezésre került vagy eltávolításra került a nézetekből.
Átnevezett vagy eltávolított metódusok.
…
Tesztelés és javítások¶
Miután a modulok telepítésekor már nincsenek visszakövetési hibák, a következő lépés azok tesztelése. Még ha az egyedi modulok telepíthetők is egy üres adatbázisra, ez nem garantálja, hogy nincsenek hibák a végrehajtásuk során. Emiatt javasoljuk, hogy alaposan teszteljék az összes testreszabást, hogy megbizonyosodjanak arról, hogy minden a várakozásoknak megfelelően működik.
Ez a folyamat segít további problémák felismerésében, amelyeket a modul telepítése során nem azonosítanak, és csak futásidőben észlelhetők. Például, elavult hívások standard python vagy OWL függvényekre, nem létező hivatkozások standard mezőkre, stb.
Javasoljuk, hogy teszteljék az összes testreszabást, különösen a következő elemeket:
Nézetek
Email sablonok
Jelentések
Szerver műveletek és automatizált műveletek
Változások a standard munkafolyamatokban
Számított mezők
Javasoljuk továbbá, hogy írjon automatizált teszteket az időmegtakarítás érdekében a tesztelési iterációk során, növelje a tesztlefedettséget, és biztosítsa, hogy a bevezetett változtatások és javítások ne törjék meg a meglévő folyamatokat. Ha már vannak tesztek implementálva a testreszabásban, győződjön meg róla, hogy frissítve vannak az új Odoo verzióra, és sikeresen futnak, javítva az esetlegesen jelen lévő problémákat.
Tisztítsa meg a kódot¶
A frissítési folyamat ezen szakaszában azt is javasoljuk, hogy tisztítsa meg a kódot, amennyire csak lehetséges. Ez magában foglalja:
Távolítsa el a redundáns és szükségtelen kódot.
Távolítsa el azokat a funkciókat, amelyek most már az Odoo standard részét képezik, ahogy az a 1. lépés: Fejlesztések leállítása részben le van írva.
Tisztítsa meg a megjegyzett kódot, ha már nincs rá szükség.
Refaktorálja a kódot (függvények, mezők, nézetek, jelentések stb.) szükség esetén.
Standard tesztek¶
Miután az előző lépések befejeződtek, javasoljuk, hogy győződjön meg arról, hogy az egyedi modul függőségeihez kapcsolódó összes standard teszt sikeresen lefut. A standard tesztek biztosítják a kód logikájának érvényesítését és megakadályozzák az adatok sérülését. Segítenek azonosítani a hibákat vagy nem kívánt viselkedést, mielőtt az adatbázisán dolgozna.
Abban az esetben, ha standard tesztek megbuknak, javasoljuk, hogy elemezze a kudarc okát:
A testreszabás megváltoztatja a standard munkafolyamatot: Igazítsa a standard tesztet a munkafolyamatához.
A testreszabás nem vette figyelembe egy speciális folyamatot: Igazítsa a testreszabását annak biztosítására, hogy minden standard munkafolyamatnál működjön.
4. lépés: Frissített adatbázis¶
Once the custom modules are installable and working properly in an empty database, it is time to make them work on an upgraded database.
Annak biztosítása érdekében, hogy az egyedi kód hibátlanul működjön az új verzióban, kövesse ezeket a lépéseket:
Adatok migrálása¶
During the upgrade of the custom modules, you might have to use upgrade scripts to reflect changes from the source code to their corresponding data. Together with the upgrade scripts, you can also make use of the Frissítési segédprogramok and its helper functions.
Bármilyen technikai adat, amelyet átneveztek a testreszabott kód frissítése során (modellek, mezők, külső azonosítók), átnevezési szkriptekkel kell átnevezni, hogy elkerüljük az adatvesztést a modul frissítése során. Lásd még:
rename_field(),rename_model(),rename_xmlid().Az újabb Odoo verzió forráskódjából és az adatbázisból a standard frissítési folyamat során eltávolított standard modellek adatait vissza kell állítani a régi modell táblából, ha az még mindig jelen van.
Example
A
sale.subscriptionmodell testreszabott mezői nem kerülnek automatikusan migrálásra Odoo 15-ről Odoo 16-ra (amikor a modellt összevonták asale.order-rel). Ebben az esetben egy SQL lekérdezést lehet végrehajtani egy frissítési szkripten, hogy az adatokat áthelyezzük az egyik táblából a másikba. Vegye figyelembe, hogy minden oszlopnak/mezőnek már léteznie kell, ezért fontolja meg, hogy ezt egypost-szkriptben tegye meg (Lásd: A frissítési szkriptek fázisai).def migrate(cr, version): cr.execute( """ UPDATE sale_order so SET custom_field = ss.custom_field FROM sale_subscription ss WHERE ss.new_sale_order_id = so.id """ )
Check the documentation for more information on Frissítési szkriptek.
A frissítési szkriptek a következőkre is használhatók:
A frissítés feldolgozási idejének megkönnyítése. Például, hogy az SQL lekérdezések használatával tároljuk a számított tárolt mezők értékét a túlzott számú rekorddal rendelkező modelleken.
Mezők újraszámítása abban az esetben, ha az értékük számítása megváltozott. Lásd még
recompute_fields().Távolítsa el a nem kívánt egyedi modulokat. Lásd még
remove_module().Javítsa ki a hibás adatokat vagy helytelen konfigurációkat.
Frissítési szkriptek futtatása és tesztelése¶
Mivel az Odoo Online adatbázisokon nem engedélyezett a Python fájlokat tartalmazó egyedi modulok telepítése, ezen a platformon nem lehet frissítési szkripteket futtatni.
As explained on the Odoo.sh tab of Frissített tesztadatbázis beszerzése, Odoo.sh is integrated with
the upgrade platform.
Once the upgrade of a staging branch is on „Update on commit” mode, each time a commit is pushed on the branch, the upgraded backup is restored and all the custom modules are updated. This update includes the execution of the upgrade scripts.
A termelési adatbázis frissítésekor a frissítési szkriptek végrehajtása is része az egyedi modulok frissítésének, amelyet a platform végez, amikor a frissített adatbázis visszaállításra kerül.
Miután megkapja az adatbázis frissített dumpját az Upgrade platform-ról, telepítse az adatbázist, és frissítse az összes egyedi modult az odoo-bin parancs meghívásával a shellben. Az egyedi modulok frissítéséhez használja a következő opciót: -u <modules>, --update <modules>.
Fontos
Amint azt a CLI dokumentációban említettük, a CLI hívására használt parancs attól függ, hogyan telepítette az Odoo-t.
Tesztelje az egyedi modulokat¶
Annak érdekében, hogy az egyedi modulok megfelelően működjenek az új adatbázisban lévő adataival, ezeket is tesztelni kell. Ez segít biztosítani, hogy az adatbázisban tárolt standard és egyedi adatok konzisztenssek legyenek, és hogy semmi ne vesszen el a frissítési folyamat során.
Figyelembe veendő dolgok:
Views not working: During the upgrade, if a view causes issues because of its content, it gets disabled. You can find the information on disabled views on the Upgrade report. This view needs to be activated again (or removed if not useful anymore). To achieve this, we recommend the use of upgrade scripts.
Modul adatok nem frissültek: Azok az egyedi rekordok, amelyek
noupdatejelzővel rendelkeznek, nem frissülnek, amikor a modult frissítik az új adatbázisban. Az új verzió változásai miatt frissítendő egyedi adatok esetében javasoljuk a frissítési szkriptek használatát. Lásd még:update_record_from_xml().
5. lépés: Tesztelés és próba¶
When the custom modules are working properly in the upgraded database, it is crucial to do another round of testing to assess the database usability and detect any issues that might have gone unnoticed in previous tests. For further information about testing the upgraded database, check Az adatbázis új verziójának tesztelése.
As mentioned in A termelési adatbázis frissítése, both standard upgrade scripts and your database are constantly evolving. Therefore it is highly recommended to frequently request new upgraded test databases and ensure that the upgrade process is still successful.
Ezen felül, a frissítési folyamat teljes próbáját végezze el a termelési adatbázis frissítése előtti napon, hogy elkerülje a nem kívánt viselkedést a frissítés során, és hogy észlelje az esetlegesen a migrált adatokkal kapcsolatos problémákat.
6. lépés: Termelési frissítés¶
Once you are confident about upgrading your production database, follow the process described on A termelési adatbázis frissítése, depending on the hosting type of your database.