Створити модуль

Перш ніж створювати свій перший модуль, необхідно створити проект Odoo.sh та знати URL-адресу вашого репозиторію GitHub.

Глосарій

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

  • odoo - це користувач GitHub.

  • odoo-addons – це репозиторій GitHub.

  • feature-1 – це назва гілки розробки.

  • main – це назва виробничої гілки.

  • my_module – це назва модуля.

За потреби замінюйте їх.

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

Зі сторінки Перегляд гілок:

  • На панелі навігації гілок натисніть кнопку + (Нова гілка розробки) поруч із Розробка.

  • У розділі Fork виберіть гілку main.

  • У розділі До введіть feature-1.

Розщеплення виробничої гілки для створення розробницької гілки на Odoo.sh

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

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

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

Хоча це не є обов’язковим, скамболінг дозволяє уникнути нудного налаштування базової структури модулів Odoo. Ви можете скамбольдтувати новий модуль за допомогою виконуваного файлу odoo-bin.

У терміналі редактор виконайте команду:

odoo-bin scaffold my_module ~/src/user/

Порада

Якщо ви не хочете встановлювати 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 гілку розробки

  1. Підготуйте зміни для фіксації, виконавши команду:

    git add my_module
    
  2. Зафіксуйте зміни, виконавши команду:

    git commit -m "My first module"
    
  3. Надішліть зміни до віддаленого репозиторію, виконавши команду:

    У терміналі редактор виконайте команду:

    git push https HEAD:feature-1
    

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

Гілка має з’явитися в розділі Розробка навігаційної панелі Вигляд гілок.

Приклад гілки розробки

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

Кнопка підключення для доступу до бази даних

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

Новий модуль на інф. панелі бази даних

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

Примітка

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

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

Ви можете:

  • Перетворіть вашу гілку development на гілку staging, перетягнувши її в розділ Staging.

  • Об’єднайте його з існуючою staging гілкою, перетягнувши його на цю гілку.

  • Використайте команду git merge для об’єднання ваших гілок.

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

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

Встановіть модуль

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

Примітка

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

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

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

  • Перетягування staging гілки на production гілку.

  • Використання команди git merge для об’єднання ваших гілок.

Це об’єднує останні зміни з staging гілки у production гілку та оновлює ними production сервер.

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

Встановіть модуль

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

Додати зміни

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

  1. З редактор або з вашого комп’ютера відкрийте папку модуля ~/src/odoo-addons/my_module, потім відкрийте файл models/models.py для його редагування. Після поля опису:

    description = fields.Text()
    

    додати поле дати та часу:

    start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
    
  2. Відкрийте файл views/views.xml і після цього:

    <field name="value2"/>
    

    додати:

    <field name="start_datetime"/>
    
  3. Ці зміни змінюють структуру бази даних, додаючи стовпець до таблиці та змінюючи представлення. Щоб застосувати ці зміни до існуючої бази даних, такої як ваша робоча база даних, потрібно оновити модуль. Якщо ви хочете, щоб оновлення виконувалося автоматично платформою Odoo.sh під час надсилання змін, збільште версію модуля в його маніфесті, відкривши __manifest__.py та замінивши:

    'version': '0.1',
    

    з:

    'version': '0.2',
    

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

  4. Далі, надішліть зміни.

  5. Після того, як ви перевірили свої зміни, ви можете об’єднати їх у production гілку, наприклад, перетягнувши гілку на production-гілку в інтерфейсі Odoo.sh. Оскільки ви збільшили версію модуля в маніфесті, платформа автоматично оновить модуль, і ваше нове поле буде доступне негайно. В іншому випадку ви можете вручну оновити модуль у списку додатків.

Використовуйте зовнішню бібліотеку Python

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

Примітка

  • Неможливо встановлювати або оновлювати системні пакети на базах даних Odoo.sh (наприклад, пакети apt). Однак, за певних умов, пакети можуть розглядатися для встановлення. Це також стосується модулів Python, для компіляції яких потрібні системні пакети, та сторонніх модулів Odoo.

  • Розширення PostgreSQL не підтримуються на Odoo.sh, тому неможливо встановити розширення (такі як PostGIS, ltree тощо) у базах даних Odoo.sh.

Наприклад, щоб використати бібліотеку Unidecode у вашому модулі:

  1. Створіть файл requirements.txt у кореневій папці вашого репозиторію:

    • У редакторі Odoo.sh створіть та відкрийте файл ~/src/user/requirements.txt.

    • На вашому комп’ютері створіть та відкрийте файл ~/src/odoo-addons/requirements.txt.

  2. Додати до файлу:

    unidecode
    
  3. Тепер ви можете використовувати бібліотеку у своєму модулі, наприклад, для видалення наголосів із символів у полі назви вашої моделі. Для цього відкрийте файл models/models.py і перед цим додайте:

    from odoo import models, fields, api
    

    додати:

    from unidecode import unidecode
    
  4. Після:

    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)
    
  5. Збільште версію модуля для встановлення залежності Python, відредагувавши маніфест модуля __manifest__.py.

  6. Потім, надішліть зміни.

    Порада

    Підготуйте файл requirements.txt, виконавши команду git add requirements.txt.