Ваш перший модуль¶
Огляд¶
Цей розділ допоможе вам створити ваш перший модуль Odoo та розгорнути його у вашому проекті Odoo.sh.
Цей підручник вимагає, щоб ви створили проект на Odoo.sh, і ви знаєте URL-адресу свого репозиторію Github.
Пояснено базове використання Git і Github.
Робляться наведені нижче припущення:
~/src - це каталог, у якому розташовані репозиторії Git, пов’язані з вашими проектами Odoo,
odoo є користувачем Github,
odoo-addons - це репозиторій Github,
feature-1 - назва development гілки,
master - назва production гілки,
my_module - назва модуля.
Замініть їх значеннями за вашим вибором.
Створіть development гілку¶
Від Odoo.sh¶
У режимі перегляду гілок:
натисніть кнопку
+
біля етапу development,виберіть гілку master у виборі Fork,
введіть feature-1 у полі До.
Після створення збірки ви можете отримати доступ до редактора та перейти до папки ~/src/user, щоб отримати доступ до коду вашої гілки development.


З комп’ютера¶
Клонуйте свій репозиторій Github на своєму комп’ютері:
$ mkdir ~/src
$ cd ~/src
$ git clone https://github.com/odoo/odoo-addons.git
$ cd ~/src/odoo-addons
Створити нову гілку:
$ git checkout -b feature-1 master
Створити структуру модуля¶
Scaffolding the module¶
Хоча це і не є необхідним, створення scaffolding дозволяє уникнути нудного налаштування базової структури модуля Odoo. Ви можете створювати новий модуль за допомогою виконуваного файлу odoo-bin.
З редактора Odoo.sh у терміналі:
$ 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
└── views
├── templates.xml
└── views.xml
Попередження
Не використовуйте для назви модуля спеціальні символи, окрім підкреслення ( _ ), навіть дефіс ( - ). Це ім’я використовується для класів 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',
Вручну¶
Якщо ви хочете створити структуру модуля вручну, ви можете ознайомитися з підручником Початок, щоб зрозуміти структуру модуля та вміст кожного файлу.
Завантажте гілку development¶
Поетапні зміни, які потрібно внести
$ git add my_module
Зафіксуйте свої зміни
$ git commit -m "My first module"
Надішліть свої зміни у віддалений репозиторій
З терміналу редактора Odoo.sh:
$ git push https HEAD:feature-1
Наведену вище команду пояснюється в розділі Закріплення та надсилання ваших змін розділу Онлайн-редактор. Він містить пояснення щодо того, що вам буде запропоновано ввести ім’я користувача та пароль, а також що робити, якщо ви використовуєте двофакторну автентифікацію.
Або з комп’ютерного терміналу:
$ git push -u origin feature-1
Потрібно вказати -u origin feature-1 лише для першого натискання. З цього моменту, щоб перенести ваші майбутні зміни з вашого комп’ютера, ви можете просто використовувати
$ git push
Тестування вашого модуля¶
Ваша гілка має відображатися у ваших гілках розробки у вашому проекті.

У перегляді гілок вашого проекту ви можете клацнути назву своєї гілки на панелі навігації ліворуч, щоб отримати доступ до її історії.

Тут ви можете побачити зміни, які ви щойно внесли, включно з коментарем, який ви встановили. Коли база даних буде готова, ви зможете отримати доступ до неї, натиснувши кнопку Підключитися.

Якщо ваш проект Odoo.sh налаштовано на автоматичне встановлення вашого модуля, ви побачите його безпосередньо серед програм бази даних. В іншому випадку він буде доступний у додатках для встановлення.
Потім ви можете пограти зі своїм модулем, створити нові записи та перевірити свої функції та кнопки.
Тест з production даними¶
Для цього кроку вам потрібна production база даних. Ви можете створити його, якщо у вас його ще немає.
Після того, як ви перевірили свій модуль у збірці розробки з демонстраційними даними і вважаєте, що він готовий, ви можете протестувати його з даними виробництва за допомогою staging гілки.
Ви можете:
Зробіть свою гілку development staging гілкою, перетягнувши її на назву розділу staging.
Об’єднайте його в існуючу staging гілку, перетягнувши його на дану staging гілку.
Ви також можете використовувати команду git merge
, щоб об’єднати свої гілки.
Це створить нову staging збірку, яка дублюватиме production базу даних і змусить її працювати за допомогою сервера, оновленого з вашими останніми змінами вашої гілки.

