Ваш перший модуль

Загальний огляд

Цей розділ допоможе вам створити ваш перший модуль Odoo та розгорнути його у вашому проекті Odoo.sh.

Цей підручник вимагає, щоб ви створили проект на Odoo.sh, і ви знаєте URL-адресу свого сховища Github.

Пояснено базове використання Git і Github.

Робляться наведені нижче припущення.

  • ~/src - це каталог, у якому розташовані репозиторії Git, пов’язані з вашими проектами Odoo,

  • odoo є користувачем Github,

  • odoo-addons - це сховище Github,

  • feature-1 - назва гілки розробки,

  • master - назва виробничої гілки,

  • my_module - назва модуля.

Замініть їх значеннями за вашим вибором.

Створіть гілку розробки

Від Odoo.sh

У режимі перегляду гілок:

  • натисніть кнопку + біля етапу розробки,

  • виберіть гілку master у виборі Fork,

  • введіть feature-1 у полі To.

    pic1 pic2

Після створення збірки ви можете отримати доступ до редактора та перейти до папки ~/src/user, щоб отримати доступ до коду вашої гілки розробки.

../../../_images/firstmodule-development-editor.png ../../../_images/firstmodule-development-editor-interface.png

З комп’ютера

Клонуйте свій репозиторій Github на своєму комп’ютері:

$ mkdir ~/src
$ cd ~/src
$ git clone https://github.com/odoo/odoo-addons.git
$ cd ~/src/odoo-addons

Створіть нову гілку:

$ git checkout -b feature-1 master

Створіть структуру модуля

Каркас модуля

Хоча це і не є необхідним, створення каркасів дозволяє уникнути нудного налаштування базової структури модуля 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',
    

Вручну

Якщо ви хочете створити структуру модуля вручну, ви можете ознайомитися з підручником Server framework 101, щоб зрозуміти структуру модуля та вміст кожного файлу.

Проштовхніть гілку розробки

Поетапні зміни, які потрібно внести

$ 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

Перевірте свій модуль

Ваша гілка має відображатися у ваших гілках розробки у вашому проекті.

../../../_images/firstmodule-test-branch.png

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

../../../_images/firstmodule-test-branch-history.png

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

../../../_images/firstmodule-test-database.png

Якщо ваш проект Odoo.sh налаштовано на автоматичне встановлення вашого модуля, ви побачите його безпосередньо серед програм бази даних. В іншому випадку він буде доступний у додатках для встановлення.

Потім ви можете пограти зі своїм модулем, створити нові записи та перевірити свої функції та кнопки.

Тест з виробничими даними

Для цього кроку вам потрібна виробнича база даних. Ви можете створити його, якщо у вас його ще немає.

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

Ви можете:

  • Зробити свою гілку розробки проміжною гілкою, перетягнувши її на назву розділу staging.

    ../../../_images/firstmodule-test-devtostaging.png
  • Об’єднати її в існуючу проміжну гілку, перетягнувши його на дану проміжну гілку.

    ../../../_images/firstmodule-test-devinstaging.png

Ви також можете використовувати команду git merge, щоб об’єднати свої гілки.

Це створить нову проміжну збірку, яка дублюватиме виробничу базу даних і змусить її працювати за допомогою сервера, оновленого з вашими останніми змінами вашої гілки.

../../../_images/firstmodule-test-mergedinstaging.png

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

Встановлення свого модуля

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

Ваш модуль також може не відображатися безпосередньо у ваших програмах для встановлення, спершу потрібно оновити список додатків:

  • Активуйте режим розробника

  • у меню додатків натисніть кнопку Оновити список додатків,

  • у діалоговому вікні, що з’явиться, натисніть кнопку Оновити.

    ../../../_images/firstmodule-test-updateappslist.png

Після цього ваш модуль з’явиться у списку доступних додатків.

../../../_images/firstmodule-test-mymoduleinapps.png

Розгорнути у виробництві

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

Перетягніть свою проміжну гілку на виробничу гілку.

../../../_images/firstmodule-test-mergeinproduction.png

Ви також можете використовувати команду git merge, щоб об’єднати свої гілки.

Це об’єднає останні зміни вашої проміжної гілки в виробничу гілку та оновить ваш робочий сервер цими останніми змінами.

../../../_images/firstmodule-test-mergedinproduction.png

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

Встановлення свого модуля

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

Додати зміни

У цьому розділі пояснюється, як додати зміни у ваш модуль, додавши нове поле в модель, і розгорнути його.

Від редактора 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"/>

Ці зміни змінюють структуру бази даних, додаючи стовпець у таблицю та змінюючи вигляд, що зберігається в базі даних.

Щоб застосувати ці зміни в існуючих базах даних, таких як ваша робоча база даних, потрібно оновити модуль.

Якщо ви бажаєте, щоб оновлення виконувалося автоматично платформою 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.

../../../_images/firstmodule-test-addachange-build.png

Після того, як ви протестували свої зміни, ви можете об’єднати свої зміни у виробничій гілці, наприклад, перетягнувши гілку на виробничу гілку в інтерфейсі 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