Skip to content

Latest commit

 

History

History
161 lines (134 loc) · 23.8 KB

README-RU.MD

File metadata and controls

161 lines (134 loc) · 23.8 KB

en

Менеджер для разработки проектов на odoo (Odoo Developer Project Manager)

Цель проекта

Основная цель проекта - создать инструмент для разработчика на платформе 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/имя_каталога_проекта_разработки

Система будет пытаться подготовить ваш компьютер:

  1. Система будет задавать вопросы о том, какие параметры надо сохранить в файл .env
  2. Если вы разворачиваете проект с нуля, система попросит уточнить вас версию odoo и на основании этой информации сделает первоначальные настройки
  3. Будет запущен процесс клонирования основного репозитория odoo. Это занимает весьма значительное время 40 минут и более, поэтому наберитесь терпения
  4. Будет клонирован разрабатываемый репозиторий
  5. Будет автоматически сгенерирован Dockerfile для указанного дистрибутива и версии python
  6. После этого запустится автоматическая сборка Docker образа
  7. Будет автоматически сгенерирован файл docker-compose.yml
  8. Для VSCode будет сгенерирован конфигурационный файлы для корректной работы отладчика
  9. Автоматически запустится docker-compose up
  10. Будут установлены все python зависимости в виртуальное окружение
  11. Запустится 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.

Параметры .env:

Система попытается создать в домашнем каталоге пользователя вашей операционной системы каталог .odpm внутри которого поместит файл .env. Если вы запускаете приложение первый раз, то оно задаст вопрос по каждому ниже описанному пункту данного файла и предложит значения по умолчанию. Если вы не знаете что ответить просто жмите Enter. Если вы поместите файл.env в каталог с проектом то программа будет считать его приоритетным и попытается взять значения из файла внутри проекта.

  • BACKUP_DIR - каталог в котором находятся архивы. Используется для того, чтобы с помощью параметров командной строки указать имя базы для восстановления и тогда система будет искать архив с указанным именем в этом каталоге, или при сохранении базы в архив, он появится в этом каталоге, может применяться для всех проектов
  • ODOO_SRC_DIR - Каталог в котором должен находится полный клон репозитория самой платформы odoo. Я обычно его складываю в профиль своего пользователя. Используется всеми проектами.
  • ODOO_PROJECTS_DIR - создайте каталог, в котором будут создаваться клоны всех используемых репозиториев. Нужно только его создать и указать путь к этому каталогу, дальше система сама клонирует в него все репозитории и расположит их так, чтобы не возникало конфликтов
  • PATH_TO_SSH_KEY - если, по каким либо причинам у вас не получается добавить в ssh агент свой ключ для репозитория, то можете указать путь к нему здесь. На данный момент будет использоваться один ключ для всех репозиториев
  • ODOO_PORT - порт на котором по умолчанию будет запускаться odoo на адресе 127.0.0.1
  • POSTGRES_PORT - порт на котором по умолчанию будет запускаться СУБД PostgreSQL на адресе 127.0.0.1
  • DEBUGGER_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

Параметры user_settings.json:

  • 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 - Можно указать через запятую параметры для разработчиков. Смотрите официальную документацию для своей версии odoo
  • db_manager_password - пароль для менеджера баз данных
  • sql_queries - Список. Содержит в себе список строк, каждая из которых является sql скриптом, которые будут выполняться при использовании параметра командной строки --sql-execute
  • use_oca_dependencies - добавлена экспериментальная функция, которая позволяет автоматически загружать все зависимости которые указаны в файле "oca_dependencies.txt". Значение по умолчанию false
  • create_module_links - добавлена экспериментальная функция, добавляет мягкие ссылки всех модулей, которые участвуют в проекте в каталог odoo/odoo/addons. Это позволяет языковому серверу самостоятельно считывать пути импортов. Значение по умолчанию false

Параметры odpm.json:

  • 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

Поддерживаемые Linux дистрибутивы и версии в связке с версиями python

На данный момент для версии версий 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
  • Экспериментально:
    • Ubuntu 22.04 (Jammy)
      • Python 3.10
    • Ubuntu 20.04 (Focal)
      • Python 3.8

Параметры командной строки

  • --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 имя_базы.