Розділ 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.
Готові почати? Настав час написати власну програму!