Merge branch 'fix_release_1_2_0'

Ready to release 1.2.0
This commit is contained in:
Mathieu Benoit 2021-07-21 00:20:48 -04:00
commit 80b3bbf8e7
32 changed files with 661 additions and 401 deletions

View file

@ -64,6 +64,11 @@ install_dev:
install_os:
./script/install_dev.sh
.PHONY: install_production
install_production:
./script/install_dev.sh
./script/install_production.sh
.PHONY: install_docker_debian
install_docker_debian:
./script/ install_debian_10_prod_docker.sh
@ -180,27 +185,22 @@ image_db_create_erplibre_website:
./script/addons/install_addons.sh test hr
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_ecommerce_pos_hr
.PHONY: image_db_create_erplibre_code_generator
image_db_create_erplibre_code_generator:
./script/make.sh addons_install_code_generator_basic
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database code_generator --restore_image erplibre_code_generator_basic
./script/make.sh addons_install_code_generator_featured
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database code_generator --restore_image erplibre_code_generator_featured
./script/make.sh addons_install_code_generator_full
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database code_generator --restore_image erplibre_code_generator_full
.PHONY: image_db_create_all
image_db_create_all:
./script/make.sh db_create_db_test
./script/addons/install_addons.sh test erplibre_base
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_base
./script/addons/install_addons.sh test website,erplibre_website_snippets_basic_html,erplibre_website_snippets_cards,erplibre_website_snippets_structures,erplibre_website_snippets_timelines,website_form_builder
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_website
./script/addons/install_addons.sh test crm,website_crm
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_website_crm
./script/addons/install_addons.sh test website_livechat
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_website_chat_crm
./script/addons/install_addons.sh test website_sale,erplibre_base_quebec
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_ecommerce_base
./script/addons/install_addons.sh test stock,purchase,website_sale_management
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_ecommerce_advance
./script/addons/install_addons.sh test project
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_ecommerce_project
./script/addons/install_addons.sh test pos_sale
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_ecommerce_pos
./script/addons/install_addons.sh test hr
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_ecommerce_pos_hr
#./script/make.sh config_gen_image_db
./script/make.sh image_db_create_erplibre_base
./script/make.sh image_db_create_erplibre_website
./script/make.sh image_db_create_erplibre_code_generator
#./script/make.sh config_gen_all
.PHONY: image_diff_base_website
image_diff_base_website:
@ -476,6 +476,12 @@ config_gen_code_generator:
./script/git_repo_update_group.py --group base,code_generator
./script/install_locally.sh
# generate config repo image_db
.PHONY: config_gen_image_db
config_gen_image_db:
./script/git_repo_update_group.py --group base,image_db
./script/install_locally.sh
##########
# I18n #
##########

View file

@ -1,8 +1,8 @@
# ERPLibre documentation
Select a guide to install your environment!
Select a guide to install your environment.
## Easy way to run locally
Clone the project
Clone the project:
```bash
git clone https://github.com/ERPLibre/ERPLibre.git
cd ERPLibre
@ -16,11 +16,22 @@ Update your configuration if you need to run from another interface than 127.0.0
#xmlrpc_interface = 127.0.0.1
#netrpc_interface = 127.0.0.1
```
Ready to execute
Ready to execute:
```bash
make run
```
## Easy way to run docker
First, install dependencies to run docker, check script `./script/install_ubuntu_docker.sh`. You need docker and docker-compose.
The docker volume is binded to the directory name, therefore create a unique directory name and run:
```bash
wget https://raw.githubusercontent.com/ERPLibre/ERPLibre/v1.2.0/docker-compose.yml
docker-compose up -d
```
For more information, read [Docker guide](./docker/README.md).
## Discover guide
[Guide to run ERPLibre in discover to learn it](./doc/DISCOVER.md).

View file

