Посібник з налаштування¶
Залежно від передбачуваного використання Odoo можна встановити кількома способами. Як для розробників із Odoo community, так і для співробітників Odoo кращим способом є встановлення вихідного коду (запуск Odoo з вихідного коду).
Важливо
Дотримуйтесь інструкцій розділу Налаштування середовища посібника зі створення контенту, щоб підготувати своє середовище до внесення локальних змін до репозиторіїв Odoo.
Адаптуйте середовище для навчальних посібників¶
Наразі ви мали б завантажити вихідний код у два локальні репозиторії: один для odoo/odoo та один для odoo/enterprise. Ці репозиторії налаштовані на надсилання змін до попередньо визначених форків на GitHub. Це виявиться зручним, коли ви почнете робити внесок у кодову базу, але в рамках виконання навчального посібника ми хочемо уникнути її перевантаження навчальними матеріалами. Потім давайте надішлемо ваші зміни до третього репозиторію: odoo/tutorials. Як і перші два репозиторії, він буде частиною addons-path, який посилається на всі каталоги, що містять модулі Odoo.
Примітка
Залежно від посібника, який ви переглядаєте, вам може не знадобитися встановлювати всі модулі, що містяться в цьому репозиторії.
Дотримуючись тієї ж процедури, що й для репозиторіїв
odoo/odooтаodoo/enterprise, клонуйте репозиторійodoo/tutorialsна вашому комп’ютері за допомогою:$ git clone [email protected]:odoo/tutorials.git
Налаштуйте свій форк та Git для надсилання змін до вашого форку, а не до основної кодової бази. Якщо ви працюєте в Odoo, налаштуйте Git для надсилання змін до спільного форку, створеного для облікового запису odoo-dev.
Відвідайте github.com/odoo/tutorials та натисніть кнопку Fork, щоб створити форк репозиторію у вашому обліковому записі.
У команді нижче замініть
<your_github_account>на назву облікового запису GitHub, для якого ви створили форк.$ cd /TutorialsPath $ git remote add dev [email protected]:<your_github_account>/tutorials.git
$ cd /tutorials $ git remote add dev [email protected]:odoo-dev/tutorials.git $ git remote set-url --push origin you_should_not_push_on_this_repository
Це воно! Тепер ваше середовище готове до запуску Odoo із вихідних кодів, і ви успішно створили репозиторій, який слугуватиме каталогом доповнень. Це дозволить вам передавати свою роботу на GitHub.
Важливо
Тільки для співробітників Odoo:
Уважно прочитайте Зробіть свій перший внесок. Зокрема, назва вашої гілки має відповідати нашим правилам.
Після того, як ви надішлете свою першу зміну до спільного форку на odoo-dev, створіть PR. Будь ласка, додайте свою квадриграму до заголовка PR (наприклад, «abcd - Технічне навчання»).
Це дозволить вам ділитися інформацією про вашу майбутню роботу та отримувати відгуки від ваших коучів. Щоб забезпечити безперервний цикл зворотного зв’язку, ми рекомендуємо надсилати новий коміт одразу після завершення розділу посібника. Зверніть увагу, що список запитів на оновлення (PR) автоматично оновлюється з комітами, які ви надсилаєте до odoo-dev, вам не потрібно відкривати кілька PR.
В Odoo ми широко використовуємо Runbot для наших CI тестів. Коли ви надсилаєте зміни до odoo-dev, Runbot створює нову збірку та тестує ваш код. Після входу в систему ви зможете побачити свої гілки Tutorials project.
Примітка
Конкретне розташування репозиторіїв у вашій файловій системі не є критичним. Однак, для спрощення, ми вважатимемо, що ви клонували всі репозиторії в одному каталозі. Якщо це не так, обов’язково налаштуйте наступні команди відповідно, вказавши відповідний відносний шлях від репозиторію odoo/odoo до репозиторію odoo/tutorials.
Запустіть сервер¶
Запустіть за допомогою odoo-bin¶
Після встановлення всіх залежностей Odoo можна запустити, запустивши odoo-bin, інтерфейс командного рядка сервера.
$ cd $HOME/src/odoo/
$ ./odoo-bin --addons-path="addons/,../enterprise/,../tutorials" -d rd-demo
Існує кілька аргументів командного рядка, які можна використовувати для запуску сервера. У цьому тренінгу вам знадобляться лише деякі з них.
- -d <database>¶
База даних, яка буде використана.
- --addons-path <directories>¶
Список розділених комами каталогів, у яких зберігаються модулі. Ці каталоги скануються на наявність модулів.
- --limit-time-cpu <limit>¶
Запобігайте використанню воркером більше ніж <limit> секунд ЦП для кожного запиту.
- --limit-time-real <limit>¶
Запобігайте обробці запиту воркером довше <limit> секунд.
Порада
Аргументи
--limit-time-cpuі--limit-time-realможна використовувати, щоб запобігти знищенню робочої частини під час налагодження вихідного коду.- Ви можете зіткнутися з помилкою, подібною до
AttributeError: модуль '<MODULE_NAME>' не має атрибута '<$ATTRIBUTE'>. У цьому випадку вам може знадобитися повторно встановити модуль за допомогою $ pip install --upgrade --force-reinstall <MODULE_NAME>.Якщо ця помилка виникає з кількома модулями, вам може знадобитися перевстановити всі вимоги за допомогою $ pip install --upgrade --force-reinstall -r requirements.txt.Ви також можете очистити кеш python, щоб вирішити проблему:$ cd $HOME/.local/lib/python3.8/site-packages/ $ find -name '*.pyc' -type f -delete
Інші часто використовувані аргументи:
-i: Встановити деякі модулі перед запуском сервера (список, розділений комами). Це еквівалентно переходу до Додатки в інтерфейсі користувача та встановленню модуля звідти.-u: Оновити деякі модулі перед запуском сервера (список, розділений комами). Це еквівалентно переходу до Додатки в інтерфейсі користувача, вибору модуля та його оновлення звідти.
Увійдіть в Odoo¶
Відкрийте http://localhost:8069/ у своєму браузері. Ми рекомендуємо використовувати Chrome, Firefox або будь-який інший браузер із засобами розробки.
Щоб увійти як адміністратор, використовуйте такі облікові дані:
ел. адреса:
adminпароль:
admin
Увімкніть режим розробника¶
Режим розробника або налагодження корисний для навчання, оскільки він надає доступ до додаткових (розширених) інструментів. Увімкніть режим розробника зараз. Виберіть метод, який вам подобається; всі вони еквівалентні.
Додаткові інструменти¶
Корисні команди Git¶
Ось кілька корисних команд Git для вашої повсякденної роботи.
- Переключити гілки:Коли ви змінюєте гілки, обидва сховища (odoo та enterprise) мають бути синхронізовані, тобто обидва мають бути в одній гілці.
$ cd $HOME/src/odoo $ git switch 17.0 $ cd $HOME/src/enterprise $ git switch 17.0
Отримати та перебазувати:
$ cd $HOME/src/odoo $ git fetch --all --prune $ git rebase --autostash odoo/17.0 $ cd $HOME/src/enterprise $ git fetch --all --prune $ git rebase --autostash enterprise/17.0
Редактор коду¶
Якщо ви працюєте в Odoo, багато ваших колег використовують VSCode, VSCodium (еквівалент відкритого коду), PyCharm або Sublime Text. Однак ви можете вибрати бажаний редактор.
Важливо правильно налаштувати лінтери. Використання лінтера допомагає вам, показуючи синтаксичні та семантичні попередження або помилки. Вихідний код Odoo намагається дотримуватися стандартів Python і JavaScript, але деякі з них можна ігнорувати.
Для Python ми використовуємо PEP8, ігноруючи ці параметри:
E501: рядок занадто довгийE301: очікувався 1 порожній рядок, знайдено 0E302: очікувалося 2 порожніх рядки, знайдено 1
Для JavaScript ми використовуємо ESLint, і ви можете знайти приклад файлу конфігурації тут.
Інструменти адміністратора для PostgreSQL¶
Ви можете керувати своїми базами даних PostgreSQL за допомогою командного рядка, як було показано раніше, або за допомогою додатку з графічним інтерфейсом користувача, наприклад pgAdmin або DBeaver.
Щоб підключити додатку графічний інтерфейс користувача до вашої бази даних, ми рекомендуємо підключатися за допомогою сокета Unix.
Назва/адреса хосту:
/var/run/postgresqlПорт:
5432Ім’я користувача:
$USER
Налагодження Python¶
Коли ви стикаєтеся з помилкою або намагаєтеся зрозуміти, як працює код, просто роздрукувати речі може допомогти, але правильний налагоджувач може заощадити багато часу.
Ви можете використовувати класичний налагоджувач бібліотеки Python (pdb, pudb або ipdb), або ви можете скористатися налагоджувачем вашого редактора.
У наступному прикладі ми використовуємо ipdb, але процес подібний до інших бібліотек.
Встановити бібліотеку:
pip install ipdbРозмістіть тригер (точку зупину):
import ipdb; ipdb.set_trace()
Example
def copy(self, default=None): import ipdb; ipdb.set_trace() self.ensure_one() chosen_name = default.get('name') if default else '' new_name = chosen_name or _('%s (copy)') % self.name default = dict(default or {}, name=new_name) return super(Partner, self).copy(default)
Ось список команд:
- h(elp) [command]¶
Роздрукувати список доступних команд, якщо аргумент не надано. Використовуючи команду як аргумент, надрукуйте довідку про цю команду.
- pp expression¶
Значення
expressionнадруковано за допомогою модуляpprint.
- w(here)¶
Надрукуйте трасування стека з останнім кадром внизу.
- d(own)¶
Перемістіть поточний кадр на один рівень нижче в трасуванні стека (до нового кадру).
- u(p)¶
Перемістити поточний кадр на один рівень вище в трасуванні стека (до старішого кадру).
- n(ext)¶
Продовжуйте виконання, доки не буде досягнуто наступного рядка в поточній функції або вона не повернеться.
- c(ontinue)¶
Продовжуйте виконання та зупиняйтеся лише тоді, коли зустрічається точка зупину.
- s(tep)¶
Виконати поточний рядок. Зупиніться при першому можливому випадку (або у функції, яка викликається, або на наступному рядку в поточній функції).
- q(uit)¶
Закрийте налагоджувач. Програма, що виконується, переривається.