Merge branch 'develop'
- improve selenium web_login, disable web tour, enable dark mode - update poetry odoo 18 - upgrade postgresql to 18 with database fix - improve erplibre test async - improve code generator extract model and new project code error
This commit is contained in:
commit
ce6e7d4cc6
22 changed files with 1233 additions and 674 deletions
12
CHANGELOG.md
12
CHANGELOG.md
|
|
@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|||
|
||||
## [Unreleased]
|
||||
|
||||
**Migration notes**
|
||||
|
||||
Recreating the virtual environment, use installation guide from tool `make`.
|
||||
|
||||
## Added
|
||||
|
||||
- Support Odoo migration database and module with TODO
|
||||
|
|
@ -16,10 +20,18 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|||
- Separate ERPLibre python installation from Odoo python with .venv.erplibre and .venv.odoo18
|
||||
- Implement auto-installation with TODO.py
|
||||
- TODO show documentation, download database, help with code formatting
|
||||
- Performance script to mesure request per second
|
||||
- Support Mainframe architecture 390x
|
||||
- Deployment with Cloudflare and Nginx
|
||||
- Support Apache configuration like Nginx
|
||||
- Support RobotLibre code generator
|
||||
- Support ERPLibre DevOps, automation procedure about DevOps
|
||||
- ERPLibre Home Mobile Application, use TODO to compile, deploy it and personalize it
|
||||
|
||||
## Changed
|
||||
|
||||
- Docker support postgresql 18
|
||||
- Format script search diff file into each repository
|
||||
|
||||
## [1.6.0] - 2025-04-25
|
||||
|
||||
|
|
|
|||
1
Makefile
1
Makefile
|
|
@ -1,5 +1,6 @@
|
|||
SHELL := /bin/bash
|
||||
LOG_FILE := ./.venv.$(cat ".erplibre-version" | xargs)/make_test.log
|
||||
ODOO_VERSION := $(shell cat .odoo-version | xargs)
|
||||
#############
|
||||
# General #
|
||||
#############
|
||||
|
|
|
|||
|
|
@ -98,29 +98,29 @@ addons_install_all_code_generator_template:
|
|||
./script/addons/install_addons_dev.sh template demo_portal,auto_backup,demo_internal_inherit
|
||||
./script/addons/install_addons_dev.sh template code_generator_template_demo_portal,code_generator_template_demo_sysadmin_cron,code_generator_template_demo_internal_inherit
|
||||
|
||||
#./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_portal -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_portal
|
||||
#./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/demo_portal -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_portal
|
||||
#./script/addons/install_addons_dev.sh template demo_portal
|
||||
#./script/addons/install_addons_dev.sh template code_generator_template_demo_portal
|
||||
|
||||
#./script/code_generator/search_class_model.py --quiet -d addons/OCA_server-tools/auto_backup -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_sysadmin_cron
|
||||
#./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/OCA_server-tools/auto_backup -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_sysadmin_cron
|
||||
#./script/addons/install_addons_dev.sh template auto_backup
|
||||
#./script/addons/install_addons_dev.sh template code_generator_template_demo_sysadmin_cron
|
||||
|
||||
#./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_internal -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_internal
|
||||
#./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/demo_internal -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_internal
|
||||
#./script/addons/install_addons_dev.sh template demo_internal
|
||||
#./script/addons/install_addons_dev.sh template code_generator_template_demo_internal
|
||||
|
||||
#./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_internal_inherit -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_internal_inherit
|
||||
#./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/demo_internal_inherit -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_internal_inherit
|
||||
#./script/addons/install_addons_dev.sh template demo_internal_inherit
|
||||
#./script/addons/install_addons_dev.sh template code_generator_template_demo_internal_inherit
|
||||
|
||||
# TODO not working, need to add in test parallel
|
||||
#./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_website_snippet -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_website_snippet
|
||||
#./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/demo_website_snippet -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_website_snippet
|
||||
#./script/addons/install_addons_dev.sh template demo_website_snippet
|
||||
#./script/addons/install_addons_dev.sh template code_generator_template_demo_website_snippet
|
||||
|
||||
# TODO not working, need to add in test parallel
|
||||
#./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_website_multiple_snippet -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_website_multiple_snippet
|
||||
#./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/demo_website_multiple_snippet -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_website_multiple_snippet
|
||||
#./script/addons/install_addons_dev.sh template demo_website_multiple_snippet
|
||||
#./script/addons/install_addons_dev.sh template code_generator_template_demo_website_multiple_snippet
|
||||
|
||||
|
|
@ -146,26 +146,26 @@ addons_install_all_generated_demo:
|
|||
addons_install_code_generator_template_code_generator:
|
||||
./script/database/db_restore.py --database template
|
||||
./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator/code_generator -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_code_generator --with_inherit
|
||||
./script/maintenance/black.sh ./addons/TechnoLibre_odoo-code-generator-template/code_generator_template_code_generator
|
||||
./script/maintenance/black.sh ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_code_generator
|
||||
./script/addons/install_addons_dev.sh template code_generator
|
||||
./script/addons/install_addons_dev.sh template code_generator_template_code_generator
|
||||
./script/git/remote_code_generation_git_compare.py --quiet --git_gui --clear --replace_directory --directory1 ./addons/TechnoLibre_odoo-code-generator-template/code_generator_code_generator --directory2 ./addons/TechnoLibre_odoo-code-generator/code_generator_code_generator
|
||||
./script/git/remote_code_generation_git_compare.py --quiet --git_gui --clear --replace_directory --directory1 ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_code_generator --directory2 ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/code_generator_code_generator
|
||||
|
||||
.PHONY: addons_install_code_generator_code_generator
|
||||
addons_install_code_generator_code_generator:
|
||||
./script/database/db_restore.py --database code_generator
|
||||
./script/addons/install_addons_dev.sh code_generator code_generator_code_generator
|
||||
./script/git/remote_code_generation_git_compare.py --quiet --git_gui --clear --replace_directory --directory1 ./addons/TechnoLibre_odoo-code-generator/code_generator --directory2 ./addons/TechnoLibre_odoo-code-generator-template/code_generator
|
||||
./script/git/remote_code_generation_git_compare.py --quiet --git_gui --clear --replace_directory --directory1 ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/code_generator --directory2 ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator
|
||||
|
||||
.PHONY: meld_code_generator_template_code_generator
|
||||
meld_code_generator_template_code_generator:
|
||||
./script/make.sh clean
|
||||
meld ./addons/TechnoLibre_odoo-code-generator/code_generator_code_generator ./addons/TechnoLibre_odoo-code-generator-template/code_generator_code_generator
|
||||
meld ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/code_generator_code_generator ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_code_generator
|
||||
|
||||
.PHONY: meld_code_generator_code_generator
|
||||
meld_code_generator_code_generator:
|
||||
./script/make.sh clean
|
||||
meld ./addons/TechnoLibre_odoo-code-generator-template/code_generator ./addons/TechnoLibre_odoo-code-generator/code_generator
|
||||
meld ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/code_generator
|
||||
|
||||
########################
|
||||
# Extra migrator sql #
|
||||
|
|
@ -179,7 +179,7 @@ addons_install_code_generator_mariadb_sql_example_1:
|
|||
|
||||
./script/database/db_restore.py --database template
|
||||
./script/addons/install_addons_dev.sh template code_generator_portal,demo_mariadb_sql_example_1
|
||||
./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_mariadb_sql_example_1 -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_mariadb_sql_example_1
|
||||
./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/demo_mariadb_sql_example_1 -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_mariadb_sql_example_1
|
||||
./script/addons/install_addons_dev.sh template code_generator_template_demo_mariadb_sql_example_1
|
||||
|
||||
./script/database/db_restore.py --database code_generator
|
||||
|
|
@ -199,33 +199,33 @@ test_coverage_code_generator_hello_world:
|
|||
|
||||
.PHONY: test_code_generator_generation
|
||||
test_code_generator_generation:
|
||||
./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/code_generator/check_git_change_code_generator.sh ./addons/OCA_server-tools/auto_backup
|
||||
./script/code_generator/check_git_change_code_generator.sh ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/code_generator/check_git_change_code_generator.sh ./odoo$(ODOO_VERSION)/addons/OCA_server-tools/auto_backup
|
||||
# Multiple
|
||||
./script/database/db_restore.py --database test_code_generator
|
||||
./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo,code_generator_demo_export_helpdesk,code_generator_demo_export_website,code_generator_demo_internal,code_generator_demo_portal,code_generator_demo_theme_website,code_generator_demo_website_leaflet,code_generator_demo_website_snippet ./addons/TechnoLibre_odoo-code-generator-template code_generator_demo,demo_helpdesk_data,demo_website_data,demo_internal,demo_portal,theme_website_demo_code_generator,demo_website_leaflet,demo_website_snippet
|
||||
./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo,code_generator_demo_export_helpdesk,code_generator_demo_export_website,code_generator_demo_internal,code_generator_demo_portal,code_generator_demo_theme_website,code_generator_demo_website_leaflet,code_generator_demo_website_snippet ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template code_generator_demo,demo_helpdesk_data,demo_website_data,demo_internal,demo_portal,theme_website_demo_code_generator,demo_website_leaflet,demo_website_snippet
|
||||
# inherit
|
||||
# TODO should be in multiple list, need to support it
|
||||
./script/database/db_restore.py --database test_code_generator
|
||||
./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_internal_inherit ./addons/TechnoLibre_odoo-code-generator-template demo_internal_inherit
|
||||
./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_internal_inherit ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template demo_internal_inherit
|
||||
# auto_backup
|
||||
./script/database/db_restore.py --database test_code_generator
|
||||
./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_auto_backup ./addons/OCA_server-tools/auto_backup auto_backup
|
||||
./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_auto_backup ./odoo$(ODOO_VERSION)/addons/OCA_server-tools/auto_backup auto_backup
|
||||
|
||||
# Single
|
||||
#./script/database/db_restore.py --database test_code_generator
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo ./addons/TechnoLibre_odoo-code-generator-template code_generator_demo
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_export_helpdesk ./addons/TechnoLibre_odoo-code-generator-template demo_helpdesk_data
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_export_website ./addons/TechnoLibre_odoo-code-generator-template demo_website_data
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_internal ./addons/TechnoLibre_odoo-code-generator-template demo_internal
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_portal ./addons/TechnoLibre_odoo-code-generator-template demo_portal
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_theme_website ./addons/TechnoLibre_odoo-code-generator-template theme_website_demo_code_generator
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_website_leaflet ./addons/TechnoLibre_odoo-code-generator-template demo_website_leaflet
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_website_snippet ./addons/TechnoLibre_odoo-code-generator-template demo_website_snippet
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template code_generator_demo
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_export_helpdesk ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template demo_helpdesk_data
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_export_website ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template demo_website_data
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_internal ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template demo_internal
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_portal ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template demo_portal
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_theme_website ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template theme_website_demo_code_generator
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_website_leaflet ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template demo_website_leaflet
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_website_snippet ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template demo_website_snippet
|
||||
#./script/database/db_restore.py --database test_code_generator
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_internal_inherit ./addons/TechnoLibre_odoo-code-generator-template demo_internal_inherit
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_internal_inherit ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template demo_internal_inherit
|
||||
#./script/database/db_restore.py --database test_code_generator
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_auto_backup ./addons/OCA_server-tools/auto_backup auto_backup
|
||||
#./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_auto_backup ./odoo$(ODOO_VERSION)/addons/OCA_server-tools/auto_backup auto_backup
|
||||
|
||||
.PHONY: test_code_generator_generation_template
|
||||
test_code_generator_generation_template:
|
||||
|
|
@ -235,56 +235,65 @@ test_code_generator_generation_template:
|
|||
|
||||
.PHONY: test_code_generator_code_template_demo_portal
|
||||
test_code_generator_code_template_demo_portal:
|
||||
./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/code_generator/check_git_change_code_generator.sh ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/database/db_restore.py --database test_template
|
||||
./script/addons/install_addons_dev.sh test_template demo_portal
|
||||
#./script/addons/install_addons_dev.sh test_template code_generator_template_demo_portal
|
||||
./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_portal -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_portal --with_inherit
|
||||
./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_portal ./addons/TechnoLibre_odoo-code-generator-template code_generator_demo_portal
|
||||
./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/demo_portal -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_portal --with_inherit
|
||||
./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_portal ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template code_generator_demo_portal
|
||||
|
||||
.PHONY: test_code_generator_code_template_demo_internal
|
||||
test_code_generator_code_template_demo_internal:
|
||||
#./script/code_generator/check_git_change_code_generator.sh ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/database/db_restore.py --database test_template
|
||||
./script/addons/install_addons_dev.sh test_template demo_internal
|
||||
#./script/addons/install_addons_dev.sh test_template code_generator_template_demo_internal
|
||||
./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/demo_internal -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_internal
|
||||
./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_internal ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template code_generator_demo_internal
|
||||
|
||||
.PHONY: test_code_generator_code_template_demo_internal_inherit
|
||||
test_code_generator_code_template_demo_internal_inherit:
|
||||
./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/code_generator/check_git_change_code_generator.sh ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/database/db_restore.py --database test_template
|
||||
./script/addons/install_addons_dev.sh test_template demo_internal_inherit
|
||||
#./script/addons/install_addons_dev.sh test_template code_generator_template_demo_internal_inherit
|
||||
./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_internal_inherit -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_internal_inherit --with_inherit
|
||||
./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_internal_inherit ./addons/TechnoLibre_odoo-code-generator-template code_generator_demo_internal_inherit
|
||||
./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/demo_internal_inherit -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_internal_inherit --with_inherit
|
||||
./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_internal_inherit ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template code_generator_demo_internal_inherit
|
||||
|
||||
.PHONY: test_code_generator_code_template_demo_sysadmin_cron
|
||||
test_code_generator_code_template_demo_sysadmin_cron:
|
||||
./script/code_generator/check_git_change_code_generator.sh ./addons/OCA_server-tools/auto_backup
|
||||
./script/code_generator/check_git_change_code_generator.sh ./odoo$(ODOO_VERSION)/addons/OCA_server-tools/auto_backup
|
||||
./script/database/db_restore.py --database test_template
|
||||
./script/addons/install_addons_dev.sh test_template auto_backup
|
||||
#./script/addons/install_addons_dev.sh test_template code_generator_template_demo_sysadmin_cron
|
||||
./script/code_generator/search_class_model.py --quiet -d addons/OCA_server-tools/auto_backup -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_sysadmin_cron --with_inherit
|
||||
./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_sysadmin_cron ./addons/TechnoLibre_odoo-code-generator-template code_generator_auto_backup
|
||||
./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/OCA_server-tools/auto_backup -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_sysadmin_cron --with_inherit
|
||||
./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_sysadmin_cron ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template code_generator_auto_backup
|
||||
|
||||
.PHONY: test_code_generator_migrator_demo_mariadb_sql_example_1
|
||||
test_code_generator_migrator_demo_mariadb_sql_example_1:
|
||||
./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/code_generator/check_git_change_code_generator.sh ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/database/restore_mariadb_sql_example_1.sh
|
||||
./script/database/db_restore.py --database test_code_generator
|
||||
./script/addons/install_addons_dev.sh test_code_generator code_generator_portal
|
||||
#./script/addons/install_addons_dev.sh test_code_generator code_generator_migrator_demo_mariadb_sql_example_1
|
||||
./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_migrator_demo_mariadb_sql_example_1 ./addons/TechnoLibre_odoo-code-generator-template demo_mariadb_sql_example_1
|
||||
./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_migrator_demo_mariadb_sql_example_1 ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template demo_mariadb_sql_example_1
|
||||
|
||||
.PHONY: test_code_generator_template_demo_mariadb_sql_example_1
|
||||
test_code_generator_template_demo_mariadb_sql_example_1:
|
||||
./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/code_generator/check_git_change_code_generator.sh ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/database/db_restore.py --database test_template
|
||||
./script/addons/install_addons_dev.sh test_template code_generator_portal,demo_mariadb_sql_example_1
|
||||
./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_mariadb_sql_example_1 -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_mariadb_sql_example_1 --with_inherit
|
||||
./script/code_generator/search_class_model.py --quiet -d ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/demo_mariadb_sql_example_1 -t ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_mariadb_sql_example_1 --with_inherit
|
||||
#./script/addons/install_addons_dev.sh test_template code_generator_template_demo_mariadb_sql_example_1
|
||||
./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_mariadb_sql_example_1 ./addons/TechnoLibre_odoo-code-generator-template code_generator_demo_mariadb_sql_example_1
|
||||
./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_mariadb_sql_example_1 ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template code_generator_demo_mariadb_sql_example_1
|
||||
|
||||
.PHONY: test_code_generator_demo_mariadb_sql_example_1
|
||||
test_code_generator_demo_mariadb_sql_example_1:
|
||||
./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/code_generator/check_git_change_code_generator.sh ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/database/db_restore.py --database test_code_generator
|
||||
./script/addons/install_addons_dev.sh test_code_generator code_generator_portal
|
||||
#./script/addons/install_addons_dev.sh test_code_generator code_generator_demo_mariadb_sql_example_1
|
||||
./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_mariadb_sql_example_1 ./addons/TechnoLibre_odoo-code-generator-template demo_mariadb_sql_example_1
|
||||
./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_mariadb_sql_example_1 ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template demo_mariadb_sql_example_1
|
||||
|
||||
.PHONY: test_addons_code_generator
|
||||
test_addons_code_generator:
|
||||
|
|
@ -318,9 +327,9 @@ test_addons_code_generator_template_code_generator:
|
|||
./test.sh --dev cg -d test_addons_code_generator_template_code_generator --db-filter test_addons_code_generator_template_code_generator -i code_generator
|
||||
./test.sh --dev cg -d test_addons_code_generator_template_code_generator --db-filter test_addons_code_generator_template_code_generator -i code_generator_template_code_generator
|
||||
./.venv.erplibre/bin/coverage combine -a
|
||||
./.venv.erplibre/bin/coverage report -m --include="addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage html --include="addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage json --include="addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage report -m --include="./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage html --include="./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage json --include="./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/*"
|
||||
# run: make open_test_coverage
|
||||
|
||||
# generate config repo code_generator
|
||||
|
|
|
|||
|
|
@ -98,11 +98,11 @@ robot_libre_open_record:
|
|||
|
||||
.PHONY: robot_libre_format
|
||||
robot_libre_format:
|
||||
parallel ::: "./script/maintenance/format.sh ./addons/ERPLibre_erplibre_addons/erplibre_devops" "./script/maintenance/format.sh ./addons/ERPLibre_erplibre_addons/erplibre_devops_me"
|
||||
parallel ::: "./script/maintenance/format.sh ./odoo$(ODOO_VERSION)/addons/ERPLibre_erplibre_addons/erplibre_devops" "./script/maintenance/format.sh ./odoo$(ODOO_VERSION)/addons/ERPLibre_erplibre_addons/erplibre_devops_me"
|
||||
|
||||
.PHONY: robot_libre_generate
|
||||
robot_libre_generate:
|
||||
./script/code_generator/new_project.py -f -d ./addons/ERPLibre_erplibre_addons -m erplibre_devops
|
||||
./script/code_generator/new_project.py -f -d ./odoo$(ODOO_VERSION)/addons/ERPLibre_erplibre_addons -m erplibre_devops
|
||||
|
||||
.PHONY: run_db
|
||||
run_db:
|
||||
|
|
|
|||
|
|
@ -53,9 +53,9 @@ test_full_fast_coverage:
|
|||
# TODO This test is broken in parallel
|
||||
#./script/make.sh test_coverage_code_generator_hello_world
|
||||
./.venv.erplibre/bin/coverage combine -a
|
||||
./.venv.erplibre/bin/coverage report -m --include="addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage html --include="addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage json --include="addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage report -m --include="./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage html --include="./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage json --include="./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/*"
|
||||
# run: make open_test_coverage
|
||||
|
||||
|
||||
|
|
@ -67,9 +67,9 @@ test_cg_demo:
|
|||
./.venv.erplibre/bin/coverage erase
|
||||
./script/addons/coverage_install_addons_dev.sh test code_generator_demo
|
||||
./.venv.erplibre/bin/coverage combine -a
|
||||
./.venv.erplibre/bin/coverage report -m --include="addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage html --include="addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage json --include="addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage report -m --include="./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage html --include="./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/*"
|
||||
./.venv.erplibre/bin/coverage json --include="./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/*"
|
||||
|
||||
.PHONY: test_base
|
||||
test_base:
|
||||
|
|
@ -87,12 +87,12 @@ test_extra:
|
|||
|
||||
.PHONY: test_format
|
||||
test_format:
|
||||
./script/maintenance/black.sh --check ./addons/TechnoLibre_odoo-code-generator/
|
||||
./script/maintenance/black.sh --check ./addons/TechnoLibre_odoo-code-generator-template/
|
||||
./script/maintenance/black.sh --check ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator/
|
||||
./script/maintenance/black.sh --check ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template/
|
||||
|
||||
.PHONY: test_installation_demo
|
||||
test_installation_demo:
|
||||
./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/code_generator/check_git_change_code_generator.sh ./odoo$(ODOO_VERSION)/addons/TechnoLibre_odoo-code-generator-template
|
||||
./script/database/db_restore.py --database test_demo
|
||||
./script/addons/install_addons.sh test_demo demo_helpdesk_data,demo_internal,demo_internal_inherit,demo_mariadb_sql_example_1,demo_portal,demo_website_data,demo_website_leaflet,demo_website_snippet
|
||||
./script/addons/install_addons_theme.sh test_demo theme_website_demo_code_generator
|
||||
|
|
|
|||
|
|
@ -32,14 +32,14 @@ services:
|
|||
restart: always
|
||||
|
||||
db:
|
||||
image: postgis/postgis:17-3.6-alpine
|
||||
image: postgis/postgis:18-3.6-alpine
|
||||
environment:
|
||||
POSTGRES_PASSWORD: mysecretpassword
|
||||
POSTGRES_USER: odoo
|
||||
POSTGRES_DB: postgres
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
PGDATA: /var/lib/postgresql/pgdata
|
||||
volumes:
|
||||
- erplibre-db-data:/var/lib/postgresql/data/pgdata
|
||||
- erplibre-db-data:/var/lib/postgresql/pgdata
|
||||
restart: always
|
||||
|
||||
# We configure volume without specific destination to let docker manage it. To configure it through docker use (read related documentation before continuing) :
|
||||
|
|
|
|||
|
|
@ -33,14 +33,14 @@ services:
|
|||
restart: always
|
||||
|
||||
db:
|
||||
image: postgis/postgis:17-3.6-alpine
|
||||
image: postgis/postgis:18-3.6-alpine
|
||||
environment:
|
||||
POSTGRES_PASSWORD: mysecretpassword
|
||||
POSTGRES_USER: odoo
|
||||
POSTGRES_DB: postgres
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
PGDATA: /var/lib/postgresql/pgdata
|
||||
volumes:
|
||||
- erplibre-db-data:/var/lib/postgresql/data/pgdata
|
||||
- erplibre-db-data:/var/lib/postgresql/pgdata
|
||||
restart: always
|
||||
|
||||
# We configure volume without specific destination to let docker manage it. To configure it through docker use (read related documentation before continuing) :
|
||||
|
|
|
|||
|
|
@ -34,14 +34,14 @@ services:
|
|||
restart: always
|
||||
|
||||
db:
|
||||
image: postgis/postgis:17-3.6-alpine
|
||||
image: postgis/postgis:18-3.6-alpine
|
||||
environment:
|
||||
POSTGRES_PASSWORD: mysecretpassword
|
||||
POSTGRES_USER: odoo
|
||||
POSTGRES_DB: postgres
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
PGDATA: /var/lib/postgresql/pgdata
|
||||
volumes:
|
||||
- erplibre-db-data:/var/lib/postgresql/data/pgdata
|
||||
- erplibre-db-data:/var/lib/postgresql/pgdata
|
||||
restart: always
|
||||
|
||||
chrome:
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -20,14 +20,15 @@ authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
|||
[tool.poetry.dependencies]
|
||||
python = ">=3.12.10,<3.13"
|
||||
asn1crypto = "1.5.1"
|
||||
astor = "^0.8.1"
|
||||
avalara = "^25.9.0"
|
||||
babel = "2.10.3"
|
||||
bandit = "^1.8.6"
|
||||
base64io = "^1.0.3"
|
||||
beautifulsoup4 = "4.13.5"
|
||||
bokeh = "3.6.3"
|
||||
boto3 = "^1.40.67"
|
||||
cachetools = "^6.2.1"
|
||||
boto3 = "^1.40.74"
|
||||
cachetools = "^6.2.2"
|
||||
cairosvg = "^2.8.2"
|
||||
caldav = "1.3.9"
|
||||
cbor2 = "5.6.2"
|
||||
|
|
@ -36,7 +37,7 @@ code-writer = "^1.2.0"
|
|||
colorama = "^0.4.6"
|
||||
cryptography = "46.0.3"
|
||||
cssselect = "^1.3.0"
|
||||
cython = "^3.2.0"
|
||||
cython = "^3.2.1"
|
||||
decorator = "5.1.1"
|
||||
docutils = "0.20.1"
|
||||
dropbox = "^12.0.2"
|
||||
|
|
@ -76,12 +77,15 @@ meteostat = "1.6.8"
|
|||
mock = "^5.2.0"
|
||||
mpld3 = "0.5.10"
|
||||
msgraphfs = "^0.4"
|
||||
mysqlclient = "^2.2.7"
|
||||
nextcloud-api-wrapper = "^0.2.3"
|
||||
num2words = "0.5.13"
|
||||
numpy = ">=1.15"
|
||||
numpy-financial = "<=1.0.0"
|
||||
numpy-stl = "^3.2.0"
|
||||
odoorpc = "^0.10.1"
|
||||
ofxparse = "0.21"
|
||||
openai = "^2.7.1"
|
||||
openai = "^2.8.0"
|
||||
openpyxl = "3.1.2"
|
||||
openupgradelib = "^3.12.0"
|
||||
openwebui-client = ">=0.3.0"
|
||||
|
|
@ -92,11 +96,11 @@ pathspec = "^0.12.1"
|
|||
pdf2image = "^1.17.0"
|
||||
pdfminer = "^20191125"
|
||||
pexpect = "^4.9.0"
|
||||
phonenumbers = "^9.0.17"
|
||||
phonenumbers = "^9.0.18"
|
||||
pillow = "10.2.0"
|
||||
plotly = "^6.4.0"
|
||||
polib = "1.1.1"
|
||||
pre-commit = "^4.3.0"
|
||||
pre-commit = "^4.4.0"
|
||||
premailer = "^3.10.0"
|
||||
prometheus-client = "^0.23.1"
|
||||
psutil = "5.9.8"
|
||||
|
|
@ -141,7 +145,7 @@ qrcode = "7.4.2"
|
|||
radon = "^6.0.1"
|
||||
redis = "^7.0.1"
|
||||
reportlab = "4.1.0"
|
||||
requests = ">=2.31.0"
|
||||
requests = "2.31.0"
|
||||
requests-toolbelt = "^1.0.0"
|
||||
rjsmin = "1.2.0"
|
||||
roulier = "^1.1.1"
|
||||
|
|
@ -149,10 +153,11 @@ schwifty = "2024.4.0"
|
|||
sentry-sdk = ">=2.0.0,<=2.22.0"
|
||||
setuptools = "80.9.0"
|
||||
shapely = "^2.1.2"
|
||||
sqlalchemy = "^2.0.44"
|
||||
statsd = "^4.0.1"
|
||||
tldextract = "^5.3.0"
|
||||
tweepy = "^4.16.0"
|
||||
twilio = "^9.8.5"
|
||||
twilio = "^9.8.6"
|
||||
unidecode = "^1.4.0"
|
||||
urllib3 = "2.0.7"
|
||||
uvloop = "^0.22.1"
|
||||
|
|
@ -167,9 +172,6 @@ xlwt = "1.3.0"
|
|||
xmltodict = "0.13.0"
|
||||
zeep = "4.2.1"
|
||||
|
||||
[tool.poetry.dependencies.astor]
|
||||
git = "https://github.com/berkerpeksag/astor.git"
|
||||
|
||||
[tool.poetry.dependencies.black]
|
||||
git = "https://github.com/psf/black.git"
|
||||
rev = "24.8.0"
|
||||
|
|
|
|||
|
|
@ -67,6 +67,3 @@ git+https://github.com/prauscher/pysaml2.git@replace-pyopenssl
|
|||
|
||||
# Fix compilation, until pymssql==2.3.9 is release
|
||||
git+https://github.com/pymssql/pymssql.git
|
||||
|
||||
# Force last version, because too old into pip
|
||||
git+https://github.com/berkerpeksag/astor.git
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ with open(filename_odoo_version, "r") as f:
|
|||
odoo_version = f.readline()
|
||||
|
||||
CODE_GENERATOR_DIRECTORY = (
|
||||
f"./odoo{ODOO_VERSION}/addons/TechnoLibre_odoo-code-generator-template/"
|
||||
f"./odoo{odoo_version}/addons/TechnoLibre_odoo-code-generator-template/"
|
||||
)
|
||||
CODE_GENERATOR_DEMO_NAME = "code_generator_demo"
|
||||
KEY_REPLACE_CODE_GENERATOR_DEMO = 'MODULE_NAME = "%s"'
|
||||
|
|
@ -143,7 +143,7 @@ class ProjectManagement:
|
|||
|
||||
# Replace addons/ by odoo12.0/addons/
|
||||
module_directory = module_directory.replace(
|
||||
"addons/", f"odoo{ODOO_VERSION}/addons/"
|
||||
"addons/", f"odoo{odoo_version}/addons/"
|
||||
)
|
||||
|
||||
self.module_directory = module_directory
|
||||
|
|
|
|||
|
|
@ -10,11 +10,34 @@ import os
|
|||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import astor
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
ARGS_TYPE_PARAM = {
|
||||
"Char": ["string", "size"],
|
||||
"Text": ["string"],
|
||||
"Integer": ["string"],
|
||||
"Float": ["string"],
|
||||
"Boolean": ["string"],
|
||||
"Date": ["string"],
|
||||
"Datetime": ["string"],
|
||||
"Binary": ["string"],
|
||||
"Html": ["string"],
|
||||
"Json": ["string"],
|
||||
"Many2one": ["comodel_name", "string"],
|
||||
"One2many": ["comodel_name", "inverse_name", "string"],
|
||||
"Many2many": ["comodel_name", "relation", "column1", "column2", "string"],
|
||||
"Monetary": ["string", "currency_field"],
|
||||
"Selection": ["selection", "string"],
|
||||
"Reference": ["string"],
|
||||
"Image": ["string"],
|
||||
"Properties": ["string"],
|
||||
"PropertiesDefinition": ["string"],
|
||||
"Serialized": ["string"],
|
||||
"Many2oneReference": ["string"],
|
||||
"Id": [],
|
||||
}
|
||||
|
||||
|
||||
def get_config():
|
||||
"""Parse command line arguments, extracting the config file name,
|
||||
|
|
@ -57,6 +80,16 @@ def get_config():
|
|||
action="store_true",
|
||||
help="Return result in json",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--format_json",
|
||||
action="store_true",
|
||||
help="If --json is enabled, will format json for human reader.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--show_error_json",
|
||||
action="store_true",
|
||||
help="Will show error when --json is enabled.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--extract_field",
|
||||
action="store_true",
|
||||
|
|
@ -124,7 +157,7 @@ def search_and_replace(
|
|||
|
||||
|
||||
def extract_lambda(node):
|
||||
result = astor.to_source(node).strip().replace("\n", "")
|
||||
result = ast.unparse(node)
|
||||
if result[0] == "(" and result[-1] == ")":
|
||||
result = result[1:-1]
|
||||
return result
|
||||
|
|
@ -133,14 +166,10 @@ def extract_lambda(node):
|
|||
def fill_search_field(ast_obj, var_name="", py_filename=""):
|
||||
ast_obj_type = type(ast_obj)
|
||||
result = None
|
||||
if ast_obj_type is ast.Str:
|
||||
result = ast_obj.s
|
||||
if ast_obj_type is ast.Constant:
|
||||
result = ast_obj.value
|
||||
elif ast_obj_type is ast.Lambda:
|
||||
result = extract_lambda(ast_obj)
|
||||
elif ast_obj_type is ast.NameConstant:
|
||||
result = ast_obj.value
|
||||
elif ast_obj_type is ast.Num:
|
||||
result = ast_obj.n
|
||||
elif ast_obj_type is ast.UnaryOp:
|
||||
if type(ast_obj.op) is ast.USub:
|
||||
# value is negative
|
||||
|
|
@ -224,7 +253,7 @@ def main():
|
|||
and type(node.targets[0]) is ast.Name
|
||||
# and node.targets[0].id in ("_name",)
|
||||
# and node.targets[0].id in ("_name", "_inherit")
|
||||
and type(node.value) is ast.Str
|
||||
and type(node.value) is ast.Constant
|
||||
):
|
||||
model_name = ""
|
||||
is_inherit = False
|
||||
|
|
@ -232,15 +261,15 @@ def main():
|
|||
lst_search_target
|
||||
and node.targets[0].id in lst_search_target
|
||||
):
|
||||
if node.value.s in lst_model_name:
|
||||
if node.value.value in lst_model_name:
|
||||
is_duplicated = True
|
||||
_logger.warning(
|
||||
"Duplicated model name"
|
||||
f" {node.value.s} from file {py_file}"
|
||||
f" {node.value.value} from file {py_file}"
|
||||
)
|
||||
else:
|
||||
model_name = node.value.s
|
||||
lst_model_name.append(node.value.s)
|
||||
model_name = node.value.value
|
||||
lst_model_name.append(node.value.value)
|
||||
|
||||
if (
|
||||
lst_search_inherit_target
|
||||
|
|
@ -248,14 +277,16 @@ def main():
|
|||
in lst_search_inherit_target
|
||||
):
|
||||
is_inherit = True
|
||||
if node.value.s in lst_model_inherit_name:
|
||||
if node.value.value in lst_model_inherit_name:
|
||||
_logger.warning(
|
||||
"Duplicated model inherit name"
|
||||
f" {node.value.s} from file {py_file}"
|
||||
f" {node.value.value} from file {py_file}"
|
||||
)
|
||||
else:
|
||||
model_name = node.value.s
|
||||
lst_model_inherit_name.append(node.value.s)
|
||||
model_name = node.value.value
|
||||
lst_model_inherit_name.append(
|
||||
node.value.value
|
||||
)
|
||||
dct_fields = {}
|
||||
if model_name:
|
||||
dct_model[model_name] = {
|
||||
|
|
@ -264,10 +295,9 @@ def main():
|
|||
"is_inherit": is_inherit,
|
||||
}
|
||||
# Detect fields
|
||||
# TODO do it!
|
||||
if model_name and (
|
||||
type(node.value) is ast.Str
|
||||
and node.value.s == model_name
|
||||
type(node.value) is ast.Constant
|
||||
and node.value.value == model_name
|
||||
or type(node.value) is ast.List
|
||||
and model_name
|
||||
in [a.s for a in node.value.elts]
|
||||
|
|
@ -289,6 +319,29 @@ def main():
|
|||
"sequence": sequence,
|
||||
}
|
||||
dct_fields[var_name] = d
|
||||
lst_args = [
|
||||
a.value for a in node.value.args
|
||||
]
|
||||
if lst_args:
|
||||
lst_default_arg_position = (
|
||||
ARGS_TYPE_PARAM.get(
|
||||
node.value.func.attr, []
|
||||
)
|
||||
)
|
||||
for (
|
||||
index_arg_position,
|
||||
default_arg_position,
|
||||
) in enumerate(
|
||||
lst_default_arg_position
|
||||
):
|
||||
if index_arg_position < len(
|
||||
lst_args
|
||||
):
|
||||
d[default_arg_position] = (
|
||||
lst_args[
|
||||
index_arg_position
|
||||
]
|
||||
)
|
||||
for keyword in node.value.keywords:
|
||||
value = fill_search_field(
|
||||
keyword.value, var_name
|
||||
|
|
@ -305,14 +358,15 @@ def main():
|
|||
lst_model_inherit_name.remove(ignored_inherit)
|
||||
models_inherit_name = "; ".join(lst_model_inherit_name)
|
||||
if not config.json:
|
||||
if not models_name:
|
||||
_logger.warning(f"Missing models class in {config.directory}")
|
||||
elif not config.quiet:
|
||||
if not config.quiet:
|
||||
# _logger.info(models_name)
|
||||
print(models_name)
|
||||
print(models_inherit_name)
|
||||
else:
|
||||
output = json.dumps(dct_model)
|
||||
if config.format_json:
|
||||
output = json.dumps(dct_model, indent=4, sort_keys=True)
|
||||
else:
|
||||
output = json.dumps(dct_model)
|
||||
print(output)
|
||||
|
||||
if config.template_dir:
|
||||
|
|
|
|||
89
script/database/migrate/process_backup_file.py
Normal file
89
script/database/migrate/process_backup_file.py
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
#!/usr/bin/env python3
|
||||
# © 2021-2025 TechnoLibre (http://www.technolibre.ca)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
import zipfile
|
||||
|
||||
|
||||
def process_zip(
|
||||
path_backup_zip, path_output_zip, word_to_delete, file_to_modify
|
||||
):
|
||||
# Ouvrir le zip d'entrée en lecture
|
||||
try:
|
||||
with zipfile.ZipFile(path_backup_zip, "r") as zin, zipfile.ZipFile(
|
||||
path_output_zip, "w"
|
||||
) as zout:
|
||||
|
||||
# Parcourir tous les fichiers du zip
|
||||
for item in zin.infolist():
|
||||
data = zin.read(item.filename)
|
||||
if item.filename == file_to_modify:
|
||||
|
||||
try:
|
||||
# On suppose un fichier texte en UTF-8
|
||||
text = data.decode("utf-8")
|
||||
except UnicodeDecodeError:
|
||||
print(
|
||||
f"Erreur : impossible de décoder {file_to_modify} en UTF-8",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
# Filtrer les lignes qui NE contiennent PAS le mot à supprimer
|
||||
lines = text.splitlines(
|
||||
keepends=True
|
||||
) # garder les fins de lignes
|
||||
filtered_lines = [
|
||||
line for line in lines if word_to_delete not in line
|
||||
]
|
||||
new_text = "".join(filtered_lines)
|
||||
new_data = new_text.encode("utf-8")
|
||||
|
||||
# Écrire la version modifiée dans le nouveau zip
|
||||
zout.writestr(item, new_data)
|
||||
else:
|
||||
# Pour les autres fichiers, on recopie tel quel
|
||||
zout.writestr(item, data)
|
||||
|
||||
except FileNotFoundError:
|
||||
print(
|
||||
f"Erreur : fichier zip source introuvable : {path_backup_zip}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Modifier un fichier dans un zip en supprimant les lignes contenant un mot donné."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--path_backup_zip", help="Chemin vers le zip original"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--path_output_zip", help="Chemin vers le nouveau zip à créer"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--word_to_delete",
|
||||
help="Mot clé à supprimer (lignes contenant ce mot seront retirées)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--file_to_modify",
|
||||
default="dump.sql",
|
||||
help="Nom du fichier à modifier à l'intérieur du zip (chemin interne)",
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
process_zip(
|
||||
args.path_backup_zip,
|
||||
args.path_output_zip,
|
||||
args.word_to_delete,
|
||||
args.file_to_modify,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -5,7 +5,10 @@
|
|||
import asyncio
|
||||
from collections import deque
|
||||
|
||||
import uvloop
|
||||
try:
|
||||
import uvloop
|
||||
except ImportError:
|
||||
uvloop = None
|
||||
|
||||
|
||||
async def run_in_serial(task_list):
|
||||
|
|
@ -95,40 +98,54 @@ def print_summary_task(task_list, lst_task_name=None):
|
|||
def execute(config, lst_task, use_uvloop=False):
|
||||
error_detected = False
|
||||
return_value = None
|
||||
if not config.no_parallel and asyncio.get_event_loop().is_closed():
|
||||
asyncio.set_event_loop(asyncio.new_event_loop())
|
||||
|
||||
# --- Mode 1 : pas de parallélisme → déjà OK avec asyncio.run ---
|
||||
if config.no_parallel:
|
||||
return_value = asyncio.run(run_in_serial(lst_task))
|
||||
elif config.max_process:
|
||||
# run_in_serial doit être une coroutine (async def)
|
||||
try:
|
||||
if use_uvloop and uvloop is not None:
|
||||
# À faire AVANT la création de la loop
|
||||
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
|
||||
return_value = asyncio.run(run_in_serial(lst_task))
|
||||
except Exception as e:
|
||||
error_detected = True
|
||||
print(e)
|
||||
return return_value, error_detected
|
||||
|
||||
# --- Mode 2 : AsyncioPool (on suppose qu'il gère sa loop lui-même) ---
|
||||
if config.max_process:
|
||||
pool = AsyncioPool(config.max_process)
|
||||
for task in lst_task:
|
||||
pool.add_coro(task)
|
||||
try:
|
||||
# API existante, on ne touche pas
|
||||
return_value = pool.run_until_complete()
|
||||
finally:
|
||||
pool.close()
|
||||
else:
|
||||
# Use maximal resource
|
||||
if use_uvloop:
|
||||
uvloop.install()
|
||||
loop = asyncio.get_event_loop()
|
||||
# Can fix when cannot attach child to loop
|
||||
# if sys.platform != "win32":
|
||||
# policy = asyncio.get_event_loop_policy()
|
||||
# watcher = asyncio.SafeChildWatcher()
|
||||
# watcher.attach_loop(loop)
|
||||
# policy.set_child_watcher(watcher)
|
||||
if config.debug:
|
||||
loop.set_debug(True)
|
||||
try:
|
||||
commands = asyncio.gather(*lst_task)
|
||||
return_value = loop.run_until_complete(commands)
|
||||
except RuntimeError as e:
|
||||
except Exception as e:
|
||||
error_detected = True
|
||||
print(e)
|
||||
finally:
|
||||
loop.close()
|
||||
pool.close()
|
||||
return return_value, error_detected
|
||||
|
||||
# --- Mode 3 : utilisation maximale des ressources avec asyncio.gather ---
|
||||
async def _run_max_resources(tasks, debug: bool):
|
||||
if debug:
|
||||
loop = asyncio.get_running_loop()
|
||||
loop.set_debug(True)
|
||||
# tasks doit être une liste de coroutines
|
||||
results = await asyncio.gather(*tasks)
|
||||
return results
|
||||
|
||||
try:
|
||||
if use_uvloop and uvloop is not None:
|
||||
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
|
||||
return_value = asyncio.run(_run_max_resources(lst_task, config.debug))
|
||||
except RuntimeError as e:
|
||||
# par ex. si tu appelles ça depuis un environnement où il y a
|
||||
# déjà une loop (Jupyter, certains frameworks)
|
||||
error_detected = True
|
||||
print(e)
|
||||
|
||||
return return_value, error_detected
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,27 @@ def get_modified_files():
|
|||
check=True,
|
||||
)
|
||||
lines_project = result.stdout.strip().split("\n\n")
|
||||
|
||||
if os.path.isfile(".odoo-version"):
|
||||
with open(".odoo-version") as txt:
|
||||
odoo_version = txt.read()
|
||||
path_addons = os.path.join(
|
||||
f"odoo{odoo_version}", "addons", "addons"
|
||||
)
|
||||
if os.path.exists(os.path.join(path_addons, ".git")):
|
||||
# Detected hidden private repository
|
||||
result = subprocess.run(
|
||||
["git", "status", "--porcelain"],
|
||||
cwd=path_addons,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True,
|
||||
)
|
||||
output = result.stdout.strip()
|
||||
if output:
|
||||
lines_addons_project = f"project {path_addons}/\n" + output
|
||||
lines_project.append(lines_addons_project)
|
||||
|
||||
for str_project_line in lines_project:
|
||||
line_repo = str_project_line.split("\n")
|
||||
projet_name = line_repo[0]
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
Run this script when doing database migration. Example :
|
||||
|
||||
```bash
|
||||
cat ./script/migration/fix_migration_odoo140_to_odoo150.py | ./odoo15.0/odoo/odoo-bin shell -d DATABASE
|
||||
source ./.venv.odoo15.0_python3.8.20/bin/activate && cat ./script/migration/fix_migration_odoo140_to_odoo150.py | ./odoo15.0/odoo/odoo-bin shell -d DATABASE
|
||||
```
|
||||
|
||||
Check [uninstall_module_list_odoo140_to_odoo150.txt](uninstall_module_list_odoo140_to_odoo150.txt)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
#!/usr/bin/env python3
|
||||
# © 2021-2025 TechnoLibre (http://www.technolibre.ca)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
|
||||
# This script fix the module mail when migrating postgresql 17 to postgresql 18
|
||||
print("Running a script in the Odoo shell!")
|
||||
|
||||
# This fix
|
||||
# odoo.sql_db: bad query: b'ALTER TABLE "discuss_channel_member" ADD FOREIGN KEY ("channel_id") REFERENCES "discuss_channel"("id") ON DELETE cascade'
|
||||
# ERROR: insert or update on table "discuss_channel_member" violates foreign key constraint "discuss_channel_member_channel_id_fkey"
|
||||
# DÉTAIL : Key (channel_id)=(3) is not present in table "discuss_channel".
|
||||
|
||||
env.cr.execute("""
|
||||
ALTER TABLE discuss_channel
|
||||
DROP CONSTRAINT discuss_channel_channel_type_not_null;
|
||||
""")
|
||||
env.cr.commit()
|
||||
|
||||
#env.cr.execute("SELECT to_regclass('public.discuss_channel');")
|
||||
#print("table:", env.cr.fetchone())
|
||||
|
||||
#print(
|
||||
# "model discuss.channel:",
|
||||
# env["ir.model"].search([("model", "=", "discuss.channel")]),
|
||||
#)
|
||||
|
||||
print("End fix migration with update mail postgresql 17 to postgresql 18.")
|
||||
|
|
@ -1231,6 +1231,32 @@ class SeleniumLib(object):
|
|||
print(f"Bouton du statusbar avec le label '{status_label}' cliqué.")
|
||||
return status_button
|
||||
|
||||
def odoo_profile_click(self, enable_dark_mode=False, enable_tour=False):
|
||||
|
||||
def toggle_data_menu(key, enable):
|
||||
profile_button = self.click_with_mouse_move(
|
||||
By.XPATH,
|
||||
"//div[contains(@class, 'o_user_menu')]/button[contains(@class, 'py-1')]",
|
||||
)
|
||||
element = self.get_element(
|
||||
By.XPATH,
|
||||
f"//div[contains(@class, 'o_popover')]//span[@data-menu=\"{key}\"]//input",
|
||||
)
|
||||
if element.is_selected() != enable:
|
||||
self.click_with_mouse_move(
|
||||
By.XPATH,
|
||||
f"//div[contains(@class, 'o_popover')]//span[@data-menu=\"{key}\"]//input",
|
||||
)
|
||||
else:
|
||||
# close it
|
||||
self.click_with_mouse_move(
|
||||
By.XPATH,
|
||||
"//div[contains(@class, 'o_user_menu')]/button[contains(@class, 'py-1')]",
|
||||
)
|
||||
|
||||
toggle_data_menu("web_tour.tour_enabled", enable_tour)
|
||||
toggle_data_menu("color_scheme.switch", enable_dark_mode)
|
||||
|
||||
def odoo_web_form_click_statusbar_button_status_floating(
|
||||
self, status_label, timeout=10
|
||||
):
|
||||
|
|
|
|||
|
|
@ -163,6 +163,13 @@ def run(
|
|||
# Fermez le navigateur
|
||||
# selenium_tool.driver.quit()
|
||||
|
||||
# Force use dark mode if enable
|
||||
selenium_tool.odoo_profile_click(
|
||||
enable_dark_mode=not config.no_dark_mode, enable_tour=False
|
||||
)
|
||||
|
||||
print("End web_login.py")
|
||||
|
||||
|
||||
def compute_args(args):
|
||||
pass
|
||||
|
|
|
|||
173
script/test/config_testcase.odoo18.0.json
Normal file
173
script/test/config_testcase.odoo18.0.json
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
{
|
||||
"lst_test": [
|
||||
{
|
||||
"run_command": true,
|
||||
"test_name": "helloworld_test",
|
||||
"sequence": 10,
|
||||
"script": "./test/code_generator/hello_world.sh",
|
||||
"restore_db_image_name": "odoo18.0_base",
|
||||
"note": "Test helloword_test Will cause conflict with the other because write in code_generator_demo/hooks.py"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"test_name": "code_generator_theme_test",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "theme_website_demo_code_generator",
|
||||
"tested_module": "code_generator_demo_theme_website",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"test_name": "code_generator_demo_test",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "code_generator_demo",
|
||||
"tested_module": "code_generator_demo",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"test_name": "code_generator_data_test",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "demo_helpdesk_data",
|
||||
"tested_module": "code_generator_demo_export_helpdesk",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"test_name": "code_generator_data_part_2_test",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "demo_website_data",
|
||||
"tested_module": "code_generator_demo_export_website",
|
||||
"restore_db_image_name": "odoo18.0_base",
|
||||
"note": "Merge to code_generator_data_test when fix double export data."
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"test_name": "code_generator_inherit_test",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "demo_internal_inherit",
|
||||
"tested_module": "code_generator_demo_internal_inherit",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"test_name": "code_generator_template_demo_internal",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "code_generator_demo_internal",
|
||||
"tested_module": "code_generator_template_demo_internal",
|
||||
"search_class_module": "demo_internal",
|
||||
"init_module_name": "demo_internal",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"test_name": "code_generator_template_demo_portal",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "code_generator_demo_portal",
|
||||
"tested_module": "code_generator_template_demo_portal",
|
||||
"search_class_module": "demo_portal",
|
||||
"init_module_name": "demo_portal",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"test_name": "mariadb_test_template",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "code_generator_demo_mariadb_sql_example_1",
|
||||
"tested_module": "code_generator_template_demo_mariadb_sql_example_1",
|
||||
"search_class_module": "demo_mariadb_sql_example_1",
|
||||
"init_module_name": "code_generator_portal,demo_mariadb_sql_example_1",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"test_name": "mariadb_test_migrator",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "demo_mariadb_sql_example_1",
|
||||
"tested_module": "code_generator_migrator_demo_mariadb_sql_example_1",
|
||||
"script_after_init_check": "./script/database/restore_mariadb_sql_example_1.sh",
|
||||
"init_module_name": "code_generator_portal",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"test_name": "mariadb_test_code_generator",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "demo_mariadb_sql_example_1",
|
||||
"tested_module": "code_generator_demo_mariadb_sql_example_1",
|
||||
"init_module_name": "code_generator_portal",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"test_name": "code_generator_template_demo_internal_inherit",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "code_generator_demo_internal_inherit",
|
||||
"tested_module": "code_generator_template_demo_internal_inherit",
|
||||
"search_class_module": "demo_internal_inherit",
|
||||
"init_module_name": "demo_internal_inherit",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"test_name": "code_generator_template_demo_sysadmin_cron",
|
||||
"path_module_check": "./odoo18.0/addons/OCA_server-tools",
|
||||
"generated_module": "code_generator_auto_backup",
|
||||
"generated_path": "./odoo18.0/addons/OCA_server-tools/",
|
||||
"tested_module": "code_generator_template_demo_sysadmin_cron",
|
||||
"search_class_module": "auto_backup",
|
||||
"init_module_name": "auto_backup",
|
||||
"install_path": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"test_name": "code_generator_export_website_attachments_test",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "demo_website_attachments_data",
|
||||
"tested_module": "code_generator_demo_export_website_attachments",
|
||||
"restore_db_image_name": "test_website_attachments"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"test_name": "code_generator_demo_generic_test",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "demo_internal,demo_portal",
|
||||
"tested_module": "code_generator_demo_internal,code_generator_demo_portal",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"test_name": "code_generator_website_snippet_test",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "demo_website_leaflet,demo_website_snippet,demo_website_multiple_snippet",
|
||||
"tested_module": "code_generator_demo_website_leaflet,code_generator_demo_website_snippet,code_generator_demo_website_multiple_snippet",
|
||||
"file_to_restore": "demo_portal/i18n/demo_portal.pot,demo_portal/i18n/fr_CA.po",
|
||||
"file_to_restore_origin": true,
|
||||
"restore_db_image_name": "odoo18.0_base",
|
||||
"note": "Because code_generator_demo_website_multiple_snippet depend on code_generator_demo_portal, it will execute it and this delete file demo_portal/i18n/demo_portal.pot and demo_portal/i18n/fr_CA.po"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"test_name": "demo_test",
|
||||
"path_module_check": "./odoo18.0/addons/TechnoLibre_odoo-code-generator-template",
|
||||
"init_module_name": "demo_helpdesk_data,demo_internal,demo_internal_inherit,demo_mariadb_sql_example_1,demo_portal,demo_website_data,demo_website_leaflet,demo_website_snippet",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"test_name": "code_generator_auto_backup_test",
|
||||
"path_module_check": "./odoo18.0/addons/OCA_server-tools/auto_backup",
|
||||
"generated_module": "auto_backup",
|
||||
"tested_module": "code_generator_auto_backup",
|
||||
"restore_db_image_name": "odoo18.0_base"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -790,7 +790,7 @@ async def test_exec(
|
|||
return test_result, test_status, test_name, total_time
|
||||
|
||||
|
||||
def check_git_change():
|
||||
async def check_git_change():
|
||||
"""
|
||||
return True if success
|
||||
"""
|
||||
|
|
@ -810,10 +810,8 @@ def check_git_change():
|
|||
test_name="Init check_git_change OCA_server-tools",
|
||||
),
|
||||
]
|
||||
commands = asyncio.gather(*task_list)
|
||||
tpl_result = loop.run_until_complete(commands)
|
||||
tpl_result = await asyncio.gather(*task_list)
|
||||
status = any([a[1] for a in tpl_result])
|
||||
loop.close()
|
||||
return not status
|
||||
|
||||
|
||||
|
|
@ -962,7 +960,7 @@ def main():
|
|||
config = get_config()
|
||||
start_time = time.time()
|
||||
if not config.ignore_init_check_git:
|
||||
success = check_git_change()
|
||||
success = asyncio.run(check_git_change())
|
||||
else:
|
||||
success = True
|
||||
status = False
|
||||
|
|
|
|||
Loading…
Reference in a new issue