Utwórz moduł¶
Przed utworzeniem pierwszego modułu konieczne jest utworzenie projektu Odoo.sh oraz poznanie adresu URL repozytorium GitHub.
Słowniczek
~/srcto katalog, w którym znajdują się repozytoria Git związane z projektami Odoo.odooto użytkownik GitHub.odoo-addonsto repozytorium GitHub.feature-1to nazwa gałęzi deweloperskiej.mainto nazwa gałęzi produkcyjnej.my_moduleto nazwa modułu.
Zastąp je w razie potrzeby.
Utwórz gałąź deweloperską¶
W panelu nawigacji gałęzi kliknij przycisk + (Nowa gałąź deweloperska) obok Deweloperskie.
W sekcji Rozgałęzienie wybierz gałąź
main.W sekcji Do wprowadź
feature-1.
Gdy kompilacja będzie gotowa, możesz uzyskać dostęp do edytora i kodu gałęzi deweloperskiej z folderu ~/src/user.
Sklonuj swoje repozytorium GitHub na komputerze, uruchamiając następujące polecenia:
mkdir ~/src cd ~/src git clone https://github.com/odoo/odoo-addons.git cd ~/src/odoo-addons
Utwórz nową gałąź, uruchamiając:
git checkout -b feature-1 main
Utwórz strukturę modułu¶
Tworzenie struktury¶
Chociaż nie jest to wymagane, tworzenie struktury pozwala uniknąć żmudnego ręcznego konfigurowania podstawowej struktury modułu Odoo. Możesz utworzyć strukturę nowego modułu za pomocą pliku wykonywalnego odoo-bin.
Z terminala edytora uruchom:
odoo-bin scaffold my_module ~/src/user/
Z zainstalowanym Odoo na komputerze uruchom:
./odoo-bin scaffold my_module ~/src/odoo-addons/
Wskazówka
Jeśli nie chcesz instalować Odoo na swoim komputerze, możesz również pobrać ten szablon struktury modułu. Zastąp każde wystąpienie my_module wybraną przez siebie nazwą.
Zostanie wygenerowana następująca struktura:
my_module
├── __init__.py
├── __manifest__.py
├── controllers
│ ├── __init__.py
│ └── controllers.py
├── demo
│ └── demo.xml
├── models
│ ├── __init__.py
│ └── models.py
├── security
│ ├── ir.model.access.csv
│ └── models.py
└── views
├── templates.xml
└── views.xml
Ostrzeżenie
Używaj tylko znaków alfanumerycznych (a-z, 0-9) lub podkreśleń (_) podczas nazywania modułu, ponieważ jego nazwa jest używana dla klas Pythona, a nazwy klas zawierające znaki specjalne inne niż podkreślenia nie są prawidłowe w Pythonie.
Odkomentuj następujące pliki:
models/models.pyprzykład modelu z jego polamiviews/views.xmlwidok drzewa i formularz z menu otwierającymi jedemo/demo.xmlprzykładowe rekordy dla przykładowego modelucontrollers/controllers.pyprzykład kontrolera implementującego niektóre trasyviews/templates.xmldwa przykładowe widoki qweb używane przez trasy kontrolera__manifest__.pymanifest twojego modułu, zawierający jego tytuł, opis i pliki danych do załadowania. Odkomentuj plik danych listy kontroli dostępu:# 'security/ir.model.access.csv',
Ręcznie¶
Aby ręcznie utworzyć strukturę modułu, postępuj zgodnie z samouczkiem Server framework 101, aby zrozumieć strukturę modułu i zawartość każdego pliku.
Wypchnij na gałąź deweloperską¶
Przygotuj zmiany do zatwierdzenia, uruchamiając:
git add my_module
Zatwierdź swoje zmiany, uruchamiając:
git commit -m "My first module"Wypchnij swoje zmiany do zdalnego repozytorium, uruchamiając:
Z terminala edytora uruchom:
git push https HEAD:feature-1
Uruchom:
git push -u origin feature-1
Określenie
-u origin feature-1jest konieczne tylko przy pierwszym wypychaniu. Następnie uruchom:git push
Przetestuj moduł¶
Gałąź powinna pojawić się w sekcji Programowanie panelu nawigacji Widok gałęzi.
Kliknij nazwę gałęzi, aby wyświetlić jej historię, w tym zmiany, które właśnie wypchnąłeś. Gdy baza danych będzie gotowa, kliknij Połącz, aby uzyskać do niej dostęp.
Jeśli Twój projekt Odoo.sh jest skonfigurowany do automatycznej instalacji modułu, pojawi się on bezpośrednio na konsoli bazy danych. W przeciwnym razie będzie dostępny do instalacji w aplikacji Aplikacje.
Testuj z danymi produkcyjnymi¶
Informacja
Do tego kroku wymagana jest produkcyjna baza danych. Jeśli jeszcze jej nie masz, utwórz ją.
Po przetestowaniu modułu w kompilacji programistycznej z danymi demo i upewnieniu się, że jest gotowy, możesz przetestować go z danymi produkcyjnymi za pomocą gałęzi przejściowej.
Możesz:
Przekonwertować gałąź programistyczną na gałąź przejściową, przeciągając i upuszczając ją w sekcji Przejściowe.
Scalić ją z istniejącą gałęzią przejściową, przeciągając i upuszczając na tę gałąź.
Użyć polecenia
git merge, aby scalić swoje gałęzie.
Tworzy to nową kompilację przejściową, która duplikuje produkcyjną bazę danych i uruchamia ją na serwerze zaktualizowanym najnowszymi zmianami z Twojej gałęzi.
Gdy baza danych będzie gotowa, kliknij Połącz, aby uzyskać do niej dostęp.
Zainstaluj moduł¶
Zainstaluj moduł z aplikacji Aplikacje. Ponieważ moduł może nie pojawić się bezpośrednio na liście aplikacji, zaktualizuj listę aplikacji, aktywując tryb programisty i klikając .
Informacja
Moduł nie jest instalowany automatycznie, ponieważ celem kompilacji przejściowej jest przetestowanie zachowania zmian tak, jak byłyby one w produkcyjnej bazie danych, więc nie chcesz, aby moduł był instalowany automatycznie.
Wdróż na produkcję¶
Po przetestowaniu modułu w gałęzi przejściowej z danymi produkcyjnymi i przekonaniu się, że jest gotowy do produkcji, możesz scalić swoją gałąź z gałęzią produkcyjną poprzez:
Przeciągnięcie i upuszczenie gałęzi przejściowej na gałąź produkcyjną.
Użycie polecenia
git mergedo scalenia gałęzi.
To scala najnowsze zmiany z gałęzi przejściowej do gałęzi produkcyjnej i aktualizuje nimi serwer produkcyjny.
Gdy baza danych będzie gotowa, kliknij Połącz, aby uzyskać do niej dostęp.
Zainstaluj moduł¶
Zainstaluj moduł z aplikacji Aplikacje. Ponieważ moduł może nie pojawić się bezpośrednio na liście aplikacji, zaktualizuj listę aplikacji, aktywując tryb programisty i klikając .
Dodaj zmianę¶
Ta sekcja wyjaśnia, jak dodać zmianę w module poprzez dodanie nowego pola w modelu i wdrożenie go.
Z poziomu edytora lub ze swojego komputera otwórz folder modułu
~/src/odoo-addons/my_module, następnie otwórz plikmodels/models.py, aby go edytować. Po polu opisu:description = fields.Text()
dodaj pole datetime:
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
Otwórz plik
views/views.xmli po:<field name="value2"/>
dodaj:
<field name="start_datetime"/>
Te zmiany modyfikują strukturę bazy danych poprzez dodanie kolumny do tabeli i modyfikację widoku. Aby zastosować je do istniejącej bazy danych, takiej jak baza produkcyjna, te zmiany wymagają aktualizacji modułu. Jeśli chcesz, aby aktualizacja była wykonywana automatycznie przez platformę Odoo.sh po wypchnięciu zmian, zwiększ wersję modułu w jego manifeście, otwierając
__manifest__.pyi zastępując:'version': '0.1',
wartością:
'version': '0.2',
Platforma wykryje zmianę wersji i uruchomi aktualizację modułu po wdrożeniu nowej rewizji.
Następnie wypchnij zmiany.
Po przetestowaniu zmian możesz scalić je z gałęzią produkcyjną, na przykład przeciągając i upuszczając gałąź na gałąź produkcyjną w interfejsie Odoo.sh. Ponieważ zwiększyłeś wersję modułu w manifeście, platforma automatycznie zaktualizuje moduł, a Twoje nowe pole będzie natychmiast dostępne. W przeciwnym razie możesz ręcznie zaktualizować moduł z listy aplikacji.
Użycie zewnętrznej biblioteki Pythona¶
Jeśli chcesz użyć zewnętrznej biblioteki Pythona, która nie jest zainstalowana domyślnie, możesz zdefiniować plik requirements.txt zawierający listę zewnętrznych bibliotek, od których zależą Twoje moduły. Platforma użyje tego pliku do automatycznej instalacji bibliotek Pythona wymaganych przez Projekt.
Informacja
Nie jest możliwa instalacja ani aktualizacja pakietów systemowych w bazach danych Odoo.sh (np. pakiety apt). Jednak w szczególnych warunkach pakiety mogą być rozważone do instalacji. Dotyczy to również modułów Pythona wymagających pakietów systemowych do kompilacji oraz modułów Odoo innych producentów.
Rozszerzenia PostgreSQL nie są obsługiwane w Odoo.sh, dlatego nie jest możliwa instalacja rozszerzeń (takich jak PostGIS, ltree, …) w bazach danych Odoo.sh.
Na przykład, aby użyć biblioteki Unidecode w swoim module:
Utwórz plik
requirements.txtw folderze głównym repozytorium:W edytorze Odoo.sh utwórz i otwórz plik
~/src/user/requirements.txt.Na swoim komputerze utwórz i otwórz plik
~/src/odoo-addons/requirements.txt.
Dodaj do pliku:
unidecode
Możesz teraz używać biblioteki w swoim module, na przykład do usuwania akcentów ze znaków w polu nazwy swojego modelu. W tym celu otwórz plik
models/models.pyi przed:from odoo import models, fields, api
dodaj:
from unidecode import unidecode
Po:
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
dodaj:
@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)
Zwiększ wersję modułu, aby zainstalować zależność Pythona, edytując manifest modułu
__manifest__.py.Następnie wypchnij zmiany.
Wskazówka
Dodaj plik
requirements.txtdo staging uruchamiającgit add requirements.txt.