Основная цель проекта - создать инструмент для разработчика на платформе odoo, который будет удовлетворять следующим требованиям:
- не зависеть от операционной системы
- по возможности не зависеть от архитектуры процессора (Для примера запуск на MacOS на базе M1)
- для передачи всей информации о проекте, достаточно иметь в репозитории проекта
odpm.json
, и система на его базе сможет легко подготовить новое окружение в полностью автоматическом режиме - иметь удобные инструменты, которые часто необходимы разработчику, например:
- быстрое удаление БД
- быстрое восстановление БД из архива
- создание новой БД со своими настройками (страна, язык, демо-данные и прочее)
- смена логина и пароля для администратора
- ... и многое другое
- механизмы для расширения функционала, на будущее
Если вы новичок, то рекомендуется использовать данный проект в связке с учебным демо https://github.com/aayartsev/odoo_demo_project
.
вам необходимо скачать и установить следующие программы:
Создаете папку где у вас будет располагаться новый проект. В конца имени проекта я добавляю еще через дефис номер версии odoo. Например odoo_demo_project-17
. Это связано с тем, что разница между версиями весьма существенна и я рассматриваю одни и те же модули для разных версий как разные проекты для разработки, не смотря на то что они могут находится в одном репозитории. В этом каталоге в дальнейшем будет находится ваше окружение проекта. Для этого необходимо его инициировать с помощью команды параметра --init
где можем указать ссылку на гит репозиторий (или локальный каталог) и с помощью параметра --branch
указываем конкретную ветку, на которую хотим переключить разрабатываемый проект:
Запускаем VSCode
затем через меню Файл - Открыть (File - Open Folder) Каталог, открываем ранее созданный каталог odoo_demo_project-17
.
Теперь запускаем терминал через меню Терминал - Создать Терминал (Terminal - New Terminal) и уже в нем вводите указанные ниже команды. Если кто-то, глядя на python скрипт захочет запустить его внутри виртуального окружения, то не надо этого делать. В данном случае он используется вместо системных скриптовых языков и вы только усложните себе жизнь. Виртуальное окружение для проекта будет установлено внутрь контейнера.
При самом первом запуске ранее описанной команды:
python3 /путь/к/клонированному/odoo_dev_project/odpm.py --init git@github.com:aayartsev/odoo_demo_project.git --branch 17.0-test_odpm_json
Если вы не хотите связываться с git
репозиторием по какой-либо причине, то вы можете создать локальный проект для разработки, просто указав нужный каталог место е
python3 /путь/к/клонированному/odoo_dev_project/odpm.py --init file:///ваш/путь/к/каталогу/odoo_demo_project-17/имя_каталога_проекта_разработки
Система будет пытаться подготовить ваш компьютер:
- Система будет задавать вопросы о том, какие параметры надо сохранить в файл
.env
- Если вы разворачиваете проект с нуля, система попросит уточнить вас версию odoo и на основании этой информации сделает первоначальные настройки
- Будет запущен процесс клонирования основного репозитория odoo. Это занимает весьма значительное время 40 минут и более, поэтому наберитесь терпения
- Будет клонирован разрабатываемый репозиторий
- Будет автоматически сгенерирован
Dockerfile
для указанного дистрибутива и версии python - После этого запустится автоматическая сборка Docker образа
- Будет автоматически сгенерирован файл
docker-compose.yml
- Для VSCode будет сгенерирован конфигурационный файлы для корректной работы отладчика
- Автоматически запустится
docker-compose up
- Будут установлены все python зависимости в виртуальное окружение
- Запустится odoo в обычном режиме
Остановить данный запущенный процесс можно сочетанием клавиш Ctrl+C
.
После этого можно запустить odoo в режиме разработчика
python3 /путь/к/клонированному/odoo_dev_project/odpm.py -d test_db -i -u
Данная команда запустит odoo внутри Docker контейнера и создаст новую базу с именем test_db
и установит туда модуль из указанного проекта
После этого вы можете открыть в браузере адрес http://127.0.0.1:8069
и увидите окно входа в систему.
Для работы системы требуется 2 конфигурационных файла:
odpm.json
- может находится в репозитории с проектом, содержит в себе необходимой информацию о том, как запустить данный проектuser_settings.json
- если файл не найден, он будет создан из значений по умолчанию. Содержит настройки и предпочтения конкретного разработчика
Данное приложение формирует в указанном каталоге окружение для проекта. Сам же проект, это каталог, который указан в параметре developing_project
файла user_settings.json
или ключ параметра --init
.
Система попытается создать в домашнем каталоге пользователя вашей операционной системы каталог .odpm
внутри которого поместит файл .env
. Если вы запускаете приложение первый раз, то оно задаст вопрос по каждому ниже описанному пункту данного файла и предложит значения по умолчанию. Если вы не знаете что ответить просто жмите Enter
. Если вы поместите файл.env
в каталог с проектом то программа будет считать его приоритетным и попытается взять значения из файла внутри проекта.
BACKUP_DIR
- каталог в котором находятся архивы. Используется для того, чтобы с помощью параметров командной строки указать имя базы для восстановления и тогда система будет искать архив с указанным именем в этом каталоге, или при сохранении базы в архив, он появится в этом каталоге, может применяться для всех проектовODOO_SRC_DIR
- Каталог в котором должен находится полный клон репозитория самой платформыodoo
. Я обычно его складываю в профиль своего пользователя. Используется всеми проектами.ODOO_PROJECTS_DIR
- создайте каталог, в котором будут создаваться клоны всех используемых репозиториев. Нужно только его создать и указать путь к этому каталогу, дальше система сама клонирует в него все репозитории и расположит их так, чтобы не возникало конфликтовPATH_TO_SSH_KEY
- если, по каким либо причинам у вас не получается добавить в ssh агент свой ключ для репозитория, то можете указать путь к нему здесь. На данный момент будет использоваться один ключ для всех репозиториевODOO_PORT
- порт на котором по умолчанию будет запускаться odoo на адресе 127.0.0.1POSTGRES_PORT
- порт на котором по умолчанию будет запускаться СУБД PostgreSQL на адресе 127.0.0.1DEBUGGER_PORT
- порт на котором по умолчанию будет запускаться отладчик на адресе 127.0.0.1
Пример для Linux:
BACKUP_DIR=/home/user/odoo_backups
ODOO_SRC_DIR=/home/user/odoo
ODOO_PROJECTS_DIR=/home/user/odoo_projects
PATH_TO_SSH_KEY=/home/user/.ssh/my_ssh_key
ODOO_PORT=8069
POSTGRES_PORT=5432
DEBUGGER_PORT=5678
init_modules
- Строка. Параметр, в котором указываются модули через запятую, без пробелов, которые будут про-инициированы(установлены) при (пере)запуске системы.update_modules
- Строка. Параметр, в котором указываются модули через запятую, без пробелов, которые будут обновлены при (пере)запуске системыdb_creation_data
- Объект. Параметры которые определяют создание новой базыdb_lang
- Строка. Укажите язык системы по умолчанию про создании новой базы, например:"en_US"
или"ru_RU"
db_country_code
- Строка илиfalse
Укажите код страны по умолчанию про создании новой базы, например:"ru"
create_demo
- Булево. Указывает на то, нужно ли создавать в системе демо данные при создании новой базы.db_default_admin_login
- Строка. Логин для учетной записи администратораdb_default_admin_password
- Строка. Пароль для учетной записи администратора
update_git_repos
- Булево. Указывает на то, будут ли обновлены репозитории зависимостей и самой odoo при перезапуске системыclean_git_repos
- Булево. Указывает на то, будут ли при перезапуске сбрасываться изменения в самой odoo и проектах зависимостейcheck_system
- Булево. Указывает на то, будет ли запускаться проверка системы при старте. Полезно для новичков. Проверяет наличие установленногоgit
,docker
иdocker-compose
.developing_project
- Строка. Ссылка на проект, который вы разрабатываете. Пример:"git@github.com:aayartsev/odoo_demo_project.git"
pre_commit_map_files
- Список. Список файлов для системыpre-commit
, которые выносятся из проекта и пробрасываются туда через сопоставление файлов docker. Нужно для работы не на Linux системахdev_mode
- Можно указать через запятую параметры для разработчиков. Смотрите официальную документацию для своей версии odoodb_manager_password
- пароль для менеджера баз данныхsql_queries
- Список. Содержит в себе список строк, каждая из которых является sql скриптом, которые будут выполняться при использовании параметра командной строки--sql-execute
use_oca_dependencies
- добавлена экспериментальная функция, которая позволяет автоматически загружать все зависимости которые указаны в файле"oca_dependencies.txt"
. Значение по умолчаниюfalse
create_module_links
- добавлена экспериментальная функция, добавляет мягкие ссылки всех модулей, которые участвуют в проекте в каталогodoo/odoo/addons
. Это позволяет языковому серверу самостоятельно считывать пути импортов. Значение по умолчаниюfalse
python_version
- Строка. Версия python, указывается в текстовом виде его номер, например"3.10"
или"3.7"
,distro_name
- Строка. Имя дистрибутива, на базе которого будет создаваться образ для запуска odoo. Над данный момент пока поддерживается только"debian"
distro_version
- Строка. Версия дистрибутива указанного в ключеdistro_name
, указывается в текстовом виде его версия или кодовое имя, например"11"
или"bullseye"
,odoo_version
- Строка. Версия системы. Примеры:"16.0"
,"15.0"
,"11.0"
dependencies
- Список. Список ссылок на репозитории проектов, от которых зависит ваш проектrequirements_txt
- Список. Список python модулей, каждый элемент может оформляться так же как и строка в файле requirements.txt
На данный момент для версии версий odoo с 11 по 16 включительно протестировано и стабильно работает python 3.7 на базе debian 11(bullseye). Так же протестировано и стабильно работает версии odoo с 16 по 17 для версия python 3.10 на базе дистрибутивов debian 11(bullseye) и debian 12(bullseye) Начата экспериментальная поддержка дистрибутивов ubuntu, но она пока в начальном состоянии и все эксперименты на ваше усмотрение. Поддерживаемые дистрибутивы и версии:
- Стабильно:
- Debian 11 (Bullseye)
- Python 3.7, 3.10
- Debian 12 (Bullseye)
- Python 3.10
- Debian 11 (Bullseye)
- Экспериментально:
- Ubuntu 22.04 (Jammy)
- Python 3.10
- Ubuntu 20.04 (Focal)
- Python 3.8
- Ubuntu 22.04 (Jammy)
--init
- инициировать проект в текущем каталоге. В качестве параметра можно указать ссылку наgit
репозиторий--branch
- используется совместно с параметром--init
для того, чтобы указать ветку клонируемогоgit
репозитория-d
- указать имя базы данных для работы, если такой базы не существует, она будет создана автоматически, на основании параметровdb_creation_data
параметра файла конфигурацииuser_settings.json
-i
- параметр указывает на то что нужно проинициализировать модули указанные в параметреinit_modules
файла конфигурацииuser_settings.json
-u
- параметр указывает на то что нужно обновить модули указанные в параметреupdate_modules
файла конфигурацииuser_settings.json
-t
- запустит тесты модулей указанных в параметреinit_modules
иupdate_modules
файла конфигурацииuser_settings.json
, работает только при использовании параметров-d
,-i
,-u
, если база создается с нуля, то для всех устанавливаемых модулей будут запущены тесты, это может занять много времени--get-dbs-list
- выводит список баз данных--db-restore
- система попытается восстановить архив БД в качестве параметра указывается имя архива, который должен находится в каталоге, указанным в параметреBACKUP_DIR
файла.env
, имя БД при восстановлении будет взято из параметра-d
--db-backup
- система попытается создать архив БД в качестве параметра может указываться имя архива, который будет создан в каталоге, указанным в параметреBACKUP_DIR
файла.env
. Если имя не указано, то оно будет сгенерировано автоматически по шаблону имя БД будет взято из параметра-d
плюс временная метка, имя БД при для архивирования будет взято из параметра-d
--db-drop
- в качестве параметра указывается имя базы данных, которую необходимо удалить, если использовать совместно с флагами-d
,-i
,-u
, и указать одно и тоже имя БД, то система сначала удалит базу, а затем создаст новую с таким же именем и установит указанные модули--translate
- Принимает в качестве параметра код языка, напримерru_RU
, при использовании данного параметра, система добавит соответствующий язык в систему и обновит все термины из модулей указанных в параметреinit_modules
иupdate_modules
файла конфигурацииconfig.json
, работает только при использовании параметров-d
,-i
,-u
--pip-install
- указывает системе на то, что нужно установить зависимости для указанной в параметреodoo_version
версии odoo и зависимостей указанных в файлеrequirements.txt
в каталогеdev_project
.--start-precommit
- запускает проверку прекоммита для разрабатываемого проекта, указанного в параметреdeveloping_project
файла конфигурацииuser_settings.json
.--build-image
- запустит сборку образа Docker для вашего проекта--set-admin-pass
- при использовании данного параметра, у учетной записи администратора будет изменен пароль и логин на указанные в параметреdb_default_admin_login
иdb_default_admin_password
в файле конфигурацииuser-settings.json
. Обязательно нужно указать имя базы для которой вы хотите поменять пароль и использовать параметр-d имя_базы
--sql-execute
- при использовании данного параметра, будут запущены sql скрипты, которые указаны в параметраsql_queries
файла конфигурацииuser_settings.json
. Каждый скрипт, это отдельная строка, которая является элементом списка. Обязательно нужно указать имя базы для которой вы хотите поменять пароль и использовать параметр-d имя_базы
.