Setup guide¶
Залежно від передбачуваного використання Odoo можна встановити кількома способами. Як для розробників із Odoo community, так і для співробітників Odoo кращим способом є встановлення вихідного коду (запуск Odoo з вихідного коду).
Важливо
Follow the Налаштування середовища section of the contributing guide to prepare your environment for pushing local changes to the Odoo repositories.
Adapt the environment for the tutorials¶
By now, you should have downloaded the source code into two local repositories, one for odoo/odoo
and one for odoo/enterprise
. These repositories are set up to push changes to pre-defined
forks on GitHub. This will prove to be convenient when you start contributing to the codebase, but
in the scope of following a tutorial, we want to avoid polluting them with training material. Let’s
then push your changes in a third repository: odoo/tutorials
. Like the first two repositories, it
will be part of the addons-path
that references all directories containing Odoo modules.
Примітка
Depending on the tutorial that you are following, you might not need to install all the modules that this repository contains.
Following the same process as with the
odoo/odoo
andodoo/enterprise
repositories, clone theodoo/tutorials
repository on your machine with:$ git clone git@github.com:odoo/tutorials.git
Configure your fork and Git to push changes to your fork rather than to the main codebase. If you work at Odoo, configure Git to push changes to the shared fork created on the account odoo-dev.
Visit github.com/odoo/tutorials and click the Fork button to create a fork of the repository on your account.
In the command below, replace
<your_github_account>
with the name of the GitHub account on which you created the fork.$ cd /TutorialsPath $ git remote add dev git@github.com:<your_github_account>/tutorials.git
$ cd /tutorials $ git remote add dev git@github.com:odoo-dev/tutorials.git $ git remote set-url --push origin you_should_not_push_on_this_repository
Це воно! Тепер ваше середовище готове до запуску Odoo із вихідних кодів, і ви успішно створили репозиторій, який слугуватиме каталогом доповнень. Це дозволить вам передавати свою роботу на GitHub.
Важливо
For Odoo employees only:
Make sure to read very carefully Зробіть свій перший внесок. In particular, your branch name must follow our conventions.
Once you have pushed your first change to the shared fork on odoo-dev, create a PR. Please put your quadrigram in the PR title (e.g., «abcd - Technical Training»).
This will enable you to share your upcoming work and receive feedback from your coaches. To ensure a continuous feedback loop, we recommend pushing a new commit as soon as you complete a chapter of the tutorial. Note that the PR is automatically updated with commits you push to odoo-dev, you don’t need to open multiple PRs.
At Odoo we use Runbot extensively for our CI tests. When you push your changes to odoo-dev, Runbot creates a new build and test your code. Once logged in, you will be able to see your branches Tutorials project.
Примітка
The specific location of the repositories on your file system is not crucial. However, for the
sake of simplicity, we will assume that you have cloned all the repositories under the same
directory. If this is not the case, make sure to adjust the following commands accordingly,
providing the appropriate relative path from the odoo/odoo
repository to the
odoo/tutorials
repository.
Запустіть сервер¶
Запустіть за допомогою 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
: Install some modules before running the server (comma-separated list). This is equivalent to going to Apps in the user interface, and installing the module from there.-u
: Update some modules before running the server (comma-separated list). This is equivalent to going to Apps in the user interface, selecting a module, and upgrading it from there.
Увійдіть в Odoo¶
Відкрийте http://localhost:8069/ у своєму браузері. Ми рекомендуємо використовувати Chrome, Firefox або будь-який інший браузер із засобами розробки.
Щоб увійти як адміністратор, використовуйте такі облікові дані:
ел. адреса:
admin
пароль:
admin
Увімкніть режим розробника¶
The developer or debug mode is useful for training as it gives access to additional (advanced) tools. Enable the developer mode now. Choose the method that you prefer; they are all equivalent.
Додаткові інструменти¶
Корисні команди 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
: line too longE301
: expected 1 blank line, found 0E302
: expected 2 blank lines, found 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¶
Значення
виразу
надруковано за допомогою модуляpprint
.
- w(here)¶
Надрукуйте трасування стека з останнім кадром внизу.
- d(own)¶
Перемістіть поточний кадр на один рівень нижче в трасуванні стека (до нового кадру).
- u(p)¶
Перемістити поточний кадр на один рівень вище в трасуванні стека (до старішого кадру).
- n(ext)¶
Продовжуйте виконання, доки не буде досягнуто наступного рядка в поточній функції або вона не повернеться.
- c(ontinue)¶
Продовжуйте виконання та зупиняйтеся лише тоді, коли зустрічається точка зупину.
- s(tep)¶
Виконати поточний рядок. Зупиніться при першому можливому випадку (або у функції, яка викликається, або на наступному рядку в поточній функції).
- q(uit)¶
Закрийте налагоджувач. Програма, що виконується, переривається.