Створити модуль¶
Перш ніж створювати свій перший модуль, необхідно створити проект Odoo.sh та знати URL-адресу вашого репозиторію GitHub.
Глосарій
~/src- це каталог, де розташовані репозиторії Git, пов’язані з вашими проектами Odoo.odoo- це користувач GitHub.odoo-addons– це репозиторій GitHub.feature-1– це назва гілки розробки.main– це назва виробничої гілки.my_module– це назва модуля.
За потреби замінюйте їх.
Створіть гілку розробки¶
Зі сторінки Перегляд гілок:
На панелі навігації гілок натисніть кнопку + (Нова гілка розробки) поруч із Розробка.
У розділі Fork виберіть гілку
main.У розділі До введіть
feature-1.
Щойно збірка буде готова, ви зможете отримати доступ до редактор та коду вашої гілки розробки з папки ~/src/user.
Клонуйте свій репозиторій GitHub на своєму комп’ютері, виконавши такі команди:
mkdir ~/src cd ~/src git clone https://github.com/odoo/odoo-addons.git cd ~/src/odoo-addons
Створіть нову гілку, виконавши команду:
git checkout -b feature-1 main
Створіть структуру модуля¶
Каркас модуля¶
Хоча це не є обов’язковим, скамболінг дозволяє уникнути нудного налаштування базової структури модулів Odoo. Ви можете скамбольдтувати новий модуль за допомогою виконуваного файлу odoo-bin.
У терміналі редактор виконайте команду:
odoo-bin scaffold my_module ~/src/user/
З Odoo встановленим на вашому комп’ютері, виконайте:
./odoo-bin scaffold my_module ~/src/odoo-addons/
Порада
Якщо ви не хочете встановлювати Odoo на свій комп’ютер, ви також можете завантажити цей шаблон структури модуля. Замініть кожен екземпляр my_module на назву на ваш вибір.
Буде згенеровано структуру, наведену нижче:
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
Попередження
Використовуйте лише буквено-цифрові символи (a-z, 0-9) або символи підкреслення (_) під час найменування модуля, оскільки його назва використовується для класів Python, а назви класів, що містять спеціальні символи, окрім символів підкреслення, недійсні в Python.
Розкоментуйте наступні файли:
models/models.pyприклад моделі з її полямиviews/views.xmlдеревоподібне представлення та представлення форми з меню, що їх відкриваютьdemo/demo.xmlдемонстраційні записи для моделі-прикладуcontrollers/controllers.pyприклад контролера, що реалізує деякі маршрутиviews/templates.xmlдва приклади представлень qweb, що використовуються маршрутами контролера__manifest__.pyманіфест вашого модуля, включаючи його назву, опис та файли даних для завантаження. Розкоментуйте файл даних списку контролю доступу:# 'security/ir.model.access.csv',
Вручну¶
Щоб створити структуру модуля вручну, дотримуйтесь інструкцій Серверний фреймворк 101, щоб зрозуміти структуру модуля та вміст кожного файлу.
Push гілку розробки¶
Підготуйте зміни для фіксації, виконавши команду:
git add my_module
Зафіксуйте зміни, виконавши команду:
git commit -m "My first module"Надішліть зміни до віддаленого репозиторію, виконавши команду:
Виконати:
git push -u origin feature-1
Потрібно лише вказати
-u origin feature-1під час першого натискання. Після цього виконайте:git push
Перевірити модуль¶
Гілка має з’явитися в розділі Розробка навігаційної панелі Вигляд гілок.
Клацніть на назві гілки, щоб переглянути її історію, включаючи щойно надіслані зміни. Щойно база даних буде готова, натисніть Підключитися, щоб отримати до неї доступ.
Якщо ваш проект Odoo.sh налаштовано на автоматичне встановлення модуля, він відображатиметься безпосередньо на панелі інструментів бази даних. В іншому випадку він буде доступний для встановлення в застосунку Додатки.
Тест з виробничими даними¶
Примітка
Для цього кроку потрібна виробнича база даних. Якщо у вас її ще немає, створіть її.
Після того, як ви протестували модуль у розробницькій збірці з демонстраційними даними та вважаєте, що він готовий, ви можете протестувати його з продакшн-даними за допомогою проміжної гілки.
Ви можете:
Перетворіть вашу гілку development на гілку staging, перетягнувши її в розділ Staging.
Об’єднайте його з існуючою staging гілкою, перетягнувши його на цю гілку.
Використайте команду
git mergeдля об’єднання ваших гілок.
Це створює нову проміжну збірку, яка дублює робочу базу даних і запускає її на сервері, оновленому з урахуванням останніх змін вашої гілки.
Щойно база даних буде готова, натисніть Підключитися, щоб отримати до неї доступ.
Встановіть модуль¶
Встановіть модуль із програми Додатки. Оскільки модуль може не відображатися безпосередньо у списку додатків, оновіть список додатків, активувавши режим розробника та натиснувши .
Примітка
Модуль не встановлюється автоматично, оскільки метою проміжної збірки є тестування поведінки ваших змін так, як вони були б у робочій базі даних, тому вам не потрібно, щоб модуль встановлювався автоматично.
Розгорнути у виробництві¶
Після того, як ви протестували модуль у проміжній гілці з продакшн-даними та вважаєте, що він готовий до продакшну, ви можете об’єднати свою гілку з production-гілкою, виконавши такі дії:
Перетягування staging гілки на production гілку.
Використання команди
git mergeдля об’єднання ваших гілок.
Це об’єднує останні зміни з staging гілки у production гілку та оновлює ними production сервер.
Щойно база даних буде готова, натисніть Підключитися, щоб отримати до неї доступ.
Встановіть модуль¶
Встановіть модуль із програми Додатки. Оскільки модуль може не відображатися безпосередньо у списку додатків, оновіть список додатків, активувавши режим розробника та натиснувши .
Додати зміни¶
У цьому розділі пояснюється, як додати зміни до модуля, додавши нове поле в модель та розгорнувши його.
З редактор або з вашого комп’ютера відкрийте папку модуля
~/src/odoo-addons/my_module, потім відкрийте файлmodels/models.pyдля його редагування. Після поля опису:description = fields.Text()
додати поле дати та часу:
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
Відкрийте файл
views/views.xmlі після цього:<field name="value2"/>
додати:
<field name="start_datetime"/>
Ці зміни змінюють структуру бази даних, додаючи стовпець до таблиці та змінюючи представлення. Щоб застосувати ці зміни до існуючої бази даних, такої як ваша робоча база даних, потрібно оновити модуль. Якщо ви хочете, щоб оновлення виконувалося автоматично платформою Odoo.sh під час надсилання змін, збільште версію модуля в його маніфесті, відкривши
__manifest__.pyта замінивши:'version': '0.1',
з:
'version': '0.2',
Платформа виявить зміну версії та запустить оновлення модуля після розгортання нової редакції.
Далі, надішліть зміни.
Після того, як ви перевірили свої зміни, ви можете об’єднати їх у production гілку, наприклад, перетягнувши гілку на production-гілку в інтерфейсі Odoo.sh. Оскільки ви збільшили версію модуля в маніфесті, платформа автоматично оновить модуль, і ваше нове поле буде доступне негайно. В іншому випадку ви можете вручну оновити модуль у списку додатків.
Використовуйте зовнішню бібліотеку Python¶
Якщо ви хочете використовувати зовнішню бібліотеку Python, яка не встановлена за замовчуванням, ви можете визначити файл requirements.txt зі списком зовнішніх бібліотек, від яких залежать ваші модулі. Платформа використовуватиме цей файл для автоматичного встановлення бібліотек Python, необхідних вашому проєкту.
Примітка
Неможливо встановлювати або оновлювати системні пакети на базах даних Odoo.sh (наприклад, пакети apt). Однак, за певних умов, пакети можуть розглядатися для встановлення. Це також стосується модулів Python, для компіляції яких потрібні системні пакети, та сторонніх модулів Odoo.
Розширення PostgreSQL не підтримуються на Odoo.sh, тому неможливо встановити розширення (такі як PostGIS, ltree тощо) у базах даних Odoo.sh.
Наприклад, щоб використати бібліотеку Unidecode у вашому модулі:
Створіть файл
requirements.txtу кореневій папці вашого репозиторію:У редакторі Odoo.sh створіть та відкрийте файл
~/src/user/requirements.txt.На вашому комп’ютері створіть та відкрийте файл
~/src/odoo-addons/requirements.txt.
Додати до файлу:
unidecode
Тепер ви можете використовувати бібліотеку у своєму модулі, наприклад, для видалення наголосів із символів у полі назви вашої моделі. Для цього відкрийте файл
models/models.pyі перед цим додайте:from odoo import models, fields, api
додати:
from unidecode import unidecode
Після:
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
додати:
@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, відредагувавши маніфест модуля
__manifest__.py.Потім, надішліть зміни.
Порада
Підготуйте файл
requirements.txt, виконавши командуgit add requirements.txt.