@ -6,6 +6,7 @@
<remote fetch="https://github.com/ERPLibre/" name="Numigi"/>
<remote fetch="https://github.com/ERPLibre/" name="OCA"/>
<remote fetch="https://github.com/ERPLibre/" name="Smile-SA"/>
<remote fetch="https://github.com/ERPLibre/" name="TechnoLibre"/>
<remote fetch="https://github.com/ERPLibre/" name="camptocamp"/>
<remote fetch="https://github.com/ERPLibre/" name="dhongu"/>
<remote fetch="https://github.com/ERPLibre/" name="it-projects-llc"/>
@ -22,6 +23,7 @@
<default remote="ERPLibre" revision="12.0" sync-c="true" sync-j="4"/>
<project clone-depth="1" dest-branch="12.0" groups="base" name="ERPLibre_image_db.git" path="image_db" revision="dab97241995bb65309e92db251eda6c35849f889" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="OpenHRMS.git" path="addons/CybroOdoo_OpenHRMS" remote="CybroOdoo" revision="e7881872d147e91a59e9ee9fac9e89316e1cabb4" upstream="12.0"/>
<project dest-branch="master" groups="addons" name="Property-Management_odoo.git" path="addons/kinjal-sorathiya_Property-Management_odoo" remote="kinjal-sorathiya" revision="922f6878ac560829d2ebe951b93f858c1e7d256d" upstream="master"/>
<project dest-branch="12.0" groups="addons" name="QuotationRevision.git" path="addons/odooaktiv_QuotationRevision" remote="odooaktiv" revision="701438f9c59bd657de516d9ef4de1ba6167bf30b" upstream="12.0"/>
@ -49,7 +51,7 @@
<project dest-branch="12.0" groups="addons" name="connector-jira.git" path="addons/OCA_connector-jira" remote="OCA" revision="34d3137a7ddebe680c55c1668702d573c5f3387d" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="connector-telephony.git" path="addons/OCA_connector-telephony" remote="OCA" revision="b87711775dae08e43a0803772bdeb6afda408db4" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="connector.git" path="addons/OCA_connector" remote="OCA" revision="274c3f1c385fb822eacd73235ecf3522dc96fe27" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="contract.git" path="addons/OCA_contract" remote="OCA" revision="03c444e0b583b8950da11efa302991d148bf9ac0" upstream="12.0"/>
<project dest-branch="12.0_dev" groups="addons,code_generator,image_db" name="contract.git" path="addons/OCA_contract" remote="OCA" revision="dba21c732101e0eda33a125acf03975ba53bf87b" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="credit-control.git" path="addons/OCA_credit-control" remote="OCA" revision="b37f66e87063b3b49117dbcab184ad3c28d050c7" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="crm.git" path="addons/OCA_crm" remote="OCA" revision="e0d66587f245c80a6dba3a5227481fe831b1891a" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="currency.git" path="addons/OCA_currency" remote="OCA" revision="b12e419825ec222a29c00fdb1b7740ad54397f51" upstream="12.0"/>
@ -57,57 +59,59 @@
<project dest-branch="12.0" groups="addons" name="ddmrp.git" path="addons/OCA_ddmrp" remote="OCA" revision="f4f2f920c091caef4bf0b55c6e1a98ed333afa25" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="delivery-carrier.git" path="addons/OCA_delivery-carrier" remote="OCA" revision="92a8b4445400a2ee76ed4ea9c9fe83a57a2aaeab" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="deltatech.git" path="addons/dhongu_deltatech" remote="dhongu" revision="70ad7f4f9981896e04117156732ac0056764031c" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="development.git" path="addons/MathBenTech_development" remote="MathBenTech" revision="2609ef2966731594741d6a5804cccba1251002e1" upstream="12.0"/>
<project dest-branch="12.0" groups="addons,base" name="development.git" path="addons/MathBenTech_development" remote="MathBenTech" revision="66e17f1be83ef79c1c2ad13c001aab07c6a5d36d" upstream="12.0"/>
<project dest-branch="12.0" groups="odoo" name="documentation-user.git" path="doc/odoo_documentation-user" remote="odoo" revision="34310a683b498768d5543839a72ceadd4a9120a7" upstream="12.0"/>
<project dest-branch="12.0_module_donation_website" groups="addons" name="donation.git" path="addons/OCA_donation" remote="OCA" revision="66a80b99c17baaa82df76d51bd3fd9bc3163034a" upstream="12.0_module_donation_website"/>
<project dest-branch="12.0" groups="addons" name="e-commerce.git" path="addons/OCA_e-commerce" remote="OCA" revision="004e2c69b4b0d6ff12ec863d41994b19fe12b70c" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="edi.git" path="addons/OCA_edi" remote="OCA" revision="020a96a4512b60ab74f1213526770595eb54e687" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="erplibre_addons.git" path="addons/ERPLibre_erplibre_addons" revision="e0f9013678edae6c8aeb93bcd2e793af75bb0124" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="erplibre_theme_addons.git" path="addons/ERPLibre_erplibre_theme_addons" revision="8ccf9eecbf26841d728b57dbc12f2c3bdbfe48de" upstream="12.0"/>
<project dest-branch="12.0" groups="addons,base" name="erplibre_addons.git" path="addons/ERPLibre_erplibre_addons" revision="e0f9013678edae6c8aeb93bcd2e793af75bb0124" upstream="12.0"/>
<project dest-branch="12.0" groups="addons,code_generator,image_db" name="erplibre_theme_addons.git" path="addons/ERPLibre_erplibre_theme_addons" revision="551d160d8c212e9faafc41d7aa0ea1fe9c54f092" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="event.git" path="addons/OCA_event" remote="OCA" revision="caa5d06e1dd454800149785685c73a1c17af14d1" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="field-service.git" path="addons/OCA_field-service" remote="OCA" revision="fb3cd1ccdf7339ef6d8a55173594f9727c509693" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="fleet.git" path="addons/OCA_fleet" remote="OCA" revision="3b5a96ef9d0a7d769c78e1141a7048a5cdbe8552" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="geospatial.git" path="addons/OCA_geospatial" remote="OCA" revision="24e5832b6807f2757a9f12e26c3cff8c241b63bc" upstream="12.0"/>
<project dest-branch="12.0_dev" groups="addons" name="helpdesk.git" path="addons/OCA_helpdesk" remote="OCA" revision="3f03ee5595e6827961c7c46d245bfde2ef2d4eec" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons,code_generator,image_db" name="geospatial.git" path="addons/OCA_geospatial" remote="OCA" revision="24e5832b6807f2757a9f12e26c3cff8c241b63bc" upstream="12.0"/>
<project dest-branch="12.0_dev" groups="addons,code_generator,image_db" name="helpdesk.git" path="addons/OCA_helpdesk" remote="OCA" revision="3f03ee5595e6827961c7c46d245bfde2ef2d4eec" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="hr.git" path="addons/OCA_hr" remote="OCA" revision="8cd4ac8db3cdbe500e21300edabfb3f20e657960" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="interface-github.git" path="addons/OCA_interface-github" remote="OCA" revision="9a51c99b0e0adb2d3529feca5d68c76a982d9afc" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="knowledge.git" path="addons/OCA_knowledge" remote="OCA" revision="7448855b3efc403cba03a3225056fed0fbc1c952" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="l10n-canada.git" path="addons/OCA_l10n-canada" remote="OCA" revision="5680b485cdfa0b6f1c2f4e32356b5938a9752c00" upstream="12.0"/>
<project dest-branch="master" groups="odoo,code_generator" name="maintainer-tools.git" path="script/OCA_maintainer-tools" remote="OCA" revision="7343658665924c0763f6578f27749c274c4206b7" upstream="master"/>
<project dest-branch="12.0" groups="addons" name="maintenance.git" path="addons/OCA_maintenance" remote="OCA" revision="915ba2aa932dad664e4604acf723ac0fb38f3796" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="management-system.git" path="addons/OCA_management-system" remote="OCA" revision="fd422cef074d8aacc2e0cfd61893a949d4d86cd6" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="manufacture.git" path="addons/OCA_manufacture" remote="OCA" revision="560da9ba630974d819e1e505648c7b9731e461f1" upstream="12.0"/>
<project dest-branch="12.0_sale_margin_editor" groups="addons" name="margin-analysis.git" path="addons/OCA_margin-analysis" remote="OCA" revision="9abbd69de30b972edd26269c212d0380f1915da7" upstream="12.0_sale_margin_editor"/>
<project dest-branch="12.0" groups="addons" name="medical-fhir.git" path="addons/tegin_medical-fhir" remote="tegin" revision="19cba74b3b61ba684749da1f5d7cdb287bd45050" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="mis-builder.git" path="addons/OCA_mis-builder" remote="OCA" revision="178c50f03df1b684972706aa94db917e6114f6cb" upstream="12.0"/>
<project dest-branch="12.0_dev" groups="addons" name="muk_base.git" path="addons/muk-it_muk_base" remote="muk-it" revision="395c178964b5c7f547e5d36d5b6e78bd58481f56" upstream="12.0_dev"/>
<project dest-branch="12.0_dev" groups="addons,base" name="muk_base.git" path="addons/muk-it_muk_base" remote="muk-it" revision="395c178964b5c7f547e5d36d5b6e78bd58481f56" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="muk_dms.git" path="addons/muk-it_muk_dms" remote="muk-it" revision="346b2d742696343ee025083604ee6fcb2050a65b" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="muk_docs.git" path="addons/muk-it_muk_docs" remote="muk-it" revision="a8ea02b9f00ae9fe5d2ea25ac43d23532cc11d45" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="muk_misc.git" path="addons/muk-it_muk_misc" remote="muk-it" revision="37b9d6dc20fa686a323057b160015bfc2c2c8143" upstream="12.0"/>
<project dest-branch="12.0" groups="addons,base" name="muk_misc.git" path="addons/muk-it_muk_misc" remote="muk-it" revision="37b9d6dc20fa686a323057b160015bfc2c2c8143" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="muk_quality.git" path="addons/muk-it_muk_quality" remote="muk-it" revision="1a4c6f25c5e4fe0029d406d6283555bd23a44d27" upstream="12.0"/>
<project dest-branch="12.0_fix_web_conflict_menu" groups="addons" name="muk_web.git" path="addons/muk-it_muk_web" remote="muk-it" revision="4fb8ce157ce0a144503440b0036bf05625b7c3e1" upstream="12.0_fix_web_conflict_menu"/>
<project dest-branch="12.0_remove_autoinstall" groups="addons" name="muk_website.git" path="addons/muk-it_muk_website" remote="muk-it" revision="c1e6c1755d09562f66247832bd01a0d580c43e23" upstream="12.0_remove_autoinstall"/>
<project dest-branch="12.0_dev" groups="addons,base" name="muk_web.git" path="addons/muk-it_muk_web" remote="muk-it" revision="d857e59a288f81ee1119860f30802473166888e1" upstream="12.0_dev"/>
<project dest-branch="12.0_remove_autoinstall" groups="addons,base" name="muk_website.git" path="addons/muk-it_muk_website" remote="muk-it" revision="c6c42a4b7187f8964675d004e478e2251f2cdde9" upstream="12.0_remove_autoinstall"/>
<project dest-branch="12.0" groups="addons" name="multi-company.git" path="addons/OCA_multi-company" remote="OCA" revision="9d689c5ad230f8f2e6a550354a6b1577a8e5a3c9" upstream="12.0"/>
<project dest-branch="12.0_dev" groups="addons" name="odoo-base-addons.git" path="addons/Numigi_odoo-base-addons" remote="Numigi" revision="78c23a29283f35ef480186358dd6d848a38a2aff" upstream="12.0_dev"/>
<project dest-branch="12.0_sale_order_line_timesheet_attribution" groups="addons" name="odoo-business-spending-management-quebec-canada.git" path="addons/MathBenTech_odoo-business-spending-management-quebec-canada" remote="MathBenTech" revision="822d2e018554119fa63f79ac91625473ec54b9fe" upstream="12.0_sale_order_line_timesheet_attribution"/>
<project dest-branch="12.0" groups="addons" name="odoo-cloud-platform.git" path="addons/camptocamp_odoo-cloud-platform" remote="camptocamp" revision="234451065fa2804af832d713dcec9cf8842d8a49" upstream="12.0"/>
<project dest-branch="master" groups="odoo" name="odoo-development.git" path="doc/itpp-labs_odoo-development" remote="itpp-labs" revision="980d072be43735411c91c859ae9a94e060a5e048" upstream="master"/>
<project dest-branch="12.0_sale_order_line_timesheet_attribution" groups="addons,base" name="odoo-business-spending-management-quebec-canada.git" path="addons/MathBenTech_odoo-business-spending-management-quebec-canada" remote="MathBenTech" revision="822d2e018554119fa63f79ac91625473ec54b9fe" upstream="12.0_sale_order_line_timesheet_attribution"/>
<project dest-branch="12.0_dev" groups="addons" name="odoo-cloud-platform.git" path="addons/camptocamp_odoo-cloud-platform" remote="camptocamp" revision="66ab5ab453d38f480bd8b07c54b9925e25e9890b" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons,code_generator,image_db" name="odoo-code-generator-template.git" path="addons/TechnoLibre_odoo-code-generator-template" remote="TechnoLibre" revision="4be2d00b98788b2b741a9c51c27bdab08c2905ef" upstream="12.0"/>
<project dest-branch="12.0" groups="addons,code_generator,image_db" name="odoo-code-generator.git" path="addons/TechnoLibre_odoo-code-generator" remote="TechnoLibre" revision="899858faa3c27979783896a7d9004d4e9c7c59b0" upstream="12.0"/>
<project dest-branch="12.0_dev" groups="odoo" name="odoo-development.git" path="doc/itpp-labs_odoo-development" remote="itpp-labs" revision="388bc9b618a0e7ccf970fc678028f19b146e65f9" upstream="12.0_dev"/>
<project dest-branch="12.0_dev" groups="addons" name="odoo-entertainment-addons.git" path="addons/Numigi_odoo-entertainment-addons" remote="Numigi" revision="5abba3eabcb60c96d80240ab756736eb57ed345b" upstream="12.0_dev"/>
<project dest-branch="12.0_dev" groups="addons" name="odoo-git-addons.git" path="addons/Numigi_odoo-git-addons" remote="Numigi" revision="a394f422a5d3063dd2c339544ecca74bdbbe19ae" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="odoo-hr-addons.git" path="addons/Numigi_odoo-hr-addons" remote="Numigi" revision="2d3dd1769b47aac54585c56dcad652a4dbe5850f" upstream="12.0"/>
<project dest-branch="master" groups="odoo" name="odoo-module-migrator.git" path="script/OCA_odoo-module-migrator" remote="OCA" revision="a9974dd4252d098590f8694f283aafac7a2b5278" upstream="master"/>
<project dest-branch="12.0_dev" groups="addons" name="odoo-partner-addons.git" path="addons/Numigi_odoo-partner-addons" remote="Numigi" revision="3320fbed43c324d07035f7f1d1bc77d779f8fe0e" upstream="12.0_dev"/>
<project dest-branch="12.0_dev" groups="addons,image_db" name="odoo-partner-addons.git" path="addons/Numigi_odoo-partner-addons" remote="Numigi" revision="3320fbed43c324d07035f7f1d1bc77d779f8fe0e" upstream="12.0_dev"/>
<project dest-branch="master" groups="odoo" name="odoo-port-docs.git" path="doc/itpp-labs_odoo-port-docs" remote="itpp-labs" revision="25ded087e996dfa0244563d797060c34c11f981d" upstream="master"/>
<project dest-branch="12.0_dev" groups="addons" name="odoo-product-addons.git" path="addons/Numigi_odoo-product-addons" remote="Numigi" revision="e4daf4cb743dd73928571c0757083e8ee6fec6ef" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="odoo-product-configurator.git" path="addons/pledra_odoo-product-configurator" remote="pledra" revision="785923c83266097f53569769c26c8f2a859d1d6f" upstream="12.0"/>
<project dest-branch="12.0_dev" groups="addons" name="odoo-project-addons.git" path="addons/Numigi_odoo-project-addons" remote="Numigi" revision="3f844c31afd62a3f1a606f9d55038a881c10c927" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="odoo-purchase-addons.git" path="addons/Numigi_odoo-purchase-addons" remote="Numigi" revision="36d5b5b5a56ef0ddbb75bc83d5d13c38aceea3f2" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="odoo-saas-tools.git" path="addons/it-projects-llc_odoo-saas-tools" remote="it-projects-llc" revision="5f7cf7f7d347a244641feb5d38ac8acd180e4e2b" upstream="12.0"/>
<project dest-branch="12.0_dev" groups="addons" name="odoo-stock-addons.git" path="addons/Numigi_odoo-stock-addons" remote="Numigi" revision="0d4106c1800c2feff32e40206082bb4cb10547d1" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="odoo-survey-addons.git" path="addons/Numigi_odoo-survey-addons" remote="Numigi" revision="9e897bae38ff0d6d3180296a552d994bb10c0eff" upstream="12.0"/>
<project dest-branch="master" groups="odoo" name="odoo-test-docs.git" path="doc/itpp-labs_odoo-test-docs" remote="itpp-labs" revision="9179c795931c681a4d7e261da039c43ba3797ec4" upstream="master"/>
<project dest-branch="12.0_dev" groups="addons" name="odoo-timesheet-addons.git" path="addons/Numigi_odoo-timesheet-addons" remote="Numigi" revision="11f01fcca4714fd946949519fd3f3b56b136b813" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="odoo-web-addons.git" path="addons/Numigi_odoo-web-addons" remote="Numigi" revision="3a4aa46439a794429d5939cff561f42c4f312a99" upstream="12.0"/>
<project clone-depth="10" dest-branch="ERPLibre/12.0" groups="odoo" name="odoo.git" path="odoo" remote="odoo" revision="1e850cfcf0f628c5fd24a596c9eda7afb148a1f2" upstream="ERPLibre/12.0"/>
<project clone-depth="10" dest-branch="ERPLibre/12.0" groups="odoo,base" name="odoo.git" path="odoo" remote="odoo" revision="bfe7c536250add48b0c59553278c9c1f0905593c" upstream="ERPLibre/12.0"/>
<project dest-branch="12.0_remote_autoinstall" groups="addons" name="odoo_addons.git" path="addons/Smile-SA_odoo_addons" remote="Smile-SA" revision="42cac5684e7bc60454a56eb44366c9b079dff197" upstream="12.0_remote_autoinstall"/>
<project dest-branch="12.0" groups="addons" name="odoo_dhtmlxgantt.git" path="addons/obayit_odoo_dhtmlxgantt" remote="obayit" revision="f54a35ba90be42967cdd423e830823981be75f67" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="odooapps.git" path="addons/odoomates_odooapps" remote="odoomates" revision="76ed3e44029407bf0733ca14c00d2a4b5dc0bfa8" upstream="12.0"/>
@ -126,16 +130,17 @@
<project dest-branch="12.0" groups="addons" name="queue.git" path="addons/OCA_queue" remote="OCA" revision="d303bceac89152c6996b7f5bbeabb6a67192b93f" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="reporting-engine.git" path="addons/OCA_reporting-engine" remote="OCA" revision="733d57754c6e419bb16ee095824e787b218c1aa4" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="rma.git" path="addons/OCA_rma" remote="OCA" revision="fd48feb1dea66daae474b74a7e7656f74ba50313" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="saas-addons.git" path="addons/it-projects-llc_saas-addons" remote="it-projects-llc" revision="b03699e438366bb8df292ef6486ef7473cf15e34" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="sale-reporting.git" path="addons/OCA_sale-reporting" remote="OCA" revision="10224ef7b42ee3dec2849414e41557b0bc3c8f79" upstream="12.0"/>
<project dest-branch="12.0_modules_sale_order_line" groups="addons" name="sale-workflow.git" path="addons/OCA_sale-workflow" remote="OCA" revision="5d8d2575e6a2c8ad0e3315abd0585651f73b80fd" upstream="12.0_modules_sale_order_line"/>
<project dest-branch="12.0_dev" groups="addons" name="scrummer.git" path="addons/MathBenTech_scrummer" remote="MathBenTech" revision="38c04c8f7b7fe897d166ded74dda9d8d76f7f4c4" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="server-auth.git" path="addons/OCA_server-auth" remote="OCA" revision="2bfb2b2f64bda15fb5c7f8f4d528aa1aadc4998b" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="server-backend.git" path="addons/OCA_server-backend" remote="OCA" revision="77a1ee79912d381e06c8bd96f1034574b460881d" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="server-brand.git" path="addons/OCA_server-brand" remote="OCA" revision="786a26c58f789ed63e6380d5e550cf300a5ae1a4" upstream="12.0"/>
<project dest-branch="12.0" groups="addons,base" name="server-brand.git" path="addons/OCA_server-brand" remote="OCA" revision="786a26c58f789ed63e6380d5e550cf300a5ae1a4" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="server-env.git" path="addons/OCA_server-env" remote="OCA" revision="11d6745d4156636dd12d134a9b3f8053cb24717b" upstream="12.0"/>
<project dest-branch="12.0_dev" groups="addons" name="server-tools.git" path="addons/OCA_server-tools" remote="OCA" revision="7496a05bae0f7fdb57ff7dab40db57cc13eeb9ec" upstream="12.0_dev"/>
<project dest-branch="12.0_dev" groups="addons,base" name="server-tools.git" path="addons/OCA_server-tools" remote="OCA" revision="27835ae75e9679750b433fdc4756771b8fff7997" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="server-ux.git" path="addons/OCA_server-ux" remote="OCA" revision="765439a6af66be5ee2427a2775812d44a345a235" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="social.git" path="addons/OCA_social" remote="OCA" revision="8bd98212b8d04aa3de82e9f51063b9d185ac0f1c" upstream="12.0"/>
<project dest-branch="12.0" groups="addons,base" name="social.git" path="addons/OCA_social" remote="OCA" revision="8bd98212b8d04aa3de82e9f51063b9d185ac0f1c" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="stock-logistics-warehouse.git" path="addons/OCA_stock-logistics-warehouse" remote="OCA" revision="1b99507da7815d1dd2e030a3a1d28285ea7ecf76" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="storage.git" path="addons/OCA_storage" remote="OCA" revision="77bac72af7f4aa1c6248378e9cbb5ebcdd52f994" upstream="12.0"/>
<project dest-branch="12.0_support_project_agile_timesheet" groups="addons" name="timesheet.git" path="addons/OCA_timesheet" remote="OCA" revision="a8630243c1c06c66579f5d6fff6ad71e249a0f80" upstream="12.0_support_project_agile_timesheet"/>
@ -143,9 +148,9 @@
<project dest-branch="12.0" groups="addons" name="vertical-hotel.git" path="addons/OCA_vertical-hotel" remote="OCA" revision="f958379e1492870431a92543089db214b62ab1f5" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="vertical-isp.git" path="addons/OCA_vertical-isp" remote="OCA" revision="28ad39aae5eb5cebaa46d79ce563ef760451962b" upstream="12.0"/>
<project dest-branch="12.0" groups="addons" name="vertical-travel.git" path="addons/OCA_vertical-travel" remote="OCA" revision="3572c0689eb67a757681070ac913c72cea50645f" upstream="12.0"/>
<project dest-branch="12.0_dev" groups="addons" name="web.git" path="addons/OCA_web" remote="OCA" revision="2c57ad38475f030dbd00c01d00c6a540d5ab4d7d" upstream="12.0_dev"/>
<project dest-branch="12.0_dev" groups="addons,base" name="web.git" path="addons/OCA_web" remote="OCA" revision="2c57ad38475f030dbd00c01d00c6a540d5ab4d7d" upstream="12.0_dev"/>
<project dest-branch="12.0_dev" groups="addons" name="website-addons.git" path="addons/itpp-labs_website-addons" remote="itpp-labs" revision="ed7d3b19435d7522afccf17edd9261ab215b4851" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="website-cms.git" path="addons/OCA_website-cms" remote="OCA" revision="e67368d15de06e795247bd54874181bfd7324a44" upstream="12.0"/>
<project dest-branch="12.0_dev" groups="addons" name="website.git" path="addons/OCA_website" remote="OCA" revision="900919e8fbe155ebf58273870f0fb596f317f6c4" upstream="12.0_dev"/>
<project dest-branch="12.0_dev" groups="addons,code_generator,image_db" name="website.git" path="addons/OCA_website" remote="OCA" revision="900919e8fbe155ebf58273870f0fb596f317f6c4" upstream="12.0_dev"/>
<project dest-branch="12.0" groups="addons" name="wms.git" path="addons/OCA_wms" remote="OCA" revision="04600a6f653b7c7e8b597f452cceb4172013c73f" upstream="12.0"/>
</manifest>

