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

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

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

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

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

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

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

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

Примітка

Since version 15.0, Odoo is actively transitioning to using its own in-house developed OWL framework as part of its presentation tier. The legacy JavaScript framework is still supported but will be deprecated over time. This will be discussed further in advanced topics.

Модулі Odoo

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

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

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

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

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

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

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

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

Object views

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

Файли даних

Файли 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.

Ready to start? It is now time to write your own application!