Розділ 1: Огляд архітектури

Багаторівневий додаток

Odoo дотримується багаторівневої архітектури, що означає, що представлення, бізнес-логіка та зберігання даних розділені. Точніше, він використовує трирівневу архітектуру (зображення з Вікіпедії):

Триярусна архітектура

Рівень презентації – це комбінація HTML5, JavaScript і CSS. Рівень логіки написаний виключно на Python, тоді як рівень даних підтримує лише PostgreSQL як RDBMS.

Залежно від обсягу вашого модуля, розробку Odoo можна виконувати на будь-якому з цих рівнів. Тому, перш ніж йти далі, варто освіжити пам’ять, якщо у вас немає середнього рівня в цих темах.

Щоб пройти цей підручник, вам знадобляться базові знання HTML і середній рівень Python. Просунуті теми вимагатимуть більше знань з інших предметів. Є багато навчальних посібників, які є у вільному доступі, тому ми не можемо рекомендувати одне замість іншого, оскільки це залежить від вашого досвіду.

Для довідки це офіційний підручник Python.

Примітка

Починаючи з версії 15.0, Odoo активно переходить на використання власного розробленого OWL-фреймворк як частини свого рівня презентацій. Застарілий JavaScript-фреймворк все ще підтримується, але з часом буде припинено використовуватись. Це буде обговорено далі в розширених темах.

Модулі Odoo

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

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

Таким чином, все в Odoo починається і закінчується модулями.

Термінологія: розробники групують свої бізнес-функції в модулях Odoo. Основні модулі, призначені для користувача, позначаються як Додатки, але більшість модулів не є додатками. Модулі також можуть називатися додатками, а каталоги, де сервер Odoo їх знаходить, утворюють addons_path.

Композиція модуля

Модуль Odoo може містити декілька елементів:

Бізнес-об’єкти

Бізнес-об’єкт (наприклад, рахунок-фактура) оголошується як клас Python. Поля, визначені в цих класах, автоматично зіставляються зі стовпцями бази даних завдяки шару ORM.

Представлення об’єкту

Визначте відображення інтерфейсу користувача

Файли даних

Файли XML або CSV, що декларують дані моделі:

Веб-контролери

Обробляти запити від веб-браузерів

Статичні веб-дані

Зображення, CSS або файли JavaScript, які використовуються веб-інтерфейсом або веб-сайтом

Жоден із цих елементів не є обов’язковим. Деякі модулі можуть лише додавати файли даних (наприклад, конфігурацію бухгалтерського обліку для певної країни), тоді як інші можуть додавати лише бізнес-об’єкти. Під час цього навчання ми будемо створювати бізнес-об’єкти, представлення об’єктів і файли даних.

Структура модуля

Кожен модуль є каталогом у каталозі модулів. Каталоги модулів вказуються за допомогою параметра --addons-path.

Модуль Odoo оголошується його маніфест.

Якщо модуль Odoo містить бізнес-об’єкти (тобто файли Python), вони організовані як пакет Python з __init__. файл py. Цей файл містить інструкції з імпорту для різних файлів Python у модулі.

Ось спрощений каталог модулів:

module
├── models
│   ├── *.py
│   └── __init__.py
├── data
│   └── *.xml
├── __init__.py
└── __manifest__.py

Видання Odoo

Odoo доступний у двох версіях: Odoo Enterprise (ліцензовані та спільні джерела) і Odoo Community (відкритий код). Окрім таких послуг, як підтримка чи оновлення, версія Enterprise надає Odoo додаткові функції. З технічної точки зору ці функції є просто новими модулями, встановленими поверх модулів, наданих версією Community.

Готові почати? Настав час написати власну програму!