Коли база даних буде готова, ви зможете отримати доступ до неї за допомогою кнопки Підключитися.
Встановіть свій модуль¶
Ваш модуль не буде встановлено автоматично, його потрібно встановити з меню програм. Дійсно, метою проміжної збірки є перевірити поведінку ваших змін, як це було б у вашому виробництві, і у вашому виробництві ви б не хотіли, щоб ваш модуль встановлювався автоматично, а на вимогу.
Ваш модуль також може не відображатися безпосередньо у ваших додатках для встановлення, спершу потрібно оновити список додатків:
Активуйте режим розробника
у меню додатків натисніть кнопку Оновити список додатків,
у діалоговому вікні, що з’явиться, натисніть кнопку Оновити.
Після цього ваш модуль з’явиться у списку доступних додатків.

Розгорнути у виробництві¶
Після того, як ви перевірили свій модуль у staging гілці з вашими production даними та переконалися, що він готовий до production, ви можете об’єднати свою гілку з гілкою production.
Перетягніть свою staging гілку на production гілку.

Ви також можете використовувати команду git merge
, щоб об’єднати свої гілки.
Це об’єднає останні зміни вашої staging гілки в production гілку та оновить ваш робочий сервер цими останніми змінами.

Коли база даних буде готова, ви зможете отримати доступ до неї за допомогою кнопки Підключитися.
Встановіть свій модуль¶
Ваш модуль не буде встановлено автоматично, вам доведеться встановити його вручну, як описано в розділі вище про встановлення вашого модуля в staging базах даних.
Додати зміни¶
У цьому розділі пояснюється, як додати зміни у ваш модуль, додавши нове поле в модель, і розгорнути його.
- З редактора Odoo.sh,
перейдіть до папки вашого модуля ~/src/user/my_module,
потім відкрийте файл models/models.py.
- Або зі свого комп’ютера
використовуйте файловий браузер за вашим вибором, щоб перейти до папки вашого модуля ~/src/odoo-addons/my_module,
потім відкрийте файл models/models.py за допомогою редактора на ваш вибір, наприклад Atom, Sublime Text, PyCharm, vim, …
Потім після поля опису
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"/>
Ці зміни змінюють структуру бази даних, додаючи стовпець у таблицю та змінюючи вигляд, що зберігається в базі даних.
Щоб застосувати ці зміни в існуючих базах даних, наприклад у вашій production базі даних, потрібно оновити модуль.
Якщо ви бажаєте, щоб оновлення виконувалося автоматично платформою Odoo.sh під час внесення змін, збільште версію модуля в його маніфесті.
Відкрийте маніфест модуля __manifest__.py.
Замінити
'version': '0.1',
з
'version': '0.2',
Платформа виявить зміну версії та запустить оновлення модуля після розгортання нової версії.
Перейдіть до папки Git.
Потім з терміналу Odoo.sh:
$ cd ~/src/user/
Або з комп’ютерного терміналу:
$ cd ~/src/odoo-addons/
Потім поставте свої зміни до закріплення
$ git add my_module
Зафіксуйте свої зміни
$ git commit -m "[ADD] my_module: add the start_datetime field to the model my_module.my_module"
Надішліть свої зміни:
З терміналу Odoo.sh:
$ git push https HEAD:feature-1
Або з комп’ютерного терміналу:
$ git push
Потім платформа створить нову збірку для гілки feature-1.

Після того, як ви перевірили свої зміни, ви можете об’єднати свої зміни у production гілці, наприклад, перетягнувши гілку на production гілку в інтерфейсі Odoo.sh. Коли ви збільшите версію модуля в маніфесті, платформа автоматично оновить модуль, і ваше нове поле стане безпосередньо доступним. В іншому випадку ви можете вручну оновити модуль у списку додатків.
Використовуйте зовнішню бібліотеку Python¶
Якщо ви хочете використовувати зовнішню бібліотеку Python, яка не встановлена за замовчуванням, ви можете визначити файл requirements.txt зі списком зовнішніх бібліотек, від яких залежать ваші модулі.
Примітка
Неможливо встановити або оновити системні пакети в базі даних Odoo.sh (наприклад, пакети apt). Однак за певних умов пакети можуть розглядатися для встановлення. Це також стосується модулів Python, для компіляції яких потрібні системні пакунки, і модулів Odoo сторонніх розробників.
Розширення PostgreSQL не підтримуються на Odoo.sh.
Для отримання додаткової інформації зверніться до наших FAQ.
Платформа використовуватиме цей файл для автоматичного встановлення бібліотек Python, необхідних вашому проекту.
Ця функція пояснюється в цьому розділі за допомогою Бібліотеки 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
Замінити
'version': '0.2',
з
'version': '0.3',
Надішліть та зафіксуйте свої зміни:
$ 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"
Потім надішліть свої зміни:
У терміналі Odoo.sh:
$ git push https HEAD:feature-1
У терміналі комп’ютера:
$ git push