View file

@ -12,10 +12,10 @@
<!-- [en] -->
Never run this on production environment, this create circular dependencies and will cause frustration to clean damage.
<!-- [fr] -->
Ne jamais exécuter le générateur de code dans un environnement de production, il y a création de dépendance circulaire pouvant causer de la frustration à nettoyer tous les dommages. D'ailleurs, il est nécessaire d'exécuter en mode développement, avec l'argument `--dev all`.
Ne jamais exécuter le générateur de code dans un environnement de production, il y a création de dépendances circulaires pouvant causer de la frustration à nettoyer tous les dommages. D'ailleurs, il est nécessaire d'exécuter en mode développement, avec l'argument `--dev all`.
L'objectif du générateur de code est de :
- utilisation du générateur via l'interface web;
- utiliser le générateur via l'interface web;
- créer un nouveau module;
- modifier un module existant;
- exécuter les tests.
@ -24,7 +24,7 @@ Ce générateur de code, pour ERPLibre, a tout avantage d'être sous licence AGP
- (Utiliser) L'utilisation de module sans restriction;
- (Copier) Copier des modules pour faciliter leur maintenance et leur pérennité;
- (Étudier) De comprendre le comportement des fonctionnalités;
- (Modifier) Modifier un module existant pour l'améliorer et pouvoir le redistribuer à la communauté;
- (Modifier) Modifier un module existant pour l'améliorer et devoir le redistribuer à la communauté;
<!-- [common] -->
```
@ -40,16 +40,16 @@ Modules
3. A Template reads a Module to generate a Code_Generator.
<!-- [fr] -->
Il y a 3 types de module dans le contexte du générateur de code :
1. [A Template generates a Template or a Code_Generator.](#crer-votre-premier-code_generator), le chef d'orchestre qui permet de gérer plusieurs générateur de code.
Il y a 3 types de modules dans le contexte du générateur de code :
1. [A Template generates a Template or a Code_Generator.](#crer-votre-premier-code_generator), le chef d'orchestre qui permet de gérer plusieurs générateurs de code.
2. Un Code_Generator génère un module, c'est un moule à module généré.
3. Un Template lit un module pour générer un Code_Generator.
<!-- [en] -->
Warning, be careful to your code, always commit after a manipulation, because the mode enable_sync_code erase data, only the git will save you!
Warning, be careful with your code, always commit after a manipulation, because the mode enable_sync_code erase data, only Git will save you!
<!-- [fr] -->
Attention pour ne pas écraser votre code, toujours commiter après une manipulation, l'utilisation du mode enable_sync_code peut effacer des données. Seul git vous sauvera!
Attention pour ne pas écraser votre code, toujours commiter après une manipulation, l'utilisation du mode enable_sync_code peut effacer des données. Seul Git vous sauvera!
<!-- [en] -->
## Manual generator with web interface
@ -91,7 +91,7 @@ make addons_install_code_generator_full
make run_code_generator
```
Ouvrir le navigateur sur [http://localhost:8069](http://localhost:8069). Utilisateur `test` et mot de passe `test`. Une fois connecté, ouvrir sur [http://localhost:8069/web?debug=](http://localhost:8069/web?debug=) pour activer le déverminage.
Ouvrir le navigateur sur [http://localhost:8069](http://localhost:8069). Utilisateur `test` et mot de passe `test`. Une fois connecté, ouvrir sur [http://localhost:8069/web?debug=](http://localhost:8069/web?debug=) pour activer le mode déverminage.
Ouvrir l'application `Code Generator` et créer un `Module`. Remplir les champs requis et générer avec `Action/Generate code`.
@ -111,7 +111,7 @@ make run_code_generator
TODO
<!-- [fr] -->
Pour des références techniques, voir module :
Pour des références techniques, voir modules :
- code_generator_template_demo_portal
- code_generator_demo_portal
- code_generator_demo_internal
@ -122,12 +122,12 @@ Pour des références techniques, voir module :
TODO
<!-- [fr] -->
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Technical Data», activer «Application».
- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder.
Aller dans le module «Code generator» et créer un module «test»;
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Technical Data», activer «Application»;
- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder;
- Appuyer sur le bouton «Views»
- Appuyer «Generate»
- Appuyer «Generate».
Générer le module avec «Action/Générer code».
@ -155,7 +155,7 @@ make run_code_generator
TODO
<!-- [fr] -->
Pour des références techniques, voir module :
Pour des références techniques, voir modules :
- code_generator_template_demo_portal
- code_generator_demo_portal
- code_generator_demo_internal
@ -166,15 +166,15 @@ Pour des références techniques, voir module :
TODO
<!-- [fr] -->
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Technical Data», activer «Application».
- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder.
Aller dans le module «Code generator» et créer un module «test»;
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Technical Data», activer «Application»;
- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder;
- Appuyer sur le bouton «Views»
- Désactiver «Enable all feature»
- Dans l'onglet «Portal»
- Activer «Enable portal feature»
- Appuyer «Generate»
- Appuyer «Generate».
Générer le module avec «Action/Générer code».
@ -203,10 +203,10 @@ Aller sur le portail pour visualiser les données, à l'adresse `/my`.
TODO
<!-- [fr] -->
Le crochet nommé «hook» permet d'exécuter du code en
- Pré-initialisation du module
- Post-initialisation du module
- Désinstallation du module
Le crochet nommé «hook» permet d'exécuter du code en:
- Pré-initialisation du module;
- Post-initialisation du module;
- Désinstallation du module.
Pour des références techniques, voir module :
- code_generator_demo
@ -223,10 +223,10 @@ TODO
<!-- [fr] -->
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Hook»
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Hook»:
- Activer «Show post_init_hook»
- Ajouter le code suivant dans la fenêtre qui est apparu :
- Ajouter le code suivant dans la fenêtre qui est apparue :
<!-- [common] -->
```python
@ -260,9 +260,9 @@ TODO
Permettre d'exécuter du code basé sur des séquences de temps ou des moments spécifiques à répétition.
Pour des références techniques, voir module :
- code_generator_template_demo_sysadmin_cron
- code_generator_auto_backup
- auto_backup
- code_generator_template_demo_sysadmin_cron;
- code_generator_auto_backup;
- auto_backup.
<!-- [common] -->
```bash
@ -276,13 +276,13 @@ TODO
<!-- [fr] -->
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Cron»
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Cron»:
- Ajouter un cron
- Choisir le «Modèle» : «Contact»
- Choisir unité de temps en «Minutes» dans «Exécuter tous les»
- Modifier «Nombre d'appel» à -1 pour exécution sans arrêt.
- Activer «Force nextcall» pour permettre que l'interval soit basé sur le moment d'installation du module
- Choisir le «Modèle» : «Contact»;
- Choisir unité de temps en «Minutes» dans «Exécuter tous les»;
- Modifier «Nombre d'appel» à -1 pour exécution sans arrêt;
- Activer «Force nextcall» pour permettre que l'interval soit basé sur le moment d'installation du module.
- Ajouter le code :
<!-- [common] -->
@ -307,7 +307,7 @@ make run_test
TODO
<!-- [fr] -->
Avec les outils développeur, aller regarder les logs dans l'application «Configuration»/Technique/«Structure de base de donnée»/Historisation. Des informations dans le temps apparaîtront avec le mot «Coucou».
Avec les outils développeur, aller regarder les logs dans l'application «Configuration»/Technique/«Structure de base de données»/Historisation. Des informations dans le temps apparaîtront avec le mot «Coucou».
<!-- [en] -->
### Create website snippet module
@ -333,9 +333,9 @@ TODO
<!-- [fr] -->
Pour des références techniques, voir module :
- code_generator_template_demo_website_snippet
- code_generator_demo_website_snippet
- demo_website_snippet
- code_generator_template_demo_website_snippet;
- code_generator_demo_website_snippet;
- demo_website_snippet.
Puis dans le repo addons/ERPLibre_erplibre_theme_addons, branche code_generator_erplibre_website_snippets
- code_generator_erplibre_website_snippets
@ -350,10 +350,10 @@ Aller dans le module «Code generator» et créer un module «test».
TODO Incomplet
<!-- [en] -->
### Create geoengine with Leaflet module
### Create GeoEngine with Leaflet module
<!-- [fr] -->
### Créer un module de gestion de coordonnée géospatial avec Leaflet
### Créer un module de gestion de coordonnées géospatiales avec Leaflet
<!-- [common] -->
```bash
@ -367,31 +367,31 @@ TODO
<!-- [fr] -->
Pour des références techniques, voir module :
- code_generator_demo_website_leaflet
- demo_website_leaflet
- code_generator_demo_website_leaflet;
- demo_website_leaflet.
<!-- [en] -->
TODO
<!-- [fr] -->
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Technical Data»
- Activer «Application»
- Ajouter la dépendance du geo_engine «Geospatial support for System»
- Sur l'onglet «Elements»/«Models»
- Ajouter un modèle «test»
- Ajouter un champs de type «geo_». Le «geo_point» fonctionne bien. Si vous ajoutez plusieurs géométrie, tel que «geo_point», «geo_line» et «geo_polygon», il faut ajouter le champs «type» avec les valeurs du nom des champs choisis en option de sélection, exemple `[('geo_point', 'Geo Point'),('geo_polygon', 'Geo Polygon')]`
- Ajouter le champs optionnel «html_text» de type «html» pour pouvoir afficher du texte dessus.
- Appuyer sur le bouton «Controllers»
- Ajouter le modèle du module actuel, «test»
- Appuyer «Generate»
- Appuyer sur le bouton «Views»
- Désactiver «Enable all feature»
- Dans l'onglet «Website»
- Activer «Enable website leaflet feature»
- Activer «Enable geoengine feature»
- Appuyer «Generate»
Aller dans le module «Code generator» et créer un module «test»:
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Technical Data»:
- Activer «Application»;
- Ajouter la dépendance du geo_engine «Geospatial support for System»;
- Sur l'onglet «Elements»/«Models»:
- Ajouter un modèle «test»;
- Ajouter un champs de type «geo_». Le «geo_point» fonctionne bien. Si vous ajoutez plusieurs géométries, telles que «geo_point», «geo_line» et «geo_polygon», il faut ajouter le champs nommé «type» au type sélection avec les valeurs du nom des champs choisis en option de sélection, exemple `[('geo_point', 'Geo Point'),('geo_polygon', 'Geo Polygon')]`
- Ajouter le champs optionnel «html_text» de type «html» pour pouvoir afficher du texte dedans.
- Appuyer sur le bouton «Controllers»:
- Ajouter le modèle du module actuel, «test»;
- Appuyer «Generate».
- Appuyer sur le bouton «Views»:
- Désactiver «Enable all feature»;
- Dans l'onglet «Website»:
- Activer «Enable website leaflet feature»;
- Activer «Enable geoengine feature»;
- Appuyer «Generate».
Générer le module avec «Action/Générer code».
@ -423,7 +423,7 @@ TODO
<!-- [fr] -->
Pour des références techniques, voir module :
- code_generator_demo_theme_website
- code_generator_demo_theme_website.
<!-- [common] -->
```bash
@ -435,13 +435,13 @@ make run_code_generator
TODO
<!-- [fr] -->
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Technical Data», activer «Website theme».
- Appuyer sur le bouton «Views»
- Aller à l'onglet «theme_website»
- Mettre les couleurs désirés
- Appuyer «Generate»
Aller dans le module «Code generator» et créer un module «test»:
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Technical Data», activer «Website theme»;
- Appuyer sur le bouton «Views»:
- Aller à l'onglet «theme_website»:
- Mettre les couleurs désirés;
- Appuyer «Generate».
Générer le module avec «Action/Générer code».
@ -458,7 +458,7 @@ make run_test
TODO
<!-- [fr] -->
Aller dans l'interface web, Application «Configuration», «Paramètres Généraux»/«Site Web»/«Choisissez un thème». Installer le thème «TEST». Puis aller la page du site web, les couleurs sont dans «Personnaliser»/«Personnaliser le thème».
Aller dans l'interface web, Application «Configuration», «Paramètres Généraux»/«Site Web»/«Choisissez un thème». Installer le thème «TEST», puis aller la page du site web, les couleurs sont dans «Personnaliser»/«Personnaliser le thème».
<!-- [en] -->
### Extract data to module
@ -470,13 +470,13 @@ Aller dans l'interface web, Application «Configuration», «Paramètres Génér
TODO
<!-- [fr] -->
L'exemple est avec le helpdesk. Installer le module helpdesk_mgmt :
L'exemple est construit avec le helpdesk. Installer le module helpdesk_mgmt :
Pour des références techniques, voir module :
- code_generator_demo_export_helpdesk
- code_generator_demo_export_website
- demo_website_data
- demo_helpdesk_data
- code_generator_demo_export_helpdesk;
- code_generator_demo_export_website;
- demo_website_data;
- demo_helpdesk_data.
<!-- [common] -->
```bash
@ -490,18 +490,18 @@ TODO
<!-- [fr] -->
Créer un ticket dans l'application «Helpdesk» dans l'interface web.
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Technical Data», activer «Only export data».
- Appuyer sur le bouton «Models»
Aller dans le module «Code generator» et créer un module «test»:
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Technical Data», activer «Only export data»;
- Appuyer sur le bouton «Models»:
- Choisissez dans «Models» :
- «helpdesk.ticket»
- Activer «Clear field blacklisted»
- Enlever les éléments suivant de «Fields» :
- name
- description
- number
- Appuyer «Generate»
- «helpdesk.ticket»;
- Activer «Clear field blacklisted»;
- Enlever les éléments suivants de «Fields» :
- name;
- description;
- number;
- Appuyer «Generate».
Générer le module avec «Action/Générer code».
<!-- [common] -->
@ -510,10 +510,10 @@ make db_restore_erplibre_base_db_test_module_test
```
<!-- [en] -->
### Migrate external database into module of migration
### Migrate external database into the migration module
<!-- [fr] -->
### Migrer une base de donnée externe en module de migration
### Migrer une base de données externe en module de migration
<!-- [en] -->
TODO
@ -534,7 +534,7 @@ make run_code_generator
TODO
<!-- [fr] -->
Aller dans le module «Code generator», menu «Databases»/«Databases» et créer un connecteur vers une base de donnée.
Aller dans le module «Code generator», menu «Databases»/«Databases» et créer un connecteur vers une base de données.
À compléter...
@ -542,7 +542,7 @@ Aller dans le module «Code generator», menu «Databases»/«Databases» et cr
### Migrate from website to model with PDF data
<!-- [fr] -->
### Migrer d'un site web vers un modèle de donnée avec des données format PDF
### Migrer d'un site web vers un modèle de données avec des données format PDF
<!-- [en] -->
TODO
@ -550,13 +550,13 @@ TODO
<!-- [fr] -->
En progression, ce n'est pas encore supporté via l'interface web.
Cette technique permet d'aller lire du Javascript sur un site web pour lire ensuite le HTML, c'est à dire la vue, et en comprendre l'information pour créer un modèle.
Cette technique permet d'aller lire du Javascript sur un site web pour lire ensuite le HTML, c'est-à-dire la vue, et en comprendre l'information, pour créer un modèle.
Pour des références techniques, voir module :
- code_generator_demo_converter_js
- business_plan_import_pdf
- code_generator_demo_converter_js;
- business_plan_import_pdf.
Attention, il faut mettre à jour les variables, dans les fichiers hook.py qui permettront d'extraire des données sur le site web à copier. Aucun exemple public n'est accessible pour le moment.
Attention, il faut mettre à jour les variables, dans les fichiers hook.py, qui permettront d'extraire des données sur le site web à copier. Aucun exemple public n'est accessible pour le moment.
<!-- [common] -->
```bash
@ -573,10 +573,10 @@ make db_restore_erplibre_base_db_test
## Préparer une BD
<!-- [en] -->
This will destroy and create database named `code_generator`.
This will destroy and create a database named `code_generator`.
<!-- [fr] -->
Ceci va détruire et créer une base de donnée nommé `code_generator`.
Ceci va détruire et créer une base de données nommée `code_generator`.
<!-- [common] -->
```bash
@ -587,7 +587,7 @@ make db_restore_erplibre_base_db_code_generator
TODO
<!-- [fr] -->
Pour de meilleur performance d'exécution, réduire la quantité de «repo addons» permet d'accélérer l'installation, exécuter :
Pour de meilleures performances d'exécution, réduire la quantité de «repo addons» qui permet d'accélérer l'installation, exécuter :
<!-- [common] -->
```bash
@ -598,7 +598,7 @@ make config_gen_code_generator
TODO
<!-- [fr] -->
Pour revenir à la configuration normal, en production, exécuter :
Pour revenir à la configuration normale, en production, exécuter :
<!-- [common] -->
```bash
@ -624,9 +624,9 @@ Modifier [Code Generator Demo](./../addons/TechnoLibre_odoo-code-generator/code_
### Générer un `Template`
<!-- [en] -->
By default, `code_generator_demo` generate itself, `code_generator_demo`.
By default, `code_generator_demo` generates itself, `code_generator_demo`.
Name your module begin with `MODULE_NAME = "code_generator_template_"`
Name your module beginning with `MODULE_NAME = "code_generator_template_"`
The value "enable_template_code_generator_demo" at `False` to create a new template module, else this will recreate `code_generator_demo`.
@ -636,7 +636,7 @@ Par défaut, installer le module code_generator_demo va générer le module `cod
Nommer votre module en commençant par `MODULE_NAME = "code_generator_template_"`
<!-- [en] -->
Example, to generate the module `code_generator_template_demo_website_snippet`, change value:
For example, to generate the module `code_generator_template_demo_website_snippet`, change value:
<!-- [fr] -->
Un exemple, générer le module `code_generator_template_demo_website_snippet`, changer la variable `value`:
@ -672,13 +672,13 @@ make addons_install_code_generator_demo
### Générer un Code_Generator (suite de template)
<!-- [en] -->
Name your module begin with `MODULE_NAME = "code_generator_"`
Name your module beginning with `MODULE_NAME = "code_generator_"`
<!-- [fr] -->
Au besoin, renommé votre module qui débute par `MODULE_NAME = "code_generator_"`
Au besoin, renommer votre module qui débute par `MODULE_NAME = "code_generator_"`
<!-- [en] -->
Continue the example, you generated the template `code_generator_template_demo_website_snippet`, this will overwrite `code_generator_demo_website_snippet`:
To continue the example, you generated the template `code_generator_template_demo_website_snippet`, this will overwrite `code_generator_demo_website_snippet`:
<!-- [fr] -->
Pour continuer avec l'exemple, généré le template `code_generator_template_demo_website_snippet`, ceci va écraser `code_generator_demo_website_snippet`:
@ -705,12 +705,12 @@ Aller à la section [Créer votre premier module](#crer-votre-premier-module)
TODO validate this
<!-- [en] -->
Name your module begin with `MODULE_NAME = "code_generator_demo_"`
Name your module beginning with `MODULE_NAME = "code_generator_demo_"`
Disable `enable_template_code_generator_demo`
<!-- [fr] -->
Nommé votre module qui débute par `MODULE_NAME = "code_generator_demo_"`
Nommer votre module qui débute par `MODULE_NAME = "code_generator_demo_"`
Désactiver la variable `enable_template_code_generator_demo`
@ -720,10 +720,10 @@ value["enable_template_code_generator_demo"] = False
```
<!-- [en] -->
Continue the example, you generated the template `code_generator_template_demo_website_snippet`, this will overwrite `code_generator_demo_website_snippet`:
To continue the example, you generated the template `code_generator_template_demo_website_snippet`, this will overwrite `code_generator_demo_website_snippet`:
<!-- [fr] -->
Pour continuer avec l'exemple, généré le template `code_generator_template_demo_website_snippet`, ceci va écraser `code_generator_demo_website_snippet`:
Pour continuer avec l'exemple, générez le template `code_generator_template_demo_website_snippet`, ceci va écraser `code_generator_demo_website_snippet`:
<!-- [common] -->
```bash
@ -737,7 +737,7 @@ Pour continuer avec l'exemple, généré le template `code_generator_template_de
## Créer votre premier module
<!-- [en] -->
Continue example of code_generator_demo_website_snippet to generate your first module. Update next value:
To continue the example of code_generator_demo_website_snippet to generate your first module. Update next value:
<!-- [fr] -->
Continuer avec l'exemple du `code_generator_demo_website_snippet` pour générer votre premier module. Mettre à jour les valeurs suivantes :
@ -766,7 +766,7 @@ make db_restore_erplibre_base_db_code_generator
```
<!-- [en] -->
Now, you can test it! Note, you cannot install a generated module with is code_generator associated, because duplicated
Now, you can test it! Note, you cannot install a generated module with his code_generator associated, because of duplicated
models!
<!-- [fr] -->
@ -801,7 +801,7 @@ value["template_model_name"] = "test;test2"
TODO
<!-- [fr] -->
Exécuter l'installation du template pour qu'il se synchronise sur le module généré.
Exécuter l'installation du template pour qu'il se synchronise avec le module généré.
<!-- [common] -->
```bash
@ -842,7 +842,7 @@ code_generator_writer.set_module_translator(new_module_name, new_module_path)
```
<!-- [en] -->
First, install the module, example `demo_portal`, and after the template, example `code_generator_template_demo_portal`.
First, install the module, for example `demo_portal`, and after the template, for example `code_generator_template_demo_portal`.
<!-- [fr] -->
Premièrement, installer le module, par exemple `demo_portal`, et ensuite le template, par exemple `code_generator_template_demo_portal`.
@ -861,7 +861,7 @@ make db_restore_erplibre_base_db_code_generator
# Synchroniser les champs du `Code_Generator` du module
<!-- [en] -->
This reduce time of programming a `Code_Generator` with sync module field with `Template`.
This reduce the time it takes for programming a `Code_Generator` with sync module field with `Template`.
You need a `Template`, a `Code_Generator` with his `Module`. Install the `Module` first in clean database and install `Template`,
this will generate the `Code_Generator`, use `enable_sync_template` at True.
@ -871,7 +871,7 @@ Example:
<!-- [fr] -->
Ceci va permettre de réduire le temps de programmation d'un `Code_Generator` avec la synchronisation des champs de module avec `Template`.
On a besoin d'un `Template`, un `Code_Generator` accompagné de son module. Installer le module en premier dans une base de donnée nettoyé et installer le `Template`, ceci va générer le `Code_Generator`, utiliser `enable_sync_template` à la valeur `True`.
On a besoin d'un `Template`, un `Code_Generator` accompagné de son module. Installer le module en premier dans une base de données nettoyée et installer le `Template`, ceci va générer le `Code_Generator`, utiliser `enable_sync_template` à la valeur `True`.
Exemple :
@ -914,7 +914,7 @@ make test_code_generator_generation
TODO
<!-- [fr] -->
Tester les générations extra :
Tester les générations extras :
<!-- [common] -->
```bash

View file

@ -1,9 +1,9 @@
# Comment générer du code
Ne jamais exécuter le générateur de code dans un environnement de production, il y a création de dépendance circulaire pouvant causer de la frustration à nettoyer tous les dommages. D'ailleurs, il est nécessaire d'exécuter en mode développement, avec l'argument `--dev all`.
Ne jamais exécuter le générateur de code dans un environnement de production, il y a création de dépendances circulaires pouvant causer de la frustration à nettoyer tous les dommages. D'ailleurs, il est nécessaire d'exécuter en mode développement, avec l'argument `--dev all`.
L'objectif du générateur de code est de :
- utilisation du générateur via l'interface web;
- utiliser le générateur via l'interface web;
- créer un nouveau module;
- modifier un module existant;
- exécuter les tests.
@ -12,7 +12,7 @@ Ce générateur de code, pour ERPLibre, a tout avantage d'être sous licence AGP
- (Utiliser) L'utilisation de module sans restriction;
- (Copier) Copier des modules pour faciliter leur maintenance et leur pérennité;
- (Étudier) De comprendre le comportement des fonctionnalités;
- (Modifier) Modifier un module existant pour l'améliorer et pouvoir le redistribuer à la communauté;
- (Modifier) Modifier un module existant pour l'améliorer et devoir le redistribuer à la communauté;
```
Modules
@ -21,12 +21,12 @@ Modules
############ ################## ##########
```
Il y a 3 types de module dans le contexte du générateur de code :
1. [A Template generates a Template or a Code_Generator.](#crer-votre-premier-code_generator), le chef d'orchestre qui permet de gérer plusieurs générateur de code.
Il y a 3 types de modules dans le contexte du générateur de code :
1. [A Template generates a Template or a Code_Generator.](#crer-votre-premier-code_generator), le chef d'orchestre qui permet de gérer plusieurs générateurs de code.
2. Un Code_Generator génère un module, c'est un moule à module généré.
3. Un Template lit un module pour générer un Code_Generator.
Attention pour ne pas écraser votre code, toujours commiter après une manipulation, l'utilisation du mode enable_sync_code peut effacer des données. Seul git vous sauvera!
Attention pour ne pas écraser votre code, toujours commiter après une manipulation, l'utilisation du mode enable_sync_code peut effacer des données. Seul Git vous sauvera!
## Générateur de module avec l'interface web
@ -52,7 +52,7 @@ make addons_install_code_generator_full
make run_code_generator
```
Ouvrir le navigateur sur [http://localhost:8069](http://localhost:8069). Utilisateur `test` et mot de passe `test`. Une fois connecté, ouvrir sur [http://localhost:8069/web?debug=](http://localhost:8069/web?debug=) pour activer le déverminage.
Ouvrir le navigateur sur [http://localhost:8069](http://localhost:8069). Utilisateur `test` et mot de passe `test`. Une fois connecté, ouvrir sur [http://localhost:8069/web?debug=](http://localhost:8069/web?debug=) pour activer le mode déverminage.
Ouvrir l'application `Code Generator` et créer un `Module`. Remplir les champs requis et générer avec `Action/Generate code`.
@ -63,19 +63,19 @@ make addons_install_code_generator_basic
make run_code_generator
```
Pour des références techniques, voir module :
Pour des références techniques, voir modules :
- code_generator_template_demo_portal
- code_generator_demo_portal
- code_generator_demo_internal
- demo_portal
- demo_internal
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Technical Data», activer «Application».
- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder.
Aller dans le module «Code generator» et créer un module «test»;
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Technical Data», activer «Application»;
- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder;
- Appuyer sur le bouton «Views»
- Appuyer «Generate»
- Appuyer «Generate».
Générer le module avec «Action/Générer code».
@ -93,22 +93,22 @@ make addons_install_code_generator_basic
make run_code_generator
```
Pour des références techniques, voir module :
Pour des références techniques, voir modules :
- code_generator_template_demo_portal
- code_generator_demo_portal
- code_generator_demo_internal
- demo_portal
- demo_internal
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Technical Data», activer «Application».
- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder.
Aller dans le module «Code generator» et créer un module «test»;
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Technical Data», activer «Application»;
- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder;
- Appuyer sur le bouton «Views»
- Désactiver «Enable all feature»
- Dans l'onglet «Portal»
- Activer «Enable portal feature»
- Appuyer «Generate»
- Appuyer «Generate».
Générer le module avec «Action/Générer code».
@ -124,10 +124,10 @@ Aller sur le portail pour visualiser les données, à l'adresse `/my`.
### Créer un module crochet pour l'installation
Le crochet nommé «hook» permet d'exécuter du code en
- Pré-initialisation du module
- Post-initialisation du module
- Désinstallation du module
Le crochet nommé «hook» permet d'exécuter du code en:
- Pré-initialisation du module;
- Post-initialisation du module;
- Désinstallation du module.
Pour des références techniques, voir module :
- code_generator_demo
@ -139,10 +139,10 @@ make run_code_generator
```
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Hook»
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Hook»:
- Activer «Show post_init_hook»
- Ajouter le code suivant dans la fenêtre qui est apparu :
- Ajouter le code suivant dans la fenêtre qui est apparue :
```python
with api.Environment.manage():
@ -162,9 +162,9 @@ make db_restore_erplibre_base_db_test_module_test
Permettre d'exécuter du code basé sur des séquences de temps ou des moments spécifiques à répétition.
Pour des références techniques, voir module :
- code_generator_template_demo_sysadmin_cron
- code_generator_auto_backup
- auto_backup
- code_generator_template_demo_sysadmin_cron;
- code_generator_auto_backup;
- auto_backup.
```bash
make addons_install_code_generator_basic
@ -173,13 +173,13 @@ make run_code_generator
```
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Cron»
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Cron»:
- Ajouter un cron
- Choisir le «Modèle» : «Contact»
- Choisir unité de temps en «Minutes» dans «Exécuter tous les»
- Modifier «Nombre d'appel» à -1 pour exécution sans arrêt.
- Activer «Force nextcall» pour permettre que l'interval soit basé sur le moment d'installation du module
- Choisir le «Modèle» : «Contact»;
- Choisir unité de temps en «Minutes» dans «Exécuter tous les»;
- Modifier «Nombre d'appel» à -1 pour exécution sans arrêt;
- Activer «Force nextcall» pour permettre que l'interval soit basé sur le moment d'installation du module.
- Ajouter le code :
```python
@ -194,7 +194,7 @@ make db_restore_erplibre_base_db_test_module_test
make run_test
```
Avec les outils développeur, aller regarder les logs dans l'application «Configuration»/Technique/«Structure de base de donnée»/Historisation. Des informations dans le temps apparaîtront avec le mot «Coucou».
Avec les outils développeur, aller regarder les logs dans l'application «Configuration»/Technique/«Structure de base de données»/Historisation. Des informations dans le temps apparaîtront avec le mot «Coucou».
### Créer un module de snippet pour le site web
@ -207,9 +207,9 @@ make run_code_generator
```
Pour des références techniques, voir module :
- code_generator_template_demo_website_snippet
- code_generator_demo_website_snippet
- demo_website_snippet
- code_generator_template_demo_website_snippet;
- code_generator_demo_website_snippet;
- demo_website_snippet.
Puis dans le repo addons/ERPLibre_erplibre_theme_addons, branche code_generator_erplibre_website_snippets
- code_generator_erplibre_website_snippets
@ -219,7 +219,7 @@ Aller dans le module «Code generator» et créer un module «test».
TODO Incomplet
### Créer un module de gestion de coordonnée géospatial avec Leaflet
### Créer un module de gestion de coordonnées géospatiales avec Leaflet
```bash
make addons_install_code_generator_basic
@ -228,27 +228,27 @@ make run_code_generator
```
Pour des références techniques, voir module :
- code_generator_demo_website_leaflet
- demo_website_leaflet
- code_generator_demo_website_leaflet;
- demo_website_leaflet.
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Technical Data»
- Activer «Application»
- Ajouter la dépendance du geo_engine «Geospatial support for System»
- Sur l'onglet «Elements»/«Models»
- Ajouter un modèle «test»
- Ajouter un champs de type «geo_». Le «geo_point» fonctionne bien. Si vous ajoutez plusieurs géométrie, tel que «geo_point», «geo_line» et «geo_polygon», il faut ajouter le champs «type» avec les valeurs du nom des champs choisis en option de sélection, exemple `[('geo_point', 'Geo Point'),('geo_polygon', 'Geo Polygon')]`
- Ajouter le champs optionnel «html_text» de type «html» pour pouvoir afficher du texte dessus.
- Appuyer sur le bouton «Controllers»
- Ajouter le modèle du module actuel, «test»
- Appuyer «Generate»
- Appuyer sur le bouton «Views»
- Désactiver «Enable all feature»
- Dans l'onglet «Website»
- Activer «Enable website leaflet feature»
- Activer «Enable geoengine feature»
- Appuyer «Generate»
Aller dans le module «Code generator» et créer un module «test»:
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Technical Data»:
- Activer «Application»;
- Ajouter la dépendance du geo_engine «Geospatial support for System»;
- Sur l'onglet «Elements»/«Models»:
- Ajouter un modèle «test»;
- Ajouter un champs de type «geo_». Le «geo_point» fonctionne bien. Si vous ajoutez plusieurs géométries, telles que «geo_point», «geo_line» et «geo_polygon», il faut ajouter le champs nommé «type» au type sélection avec les valeurs du nom des champs choisis en option de sélection, exemple `[('geo_point', 'Geo Point'),('geo_polygon', 'Geo Polygon')]`
- Ajouter le champs optionnel «html_text» de type «html» pour pouvoir afficher du texte dedans.
- Appuyer sur le bouton «Controllers»:
- Ajouter le modèle du module actuel, «test»;
- Appuyer «Generate».
- Appuyer sur le bouton «Views»:
- Désactiver «Enable all feature»;
- Dans l'onglet «Website»:
- Activer «Enable website leaflet feature»;
- Activer «Enable geoengine feature»;
- Appuyer «Generate».
Générer le module avec «Action/Générer code».
@ -267,20 +267,20 @@ Aller sur la page du site web, ajouter le snippet «Leaflet». Chercher le point
### Créer un module thème pour site web
Pour des références techniques, voir module :
- code_generator_demo_theme_website
- code_generator_demo_theme_website.
```bash
make addons_install_code_generator_basic
./script/addons/install_addons.sh code_generator code_generator_theme_website
make run_code_generator
```
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Technical Data», activer «Website theme».
- Appuyer sur le bouton «Views»
- Aller à l'onglet «theme_website»
- Mettre les couleurs désirés
- Appuyer «Generate»
Aller dans le module «Code generator» et créer un module «test»:
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Technical Data», activer «Website theme»;
- Appuyer sur le bouton «Views»:
- Aller à l'onglet «theme_website»:
- Mettre les couleurs désirés;
- Appuyer «Generate».
Générer le module avec «Action/Générer code».
@ -292,17 +292,17 @@ make db_restore_erplibre_base_db_test
make run_test
```
Aller dans l'interface web, Application «Configuration», «Paramètres Généraux»/«Site Web»/«Choisissez un thème». Installer le thème «TEST». Puis aller la page du site web, les couleurs sont dans «Personnaliser»/«Personnaliser le thème».
Aller dans l'interface web, Application «Configuration», «Paramètres Généraux»/«Site Web»/«Choisissez un thème». Installer le thème «TEST», puis aller la page du site web, les couleurs sont dans «Personnaliser»/«Personnaliser le thème».
### Extraire les données vers un module
L'exemple est avec le helpdesk. Installer le module helpdesk_mgmt :
L'exemple est construit avec le helpdesk. Installer le module helpdesk_mgmt :
Pour des références techniques, voir module :
- code_generator_demo_export_helpdesk
- code_generator_demo_export_website
- demo_website_data
- demo_helpdesk_data
- code_generator_demo_export_helpdesk;
- code_generator_demo_export_website;
- demo_website_data;
- demo_helpdesk_data.
```bash
make addons_install_code_generator_basic
@ -311,25 +311,25 @@ make run_code_generator
```
Créer un ticket dans l'application «Helpdesk» dans l'interface web.
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
- Sur l'onglet «Technical Data», activer «Only export data».
- Appuyer sur le bouton «Models»
Aller dans le module «Code generator» et créer un module «test»:
- Sur l'onglet «Information», activer «Enable Sync Code»;
- Sur l'onglet «Technical Data», activer «Only export data»;
- Appuyer sur le bouton «Models»:
- Choisissez dans «Models» :
- «helpdesk.ticket»
- Activer «Clear field blacklisted»
- Enlever les éléments suivant de «Fields» :
- name
- description
- number
- Appuyer «Generate»
- «helpdesk.ticket»;
- Activer «Clear field blacklisted»;
- Enlever les éléments suivants de «Fields» :
- name;
- description;
- number;
- Appuyer «Generate».
Générer le module avec «Action/Générer code».
```bash
make db_restore_erplibre_base_db_test_module_test
```
### Migrer une base de donnée externe en module de migration
### Migrer une base de données externe en module de migration
En progression.
@ -341,21 +341,21 @@ make addons_install_code_generator_basic
./script/addons/install_addons.sh code_generator code_generator_db_servers
make run_code_generator
```
Aller dans le module «Code generator», menu «Databases»/«Databases» et créer un connecteur vers une base de donnée.
Aller dans le module «Code generator», menu «Databases»/«Databases» et créer un connecteur vers une base de données.
À compléter...
### Migrer d'un site web vers un modèle de donnée avec des données format PDF
### Migrer d'un site web vers un modèle de données avec des données format PDF
En progression, ce n'est pas encore supporté via l'interface web.
Cette technique permet d'aller lire du Javascript sur un site web pour lire ensuite le HTML, c'est à dire la vue, et en comprendre l'information pour créer un modèle.
Cette technique permet d'aller lire du Javascript sur un site web pour lire ensuite le HTML, c'est-à-dire la vue, et en comprendre l'information, pour créer un modèle.
Pour des références techniques, voir module :
- code_generator_demo_converter_js
- business_plan_import_pdf
- code_generator_demo_converter_js;
- business_plan_import_pdf.
Attention, il faut mettre à jour les variables, dans les fichiers hook.py qui permettront d'extraire des données sur le site web à copier. Aucun exemple public n'est accessible pour le moment.
Attention, il faut mettre à jour les variables, dans les fichiers hook.py, qui permettront d'extraire des données sur le site web à copier. Aucun exemple public n'est accessible pour le moment.
```bash
make db_restore_erplibre_base_db_code_generator
@ -366,19 +366,19 @@ make db_restore_erplibre_base_db_test
## Préparer une BD
Ceci va détruire et créer une base de donnée nommé `code_generator`.
Ceci va détruire et créer une base de données nommée `code_generator`.
```bash
make db_restore_erplibre_base_db_code_generator
```
Pour de meilleur performance d'exécution, réduire la quantité de «repo addons» permet d'accélérer l'installation, exécuter :
Pour de meilleures performances d'exécution, réduire la quantité de «repo addons» qui permet d'accélérer l'installation, exécuter :
```bash
make config_gen_code_generator
```
Pour revenir à la configuration normal, en production, exécuter :
Pour revenir à la configuration normale, en production, exécuter :
```bash
make config_gen_all
@ -416,7 +416,7 @@ make addons_install_code_generator_demo
### Générer un Code_Generator (suite de template)
Au besoin, renommé votre module qui débute par `MODULE_NAME = "code_generator_"`
Au besoin, renommer votre module qui débute par `MODULE_NAME = "code_generator_"`
Pour continuer avec l'exemple, généré le template `code_generator_template_demo_website_snippet`, ceci va écraser `code_generator_demo_website_snippet`:
@ -429,7 +429,7 @@ Aller à la section [Créer votre premier module](#crer-votre-premier-module)
### Générer un Code_Generator_Demo
Nommé votre module qui débute par `MODULE_NAME = "code_generator_demo_"`
Nommer votre module qui débute par `MODULE_NAME = "code_generator_demo_"`
Désactiver la variable `enable_template_code_generator_demo`
@ -437,7 +437,7 @@ Désactiver la variable `enable_template_code_generator_demo`
value["enable_template_code_generator_demo"] = False
```
Pour continuer avec l'exemple, généré le template `code_generator_template_demo_website_snippet`, ceci va écraser `code_generator_demo_website_snippet`:
Pour continuer avec l'exemple, générez le template `code_generator_template_demo_website_snippet`, ceci va écraser `code_generator_demo_website_snippet`:
```bash
./script/addons/install_addons_dev.sh code_generator code_generator_template_demo_website_snippet
@ -483,7 +483,7 @@ value["enable_template_wizard_view"] = True
value["template_model_name"] = "test;test2"
```
Exécuter l'installation du template pour qu'il se synchronise sur le module généré.
Exécuter l'installation du template pour qu'il se synchronise avec le module généré.
```bash
make db_restore_erplibre_base_db_template
@ -520,7 +520,7 @@ make db_restore_erplibre_base_db_code_generator
Ceci va permettre de réduire le temps de programmation d'un `Code_Generator` avec la synchronisation des champs de module avec `Template`.
On a besoin d'un `Template`, un `Code_Generator` accompagné de son module. Installer le module en premier dans une base de donnée nettoyé et installer le `Template`, ceci va générer le `Code_Generator`, utiliser `enable_sync_template` à la valeur `True`.
On a besoin d'un `Template`, un `Code_Generator` accompagné de son module. Installer le module en premier dans une base de données nettoyée et installer le `Template`, ceci va générer le `Code_Generator`, utiliser `enable_sync_template` à la valeur `True`.
Exemple :
@ -544,7 +544,7 @@ Tester les générations simples :
make test_code_generator_generation
```
Tester les générations extra :
Tester les générations extras :
```bash
make test_code_generator_generation_extra

View file

@ -13,7 +13,7 @@ Modules
2. A Code_Generator generates a Module.
3. A Template reads a Module to generate a Code_Generator.
Warning, be careful to your code, always commit after a manipulation, because the mode enable_sync_code erase data, only the git will save you!
Warning, be careful with your code, always commit after a manipulation, because the mode enable_sync_code erase data, only Git will save you!
## Manual generator with web interface
@ -34,7 +34,7 @@ make addons_install_code_generator_full
make run_code_generator
```
Ouvrir le navigateur sur [http://localhost:8069](http://localhost:8069). Utilisateur `test` et mot de passe `test`. Une fois connecté, ouvrir sur [http://localhost:8069/web?debug=](http://localhost:8069/web?debug=) pour activer le déverminage.
Ouvrir le navigateur sur [http://localhost:8069](http://localhost:8069). Utilisateur `test` et mot de passe `test`. Une fois connecté, ouvrir sur [http://localhost:8069/web?debug=](http://localhost:8069/web?debug=) pour activer le mode déverminage.
Ouvrir l'application `Code Generator` et créer un `Module`. Remplir les champs requis et générer avec `Action/Generate code`.
@ -136,7 +136,7 @@ TODO
TODO
### Create geoengine with Leaflet module
### Create GeoEngine with Leaflet module
```bash
make addons_install_code_generator_basic
@ -189,7 +189,7 @@ TODO
make db_restore_erplibre_base_db_test_module_test
```
### Migrate external database into module of migration
### Migrate external database into the migration module
TODO
@ -213,7 +213,7 @@ make db_restore_erplibre_base_db_test
## Prepare a DB
This will destroy and create database named `code_generator`.
This will destroy and create a database named `code_generator`.
```bash
make db_restore_erplibre_base_db_code_generator
@ -237,13 +237,13 @@ Edit [Code Generator Demo](./../addons/TechnoLibre_odoo-code-generator/code_gene
### Generate a `Template`
By default, `code_generator_demo` generate itself, `code_generator_demo`.
By default, `code_generator_demo` generates itself, `code_generator_demo`.
Name your module begin with `MODULE_NAME = "code_generator_template_"`
Name your module beginning with `MODULE_NAME = "code_generator_template_"`
The value "enable_template_code_generator_demo" at `False` to create a new template module, else this will recreate `code_generator_demo`.
Example, to generate the module `code_generator_template_demo_website_snippet`, change value:
For example, to generate the module `code_generator_template_demo_website_snippet`, change value:
```python
MODULE_NAME = "code_generator_template_demo_website_snippet"
@ -265,9 +265,9 @@ make addons_install_code_generator_demo
### Generate a Code_Generator (continue template)
Name your module begin with `MODULE_NAME = "code_generator_"`
Name your module beginning with `MODULE_NAME = "code_generator_"`
Continue the example, you generated the template `code_generator_template_demo_website_snippet`, this will overwrite `code_generator_demo_website_snippet`:
To continue the example, you generated the template `code_generator_template_demo_website_snippet`, this will overwrite `code_generator_demo_website_snippet`:
```bash
make db_restore_erplibre_base_db_template
@ -278,7 +278,7 @@ Go to section [Create your first module](#create-your-first-module)
### Generate a Code_Generator_Demo
Name your module begin with `MODULE_NAME = "code_generator_demo_"`
Name your module beginning with `MODULE_NAME = "code_generator_demo_"`
Disable `enable_template_code_generator_demo`
@ -286,7 +286,7 @@ Disable `enable_template_code_generator_demo`
value["enable_template_code_generator_demo"] = False
```
Continue the example, you generated the template `code_generator_template_demo_website_snippet`, this will overwrite `code_generator_demo_website_snippet`:
To continue the example, you generated the template `code_generator_template_demo_website_snippet`, this will overwrite `code_generator_demo_website_snippet`:
```bash
./script/addons/install_addons_dev.sh code_generator code_generator_template_demo_website_snippet
@ -294,7 +294,7 @@ Continue the example, you generated the template `code_generator_template_demo_w
## Create your first Module
Continue example of code_generator_demo_website_snippet to generate your first module. Update next value:
To continue the example of code_generator_demo_website_snippet to generate your first module. Update next value:
```python
"application": True,
@ -313,7 +313,7 @@ make db_restore_erplibre_base_db_code_generator
./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_snippet
```
Now, you can test it! Note, you cannot install a generated module with is code_generator associated, because duplicated
Now, you can test it! Note, you cannot install a generated module with his code_generator associated, because of duplicated
models!
@ -354,7 +354,7 @@ new_module_path = os.path.join(path_module_generate, new_module_name)
code_generator_writer.set_module_translator(new_module_name, new_module_path)
```
First, install the module, example `demo_portal`, and after the template, example `code_generator_template_demo_portal`.
First, install the module, for example `demo_portal`, and after the template, for example `code_generator_template_demo_portal`.
```bash
make db_restore_erplibre_base_db_code_generator
@ -364,7 +364,7 @@ make db_restore_erplibre_base_db_code_generator
# Sync Code_Generator fields from Module
This reduce time of programming a `Code_Generator` with sync module field with `Template`.
This reduce the time it takes for programming a `Code_Generator` with sync module field with `Template`.
You need a `Template`, a `Code_Generator` with his `Module`. Install the `Module` first in clean database and install `Template`,
this will generate the `Code_Generator`, use `enable_sync_template` at True.

View file

@ -1,16 +1,25 @@
# Thanks
## AGILE OPS
Thanks for contributing to GIT_REPO and docker.
- [Agile OPS](https://www.linkedin.com/in/michaelfaille/)
Thanks to [Agile OPS](https://www.linkedin.com/in/michaelfaille/) for contributing to GIT_REPO and docker.
## MathBenTech
Thanks for creating this project.
- [MathBen.Tech](https://mathben.tech)
Thanks to [MathBenTech](https://mathben.tech) for creating ERPLibre project.
## Marieplume
Thanks to [Marieplume](https://marieplume.ca) for keeping the language in check.
## OCA
Thanks to [Odoo Community Association](https://odoo-community.org) for the collaborative development of Odoo features.
## TechnoLibre
Thanks for making this enterprise edition of ERPLibre.
- [TechnoLibre](https://technolibre.ca)
Thanks to [TechnoLibre](https://technolibre.ca) for making this enterprise edition of ERPLibre.
## Yenthe Van Ginneken
Thanks Yenthe Van Ginneken for your scripting guides and tutorials.
- [Yenthe666 InstallScript](https://github.com/Yenthe666/InstallScript)
Thanks [Yenthe666 InstallScript](https://github.com/Yenthe666/InstallScript) for your scripting guides and tutorials.

View file

@ -1,13 +1,17 @@
# Development guide
Setup your environment to develop modules and debug the platform.
## Local installation procedure
### 1. Clone the project:
```bash
git clone https://github.com/ERPLibre/ERPLibre.git
```
### 2. Execute the script:
```bash
cd ERPLibre
./script/install_dev.sh
@ -15,157 +19,205 @@ cd ERPLibre
```
### 3. Run ERPLibre
```bash
./run.sh
```
## Develop in Odoo repository
You need to remove `clone-depth="10"` from `./manifest/default.dev.xml` in order to be able to commit and push.
Make a temporary commit and regenerate with `./script/install_locally_dev.sh`
You need to remove `clone-depth="10"` from `./manifest/default.dev.xml` in order to be able to commit and push. Make a
temporary commit and regenerate with `./script/install_locally_dev.sh`
## Fork project to create a new project independent from ERPLibre (deprecated)
ERPLibre was created by this script. It's now deprecated.
Use this script when you need to fork directly from the original source.
Don't use this script if you want to update from ERPLibre and follow mainstream development.
ERPLibre was created with this script. It's now deprecated. Use this script when you need to fork directly from the
original source. Don't use this script if you want to update from ERPLibre and follow mainstream development.
```bash
./script/fork_project.py --github_token GITHUB_KEY --organization NAME
```
# Fork all repos for you own organization
Go to your github account and generate a token to access fork option with your user. Create an organization or use your personal account can choose your user name.
This command will fork all repos and ERPLibre to your own organization. It keeps track to ERPLibre.
Go to your Github account and generate a token to access fork option with your user. Create an organization or use your
personal account and choose your user name.
This command will fork all repos and ERPLibre to your own organization. It keeps track of ERPLibre.
```bash
./script/fork_project_ERPLibre.py --github_token GITHUB_KEY --organization NAME
```
## Generate manifest from csv repo
Add repo in file [./source_repo_addons.csv](./source_repo_addons.csv)
Execute to generate Repo manifest
```bash
./script/fork_project_ERPLibre.py --skip_fork
```
## Move database prod to dev
When moving database prod to your dev environment, you want to remove email servers and install user test in order to test the database.
Run:
## Move database from prod to dev
When moving database from prod to your dev environment, you want to remove email servers and install user test in order
to test the database. Run:
```bash
./run.sh --stop-after-init -i user_test,disable_mail_server --dev all -d DATABASE
```
## Change git url https to git
This will update all urls in git format:
## Change git url https to Git
This will update all urls in Git format:
```bash
./script/git_change_remote_https_to_git.py
```
## Showing repo differences between projects
Tools to display the differences between the repo and another project.
```bash
./script/git_change_remote.py --sync_to /path/to/project/erplibre --dry_sync
```
## Showing repo differences with manifest develop
To understand the divergence with the dev manifest.
To understand the divergences with the dev manifest.
```bash
./script/git_show_code_diff_repo_manifest.py -m ./manifest/default.dev.xml
```
## Sync repo with another project
Tools to synchronise the repo with another project. This will show differences and try to checkout on the same commit in all repos.
Tools to synchronise the repo with another project. This will show differences and try to checkout on the same commit in
all repos.
```bash
./script/git_change_remote.py --sync_to /path/to/project/erplibre
```
## Compare two files manifests
To show differences between commits in different manifests
```bash
./script/git_diff_repo_manifest.py --input1 ./manifest/MANIFEST1.xml --input2 ./manifest/MANIFEST2.xml
```
## Differences between code and manifest
To show differences between actual code and manifest
```bash
./script/git_show_code_diff_repo_manifest.py --manifest ./manifest/MANIFEST1.xml
```
## Add repo
To access a new repo, add your URL to file [source_repo_addons.csv](../source_repo_addons.csv)
Fork the repo to be able to push new code:
```bash
./script/fork_project_ERPLibre.py
```
To regenerate only manifest.xml.
```bash
./script/fork_project_ERPLibre.py --skip_fork
```
Check if manifest contains "auto_install" and change the value to False.
```bash
./script/repo_remove_auto_install.py
```
## Filter repo by group
Only keep repo tagged by group 'base' and 'code_generator'
```bash
./script/update_manifest_local_dev_code_generator.sh
```
# Execution
## Config file
You can limit your addons in ERPlibre config file depending on a group of your actual manifest.
```bash
./script/git_repo_update_group.py --group base,code_generator
./script/install_locally.sh
```
Or go back to normal
```bash
./script/git_repo_update_group.py
./script/install_locally.sh
```
# Coding
## Create module scaffold
```bash
source ./.venv/bin/activate
python odoo/odoo-bin scaffold MODULE_NAME addons/REPO_NAME/
```
# Pull request
## Show all pull requests from organization
```bash
/script/pull_request_ERPLibre.py --github_token ### --organization ERPLibre
```
# Commit
Use this commit format:
```bash
git commit -am "[#ticket] subject: short sentence"
```
# Format code
## Python
Use [black](https://github.com/psf/black)
```bash
./script/maintenance/black.sh ./addons/TechnoLibre_odoo-code-generator
```
Or if you prefer [oca-autopep8](https://github.com/psf/black)
```bash
./script/maintenance/autopep8.sh ./addons/TechnoLibre_odoo-code-generator
```
## HTML and css
Use [prettier](https://github.com/prettier/prettier)
```bash
./script/maintenance/prettier.sh ./addons/TechnoLibre_odoo-code-generator
```
## Javascript
Use [prettier](https://github.com/prettier/prettier)
```bash
./script/maintenance/prettier.sh --tab-width 4 ./addons/TechnoLibre_odoo-code-generator
```

View file

@ -1,13 +1,17 @@
# Discover
Explore the ERPLibre solution.
## Fast installation
### 1. Clone the project:
```bash
git clone https://github.com/ERPLibre/ERPLibre.git
```
### 2. Run installation locally:
```bash
cd ERPLibre
./script/install_dev.sh
@ -15,14 +19,17 @@ cd ERPLibre
```
### 3. Run ERPLibre
```bash
./run.sh
```
## Add repo
To access a new repo, add your URL to file [source_repo_addons.csv](../source_repo_addons.csv)
Execute script:
```bash
./script/git_repo_manifest.py
git checkout -b NEW_BRANCH
@ -30,4 +37,5 @@ git commit -am "Add new repo"
./script/install_locally_dev.sh
./script/poetry_update.py
```
[Update your repo.](./GIT_REPO.md)

View file

@ -1,21 +1,31 @@
# FAQ
## Networking
Show all open port
```bash
sudo lsof -i -P -n | grep LISTEN
```
or
```bash
sudo netstat -lpnt | grep LISTEN
```
or
```bash
sudo ss -lpnt | grep LISTEN
```
## git-repo
### error.GitError fatal bad revision
Example:
```
error.GitError: manifests rev-list (u'^2736dfd46e8a30cf59a9cd6e93d9e56e87021f2a', 'HEAD', '--'): fatal: bad revision 'HEAD'
```
@ -23,6 +33,7 @@ error.GitError: manifests rev-list (u'^2736dfd46e8a30cf59a9cd6e93d9e56e87021f2a'
Did you modify files in .repo?
To reset files from your branch into .repo:
```bash
cd .repo/manifests
git branch -av
@ -32,4 +43,4 @@ git branch -av
# To reset the "remotes/origin" use the same as "remotes/m"
git reset --hard REF_OF_REMOTES/m
> git reset --hard remotes/origin/rel/8953/zd552kl/7.1.1-11.40.208
```
```

View file

@ -1,27 +1,34 @@
# git-repo
This is a guide to understand git-repo. Scripts in ERPLibre use git-repo automatically.
[git-repo of Google](https://code.google.com/archive/p/git-repo) is used to manage all git repositories under licence [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).
[git-repo of Google](https://code.google.com/archive/p/git-repo) is used to manage all git repositories under
licence [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).
## Setup repo
```bash
curl https://storage.googleapis.com/git-repo-downloads/repo > ./.venv/repo
```
## prod
```bash
./.venv/repo init -u https://github.com/ERPLibre/ERPLibre -b master
./.venv/repo sync
```
## dev
```bash
./.venv/repo init -u https://github.com/ERPLibre/ERPLibre -b 12.0_repo -m ./manifest/default.dev.xml
./.venv/repo sync
```
## local dev
[Guide to setup locally git](https://railsware.com/blog/taming-the-git-daemon-to-quickly-share-git-repository/).
```bash
git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose &
@ -30,21 +37,31 @@ git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose
```
# Create Manifest
A [Manifest](https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.md), is a XML file managed by git-repo to generate repo.
A [Manifest](https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.md), is an XML file managed by
git-repo to generate a repo.
## Make a new version of prod
It freezes all repo, from dev to prod.
This will add revision git hash in the Manifest.
This will add revision git hash in the manifest.
```bash
./.venv/repo manifest -r -o ./default.xml
```
Commit.
```bash
git commit -am "[#ticket] subject: short sentence"
```
### Mix prod and dev to create a stage version
When dev contains specific revision with default revision, you need to replace default revision with prod revision and keep specific version:
When dev contains specific revision with default revision, you need to replace default revision with prod revision and
keep specific version:
```bash
./script/git_merge_repo_manifest.py --input1 ./manifest/default.dev.xml --input2 ./default.xml --output ./manifest/default.staged.xml
git commit -am "Updated manifest/default.staged.xml"
@ -56,33 +73,42 @@ git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose
./.venv/repo manifest -r -o ./default.xml
```
## Create a dev version
```bash
./.venv/repo manifest -o ./manifest/default.dev.xml
```
Commit.
```bash
git commit -am "[#ticket] subject: short sentence"
```
## Useful commands
### Search all repo with a specific branch name
### Search all repos with a specific branch name
```bash
./.venv/repo forall -pc "git branch -a|grep BRANCH"
```
### Search missing branch in all repos
```bash
./.venv/repo forall -pc 'git branch -a|(grep /BRANCH$||echo "no match")|grep "no match"'
```
### Search changed file in all repos
```bash
./.venv/repo forall -pc "git status -s"
```
### Clean all
Before, check changed file in all repos.
Before cleaning, check changed file in all repos.
```bash
./.venv/repo forall -pc "git status -s"
@ -95,6 +121,7 @@ Check the changed branch, and push changed if needed.
```
Maybe, some version diverge from your manifest. Simply clean all and relaunch your installation.
```bash
./script/clean_repo_manifest.sh
```
```

View file

@ -1,3 +1,5 @@
# HOW TO
## Update changelog
Please read the following documentation [keepachangelog.com](https://keepachangelog.com)

View file

@ -1,29 +0,0 @@
# ERPLibre
## Migration procedure in production
TODO
## Migration procedure in dev
Example:
update module helpdesk_mgmt and helpdesk_join_team
update translation all
Remove helpdesk_res_partner_team
Delete module not found
smile_upgrade?
update html categorie_id
join_team == 6
servicecall == 1
--limit-time-real 99999 -c config.conf --stop-after-init -d santelibre -i helpdesk_mrp -i erplibre_base_enterprise_mrp,erplibre_base_hackaton,helpdesk_mgmt -u helpdesk_join_team
--limit-time-real 99999 -c config.conf --stop-after-init -d santelibre -u helpdesk_join_team

View file

@ -1,17 +1,23 @@
# Poetry
## Add automatically dependencies
## Add dependencies automatically
Add your dependencies in file [requirements.txt](../requirements.txt) and run script
```bash
./script/poetry_update.py
```
This will search all `requirements.txt` files and update `pyproject.toml` and it will update poetry
Priority dependencies in ./requirements.txt, after it's ./odoo/requirements.txt, after it's highest version values.
TODO add option to only add missing dependencies and ignore update.
## Add manually dependencies
## Add dependencies manually
The automatic script will erase this dependency, but you can add it for your local test.
```bash
poetry add PYTHON_MODULE
```

View file

@ -1,88 +1,129 @@
# ERPLibre production guide
## Requirement
- 5Go of disk space
## Production installation procedure
### 1. Clone the project:
```bash
git clone https://github.com/ERPLibre/ERPLibre.git
cd ERPLibre
```
### 2. Modify the parameters
Modify the file env_var.sh for production installation.
### 3. Execute the script:
Modify the file env_var.sh for production installation. Enable nginx if you need a proxy with `EL_INSTALL_NGINX`.
Redirect your DNS to the proxy's ip and add your A and AAAA into `WL_WEBSITE_NAME` with space between.
### 3. Execute the scripts:
#### With proxy nginx production, install certbot before for SSL
```bash
# Snap installation
# https://snapcraft.io/docs/installing-snap-on-debian
sudo apt install -y snapd
sudo snap install core
sudo snap refresh core
# https://certbot.eff.org/lets-encrypt/debianbuster-nginx
# Cerbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
```
#### Ubuntu 18.04 server
```bash
./script/install_dev.sh
./script/install_production.sh
```
A service is running by systemd. You can access it with the DNS name found in env_var.sh
A service is runned by SystemD. You can access it with the DNS name found in `env_var.sh`
#### Ubuntu 20.04 server
Apply fix libpng12-0: https://www.linuxuprising.com/2018/05/fix-libpng12-0-missing-in-ubuntu-1804.html
```bash
./script/install_dev.sh
./script/install_production.sh
```
A service is running by systemd, you can access with the DNS name found in env_var.sh
A service is runned by SystemD, you can access it with the DNS name found in `env_var.sh`
### 4. SSL:
Generate a ssl certificate
```bash
sudo certbot --nginx
```
## Watch log
```bash
sudo systemctl -feu [EL_USER]
```
## Run by address ip
Comment the following line in `/[EL_USER]/erplibre/config.conf`
```
#xmlrpc_interface = 127.0.0.1
#netrpc_interface = 127.0.0.1
#proxy_mode = True
```
Add your address ip server_name in nginx config `/etc/nginx/sites-available/[EL_WEBSITE_NAME]`
Restart daemon:
```bash
sudo systemctl restart nginx
sudo systemctl restart [EL_USER]
```
## Production execution
```bash
cd /[EL_USER]/erplibre
./run.sh -d [DATABASE] --no-database-list
```
## Move prod database to dev
When moving prod database to your dev environment, you want to remove email servers and install user test to test the database.
Warning, this is not safe for production, you expose all data.
Run:
When moving prod database to your dev environment, you want to remove email servers and install user test to test the
database. WARNING, this is not safe for production, you will expose all data. Run:
```bash
./script/migrate_prod_to_test.sh DATABASE
```
## Update production
Update all features.
```bash
./run.sh --limit-time-real 99999 --stop-after-init -u all -d DATABASE
```
# Postgresql
To show config file:
To show config files:
> psql -U postgres -c 'SHOW config_file'
Edit this file to accept interface from all networks:
> /var/lib/postgres/data/postgresql.conf
# Delete an instance in production
Caution, this delete user's home, it's irrevocable.
CAUTION, this will delete user's home, it's irrevocable.
```bash
./script/delete_production.sh
```
@ -94,6 +135,7 @@ mkdir ~/.cloudflare
```
Edit ~/.cloudflare/cloudflare.cfg
```
[PROFILE_NAME]
email=EMAIL
@ -101,6 +143,7 @@ token=TOKEN
```
Add your cron
```bash
vim /etc/crontab
# Add
@ -108,6 +151,7 @@ vim /etc/crontab
```
Check log with
```bash
sudo journalctl -feu cron
```
```

View file

@ -2,17 +2,16 @@
A guide on how to generate a release.
Before starting, validate [manifest/default.dev.xml](../manifest/default.dev.xml) is ready for production.
## Clean environment before generating new release
## Clean environment before generate new release
Before the cleaning, check if existing file isn't committed, not pushed or in stash.
Before clean, check if existing file not committed, not pushed or in stash.
```bash
./.venv/repo forall -pc "git stash list"
./script/git_show_code_diff_repo_manifest.py
```
This will erase everything in addons. Useful before create docker, manifest and do a release.
This will erase everything in addons. Useful before creating docker, manifest and do a release.
```bash
./script/clean_repo_manifest.sh
@ -24,9 +23,56 @@ And update all from dev to merge into prod.
./script/install_locally_dev.sh
```
## Update image_db
## Validate environment
Change all default image to improve speed when restoring database. Recreate it manually. Check directory `./image_db`.
- Check if [manifest/default.dev.xml](../manifest/default.dev.xml) is ready for production.
- Run test :
```bash
make test
```
### Format code
To format all code, run:
```bash
make format
```
### Update image_db
To generate database images in directory `./image_db`, run:
```bash
make image_db_create_all
```
### Update documentations
To generate Markdown in directory `./doc`, run:
```bash
make doc_markdown
```
### Test docker generate
To generate a docker, run:
```bash
make docker_build
```
### Test production Ubuntu environment
Follow instructions in [PRODUCTION.md](./PRODUCTION.md).
Test installation with code generator Geomap:
```bash
make addons_install_code_generator_full
```
## Generate new prod and release
@ -39,11 +85,13 @@ Generate production manifest and freeze all repos versions.
Update ERPLIBRE_VERSION variable in [env_var.sh](../env_var.sh) and [Dockerfile.prod](../docker/Dockerfile.prod.pkg).
Generate [poetry](./POETRY.md) and keep only missing dependencies, remove updates.
```bash
./script/poetry_update.py
```
When running script poetry_update.py, note manually inserted dependencies, stash all changes and add it manually.
```bash
poetry add DEPENDENCY
```
@ -60,6 +108,7 @@ git diff v#.#.#..HEAD
```
Simplification tools:
```bash
# Show all divergence repository with production
make repo_diff_manifest_production
@ -81,7 +130,7 @@ Review by your peers, test the docker file and merge to master.
## Generate image db to accelerate db installation
Generate image db before tag, the image is store in directory ./image_db
Generate image db before tag, the image is stored in directory ./image_db
```bash
make image_db_create_all
@ -128,4 +177,4 @@ To generate a list of differences between repo git commit
```bash
./script/git_change_remote.py --sync_to /path/to/directory
```
```

View file

@ -1,49 +1,65 @@
# Execute ERPLibre
## Start database
```bash
sudo systemctl start postgresql.service
```
## Run ERPLibre
### Method 1
Simply
```bash
./run.sh
```
With arguments
```bash
./run.sh -h
```
### Method 2
Execute your own python script:
```bash
./run.sh --log-level debug
```
### Update all
Great idea to run it when updating Odoo, it updates each module database.
```bash
./run.sh -d [DATABASE] -u all --log-level debug
```
### Update module
```bash
./run.sh -d [DATABASE] -u [module] --log-level debug
```
### Test
First execution, install you requirements, choose a new database.
```bash
./run.sh -d [DATABASE] -i [module to test] --test-enable --stop-after-init --log-level=test
```
Execute your test on a specific module.
```bash
./run.sh -d [DATABASE] -u [module to test] --test-enable --stop-after-init --log-level=test
```
Execute your test on a specific module with tags.
```bash
./run.sh -d [DATABASE] -u [module to test] --test-enable --stop-after-init --log-level=test --test-tags [module_name][tags]
```
```

View file

@ -1,11 +1,13 @@
# Note healtcheck
Table à vérifier dans pgsql: ir_ui_view
Restore une BD:
- un module est installé mais n'est pas physiquement là
Une DB est installé mais on n'arrive pas à l'exécuté
HEALTHCHECK CMD curl --fail http://localhost:8069/web || exit 1
HEALTHCHECK CMD curl --fail http://localhost:8069/web || exit 1
TODO: having the DB variable configurable
TODO: having the DB variable configurable

View file

@ -1,20 +1,25 @@
# Update ERPLibre
## Update all repos from the origin source
The update is possible on branch 12.0, you need to verify this branch existence.
1. Make sure all git repos are conform, remove all argument depth from manifest and regenerate.
You can clean all and regenerate.
1. Make sure all git repos are conform, remove all argument depth from manifest and regenerate. You can clean all and
regenerate.
```bash
./script/clean_repo_manifest.sh
./script/install_locally_dev.sh
```
2. Update all remote with ssh/git
```bash
./script/git_change_remote_https_to_git.py
```
3. Run update script
```bash
./script/git_update_repo.py
```

View file

@ -1,4 +1,4 @@
FROM technolibre/erplibre-base:1.1.1
FROM technolibre/erplibre-base:1.2.0
ENV REPO_MANIFEST_URL https://github.com/ERPLibre/ERPLibre
ARG WORKING_BRANCH

View file

@ -1,6 +1,6 @@
#!/usr/bin/env bash
ERPLIBRE_VERSION="1.1.1"
ERPLIBRE_VERSION="1.2.0"
EL_USER="erplibre"
EL_HOME="/${EL_USER}"
@ -19,7 +19,7 @@ EL_MINIMAL_ADDONS="False"
# Set this to True if you want to install Nginx!
EL_INSTALL_NGINX="True"
# Set the website name
EL_WEBSITE_NAME=""
EL_WEBSITE_NAME="localhost"
EL_GITHUB_TOKEN=""
EL_MANIFEST_PROD="./default.xml"
EL_MANIFEST_DEV="./manifest/default.dev.xml"

View file

@ -51,7 +51,7 @@
<project name="connector-jira.git" path="addons/OCA_connector-jira" remote="OCA" groups="addons"/>
<project name="connector-telephony.git" path="addons/OCA_connector-telephony" remote="OCA" groups="addons"/>
<project name="connector.git" path="addons/OCA_connector" remote="OCA" groups="addons"/>
<project name="contract.git" path="addons/OCA_contract" remote="OCA" revision="12.0_dev" groups="addons,code_generator"/>
<project name="contract.git" path="addons/OCA_contract" remote="OCA" revision="12.0_dev" groups="addons,code_generator,image_db"/>
<project name="credit-control.git" path="addons/OCA_credit-control" remote="OCA" groups="addons"/>
<project name="crm.git" path="addons/OCA_crm" remote="OCA" groups="addons"/>
<project name="currency.git" path="addons/OCA_currency" remote="OCA" groups="addons"/>
@ -65,12 +65,12 @@
<project name="e-commerce.git" path="addons/OCA_e-commerce" remote="OCA" groups="addons"/>
<project name="edi.git" path="addons/OCA_edi" remote="OCA" groups="addons"/>
<project name="erplibre_addons.git" path="addons/ERPLibre_erplibre_addons" remote="ERPLibre" groups="addons,base"/>
<project name="erplibre_theme_addons.git" path="addons/ERPLibre_erplibre_theme_addons" remote="ERPLibre" groups="addons,code_generator"/>
<project name="erplibre_theme_addons.git" path="addons/ERPLibre_erplibre_theme_addons" remote="ERPLibre" groups="addons,code_generator,image_db"/>
<project name="event.git" path="addons/OCA_event" remote="OCA" groups="addons"/>
<project name="field-service.git" path="addons/OCA_field-service" remote="OCA" groups="addons"/>
<project name="fleet.git" path="addons/OCA_fleet" remote="OCA" groups="addons"/>
<project name="geospatial.git" path="addons/OCA_geospatial" remote="OCA" groups="addons,code_generator"/>
<project name="helpdesk.git" path="addons/OCA_helpdesk" remote="OCA" revision="12.0_dev" groups="addons,code_generator"/>
<project name="geospatial.git" path="addons/OCA_geospatial" remote="OCA" groups="addons,code_generator,image_db"/>
<project name="helpdesk.git" path="addons/OCA_helpdesk" remote="OCA" revision="12.0_dev" groups="addons,code_generator,image_db"/>
<project name="hr.git" path="addons/OCA_hr" remote="OCA" groups="addons"/>
<project name="interface-github.git" path="addons/OCA_interface-github" remote="OCA" groups="addons"/>
<project name="knowledge.git" path="addons/OCA_knowledge" remote="OCA" groups="addons"/>
@ -93,14 +93,14 @@
<project name="odoo-base-addons.git" path="addons/Numigi_odoo-base-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-business-spending-management-quebec-canada.git" path="addons/MathBenTech_odoo-business-spending-management-quebec-canada" remote="MathBenTech" revision="12.0_sale_order_line_timesheet_attribution" groups="addons,base"/>
<project name="odoo-cloud-platform.git" path="addons/camptocamp_odoo-cloud-platform" remote="camptocamp" revision="12.0_dev" groups="addons"/>
<project name="odoo-code-generator-template.git" path="addons/TechnoLibre_odoo-code-generator-template" revision="12.0" remote="TechnoLibre" groups="addons,code_generator"/>
<project name="odoo-code-generator.git" path="addons/TechnoLibre_odoo-code-generator" remote="TechnoLibre" revision="12.0" groups="addons,code_generator"/>
<project name="odoo-code-generator-template.git" path="addons/TechnoLibre_odoo-code-generator-template" revision="12.0" remote="TechnoLibre" groups="addons,code_generator,image_db"/>
<project name="odoo-code-generator.git" path="addons/TechnoLibre_odoo-code-generator" remote="TechnoLibre" revision="12.0" groups="addons,code_generator,image_db"/>
<project name="odoo-development.git" path="doc/itpp-labs_odoo-development" remote="itpp-labs" revision="12.0_dev" groups="odoo"/>
<project name="odoo-entertainment-addons.git" path="addons/Numigi_odoo-entertainment-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-git-addons.git" path="addons/Numigi_odoo-git-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-hr-addons.git" path="addons/Numigi_odoo-hr-addons" remote="Numigi" groups="addons"/>
<project name="odoo-module-migrator.git" path="script/OCA_odoo-module-migrator" remote="OCA" revision="master" groups="odoo"/>
<project name="odoo-partner-addons.git" path="addons/Numigi_odoo-partner-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-partner-addons.git" path="addons/Numigi_odoo-partner-addons" remote="Numigi" revision="12.0_dev" groups="addons,image_db"/>
<project name="odoo-product-addons.git" path="addons/Numigi_odoo-product-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-port-docs.git" path="doc/itpp-labs_odoo-port-docs" remote="itpp-labs" revision="master" groups="odoo"/>
<project name="odoo-product-configurator.git" path="addons/pledra_odoo-product-configurator" remote="pledra" groups="addons"/>
@ -111,7 +111,7 @@
<project name="odoo-test-docs.git" path="doc/itpp-labs_odoo-test-docs" remote="itpp-labs" revision="master" groups="odoo"/>
<project name="odoo-timesheet-addons.git" path="addons/Numigi_odoo-timesheet-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-web-addons.git" path="addons/Numigi_odoo-web-addons" remote="Numigi" groups="addons"/>
<project name="odoo.git" path="odoo" remote="odoo" revision="ERPLibre/12.0" clone-depth="10" groups="odoo,base,code_generator"/>
<project name="odoo.git" path="odoo" remote="odoo" revision="ERPLibre/12.0" clone-depth="10" groups="odoo,base"/>
<project name="odoo_addons.git" path="addons/Smile-SA_odoo_addons" remote="Smile-SA" revision="12.0_remote_autoinstall" groups="addons"/>
<project name="odoo_dhtmlxgantt.git" path="addons/obayit_odoo_dhtmlxgantt" remote="obayit" groups="addons"/>
<project name="odooapps.git" path="addons/odoomates_odooapps" remote="odoomates" groups="addons"/>
@ -151,6 +151,6 @@
<project name="web.git" path="addons/OCA_web" remote="OCA" revision="12.0_dev" groups="addons,base"/>
<project name="website-addons.git" path="addons/itpp-labs_website-addons" remote="itpp-labs" revision="12.0_dev" groups="addons"/>
<project name="website-cms.git" path="addons/OCA_website-cms" remote="OCA" groups="addons"/>
<project name="website.git" path="addons/OCA_website" remote="OCA" revision="12.0_dev" groups="addons,code_generator"/>
<project name="website.git" path="addons/OCA_website" remote="OCA" revision="12.0_dev" groups="addons,code_generator,image_db"/>
<project name="wms.git" path="addons/OCA_wms" remote="OCA" groups="addons"/>
</manifest>

View file

@ -30,7 +30,11 @@ def get_config():
)
parser.add_argument("--csv_1", required=True, help="CSV file first")
parser.add_argument("--csv_2", required=True, help="CSV file second")
parser.add_argument("--compare_key", required=True, help="Key to search and compare with it.")
parser.add_argument(
"--compare_key",
required=True,
help="Key to search and compare with it.",
)
args = parser.parse_args()
return args
@ -38,8 +42,8 @@ def get_config():
def main():
config = get_config()
with open(config.csv_1, mode='r') as csv_file_1:
with open(config.csv_2, mode='r') as csv_file_2:
with open(config.csv_1, mode="r") as csv_file_1:
with open(config.csv_2, mode="r") as csv_file_2:
csv_reader_1 = csv.DictReader(csv_file_1)
csv_reader_2 = csv.DictReader(csv_file_2)
lst_csv_1 = [a.get(config.compare_key) for a in csv_reader_1]

View file

@ -29,7 +29,13 @@ ERPLIBRE_DOCKER_PROD_VERSION="${ERPLIBRE_DOCKER_PROD}:${ERPLIBRE_VERSION}"
echo "Create docker ${ERPLIBRE_DOCKER_PROD_VERSION}"
# Rewrite docker-compose
./script/docker_update_version.py --version=${ERPLIBRE_VERSION} --base=${ERPLIBRE_DOCKER_BASE} --prod=${ERPLIBRE_DOCKER_PROD}
./script/docker/docker_update_version.py --version=${ERPLIBRE_VERSION} --base=${ERPLIBRE_DOCKER_BASE} --prod=${ERPLIBRE_DOCKER_PROD}
retVal=$?
if [[ $retVal -ne 0 ]]; then
echo "Error ./script/docker/docker_build.sh when execute docker_update_version.py"
exit 1
fi
cd docker

View file

@ -5,7 +5,9 @@ import argparse
import logging
import yaml
new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), ".."))
new_path = os.path.normpath(
os.path.join(os.path.dirname(__file__), "..", "..")
)
sys.path.append(new_path)
from script.git_tool import GitTool

View file

@ -394,7 +394,7 @@ class GitTool:
if (
"addons/OCA_web" == repo.get("path")
or "odoo" == repo.get("path")
or "ERPLibre_image_db" == repo.get("path")
or "image_db" == repo.get("path")
):
continue
str_repo = (

View file

@ -68,9 +68,12 @@ echo "User service: ${EL_USER}"
echo "User PostgreSQL: ${EL_USER}"
echo "Code location: ${EL_USER}"
echo "Addons folder: ${EL_USER}/${EL_CONFIG}/addons/"
echo "SystemD file ERPLibre: /etc/systemd/system/${EL_CONFIG}.service"
echo "Start ERPLibre service: sudo systemctl start ${EL_CONFIG}"
echo "Stop ERPLibre service: sudo systemctl stop ${EL_CONFIG}"
echo "Restart ERPLibre service: sudo systemctl restart ${EL_CONFIG}"
echo "Status ERPLibre service: sudo systemctl status ${EL_CONFIG}"
echo "Logs ERPLibre service: sudo journalctl -feu ${EL_CONFIG}"
echo "-----------------------------------------------------------"
echo -e "* Starting ERPLibre Service"

View file

@ -38,7 +38,7 @@ sudo apt-get upgrade -y
# Install PostgreSQL Server
#--------------------------------------------------
echo -e "\n---- Install PostgreSQL Server ----"
sudo apt-get install postgresql libpq-dev -y
sudo apt-get install postgresql libpq-dev postgis -y
echo -e "\n---- Creating the ERPLibre PostgreSQL User ----"
sudo su - postgres -c "createuser -s ${EL_USER}" 2> /dev/null || true

View file

@ -160,13 +160,15 @@ if [[ ${EL_MINIMAL_ADDONS} = "False" ]]; then
fi
printf "\n" >> ${EL_CONFIG_FILE}
printf "workers = 0\n" >> ${EL_CONFIG_FILE}
printf "max_cron_threads = 2\n" >> ${EL_CONFIG_FILE}
if [[ ${EL_INSTALL_NGINX} = "True" ]]; then
printf "workers = 2\n" >> ${EL_CONFIG_FILE}
printf "xmlrpc_interface = 127.0.0.1\n" >> ${EL_CONFIG_FILE}
printf "netrpc_interface = 127.0.0.1\n" >> ${EL_CONFIG_FILE}
printf "proxy_mode = True\n" >> ${EL_CONFIG_FILE}
else
printf "workers = 0\n" >> ${EL_CONFIG_FILE}
fi
#echo -e "\n---- Install Odoo with addons module ----"

View file

@ -2,8 +2,6 @@
. ./env_var.sh
./script/install_debian_dependency.sh
echo -e "\n---- Create ERPLIBRE system user ----"
sudo adduser --system --quiet --shell=/bin/bash --home=/${EL_USER} --gecos 'ERPLIBRE' --group ${EL_USER}
#The user should also be added to the sudo'ers group.

View file

@ -2,12 +2,19 @@
. ./env_var.sh
TEMP_FILENAME_NGINX_AVAILABLE="localhost"
NEW_EL_WEBSITE_NAME="${EL_WEBSITE_NAME}"
if [[ -z "${EL_WEBSITE_NAME}" ]]; then
NEW_EL_WEBSITE_NAME=${TEMP_FILENAME_NGINX_AVAILABLE}
fi
TEMP_FILE_NGINX_AVAILABLE="/tmp/${TEMP_FILENAME_NGINX_AVAILABLE}"
#--------------------------------------------------
# Install Nginx if needed
#--------------------------------------------------
if [ ${EL_INSTALL_NGINX} = "True" ]; then
echo -e "\n---- Installing and setting up Nginx ----"
cat <<EOF > /tmp/nginx${EL_USER}
echo -e "\n---- Installing and setting up Nginx into ${TEMP_FILE_NGINX_AVAILABLE} ----"
cat <<EOF >${TEMP_FILE_NGINX_AVAILABLE}
upstream erplibre${EL_USER} {
server 127.0.0.1:${EL_PORT};
}
@ -18,7 +25,7 @@ upstream erplibre${EL_USER}chat {
server {
listen 80;
server_name ${EL_WEBSITE_NAME};
server_name ${NEW_EL_WEBSITE_NAME};
# Add Headers for erplibre proxy mode
proxy_set_header X-Forwarded-Host \$host;
@ -80,11 +87,11 @@ server {
}
EOF
sudo mv -f /tmp/nginx${EL_USER} /etc/nginx/sites-available/${EL_WEBSITE_NAME}
sudo ln -fs /etc/nginx/sites-available/${EL_WEBSITE_NAME} /etc/nginx/sites-enabled/${EL_WEBSITE_NAME}
sudo mv -f ${TEMP_FILE_NGINX_AVAILABLE} /etc/nginx/sites-available/${NEW_EL_WEBSITE_NAME}
sudo ln -fs /etc/nginx/sites-available/${NEW_EL_WEBSITE_NAME} /etc/nginx/sites-enabled/${NEW_EL_WEBSITE_NAME}
sudo rm -f /etc/nginx/sites-enabled/default /etc/nginx/sites-available/default
sudo systemctl restart nginx
echo "Done! The Nginx server is up and running. Configuration can be found at /etc/nginx/sites-enabled/${EL_WEBSITE_NAME}"
echo "Done! The Nginx server is up and running. Configuration can be found at /etc/nginx/sites-enabled/${NEW_EL_WEBSITE_NAME}"
echo "Run manually certbot : sudo certbot --nginx"
else
echo "Nginx isn't installed due to choice of the user!"

View file

@ -37,14 +37,22 @@ def get_config():
parser.add_argument("--backup_2", help="Backup name second")
args = parser.parse_args()
die(bool(args.backup_file_1) and bool(args.backup_1),
"Take only --backup_file_1 or --backup_1")
die(not bool(args.backup_file_1) and not bool(args.backup_1),
"Missing --backup_file_1 or --backup_1")
die(bool(args.backup_file_2) and bool(args.backup_2),
"Take only --backup_file_2 or --backup_2")
die(not bool(args.backup_file_2) and not bool(args.backup_2),
"Missing --backup_file_2 or --backup_2")
die(
bool(args.backup_file_1) and bool(args.backup_1),
"Take only --backup_file_1 or --backup_1",
)
die(
not bool(args.backup_file_1) and not bool(args.backup_1),
"Missing --backup_file_1 or --backup_1",
)
die(
bool(args.backup_file_2) and bool(args.backup_2),
"Take only --backup_file_2 or --backup_2",
)
die(
not bool(args.backup_file_2) and not bool(args.backup_2),
"Missing --backup_file_2 or --backup_2",
)
return args
@ -61,11 +69,11 @@ def main():
file_path_2 = config.backup_file_2
else:
file_path_2 = os.path.join("image_db", f"{config.backup_2}.zip")
with zipfile.ZipFile(file_path_1, 'r') as zip_ref:
with zipfile.ZipFile(file_path_1, "r") as zip_ref:
manifest_file_1 = zip_ref.open("manifest.json")
with zipfile.ZipFile(file_path_2, 'r') as zip_ref:
with zipfile.ZipFile(file_path_2, "r") as zip_ref:
manifest_file_2 = zip_ref.open("manifest.json")
json_manifest_file_1 = json.load(manifest_file_1)
@ -81,10 +89,16 @@ def main():
print(f"{len(same)} same")
if same:
print(same)
print(f"{Fore.BLUE}{len(difference_1)}{Style.RESET_ALL} difference manifest 1 to manifest 2")
print(
f"{Fore.BLUE}{len(difference_1)}{Style.RESET_ALL} difference manifest"
" 1 to manifest 2"
)
if difference_1:
print(difference_1)
print(f"{Fore.MAGENTA}{len(difference_2)}{Style.RESET_ALL} difference manifest 2 to manifest 1")
print(
f"{Fore.MAGENTA}{len(difference_2)}{Style.RESET_ALL} difference"
" manifest 2 to manifest 1"
)
if difference_2:
print(difference_2)