Merge branch 'develop'
- Fix ERPLibre test on Odoo 12 - Upgrade changelog and preparation for release 1.6.0 The release 1.6.0 is waiting after correction to support multiple Odoo
This commit is contained in:
commit
c563692f10
43 changed files with 531 additions and 106 deletions
17
CHANGELOG.md
17
CHANGELOG.md
|
|
@ -9,8 +9,14 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## Added
|
## Added
|
||||||
|
|
||||||
|
- Script for hardening the installation
|
||||||
|
|
||||||
|
## [1.6.0] - 2025-04-25
|
||||||
|
|
||||||
|
## Added
|
||||||
|
|
||||||
- Support multiple Odoo versions (12.0, 14.0, 16.0) in same workspace
|
- Support multiple Odoo versions (12.0, 14.0, 16.0) in same workspace
|
||||||
- This will help for the migration of modules
|
- This will help for the migration of modules
|
||||||
- Selenium script for increasing open software client interface and automating some actions.
|
- Selenium script for increasing open software client interface and automating some actions.
|
||||||
- Video recording
|
- Video recording
|
||||||
- Support scrolling and word generating
|
- Support scrolling and word generating
|
||||||
|
|
@ -32,13 +38,14 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
- Test can be launched with a json configuration and support log/result individually
|
- Test can be launched with a json configuration and support log/result individually
|
||||||
- Script to search docker compose into the system
|
- Script to search docker compose into the system
|
||||||
- Script search class model can output into json format and support field information
|
- Script search class model can output into json format and support field information
|
||||||
- Improve Docker minimal installation docs in README for Ubuntu, test with Debian (https://github.com/ERPLibre/ERPLibre/issues/73)
|
- Improve Docker minimal installation docs in README for Ubuntu, test with
|
||||||
|
Debian (https://github.com/ERPLibre/ERPLibre/issues/73)
|
||||||
- Statistic script showing evolution module into ERPLibre supporting Odoo 17 and Odoo 18
|
- Statistic script showing evolution module into ERPLibre supporting Odoo 17 and Odoo 18
|
||||||
- Latest version wkhtmltopdf 0.12.6.1-3
|
- Latest version wkhtmltopdf 0.12.6.1-3
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- NPM instaled locally and not globally
|
- NPM installed locally and not globally
|
||||||
- Improve python code writer efficiency
|
- Improve python code writer efficiency
|
||||||
- Config generator supporting space into ERPLibre directory
|
- Config generator supporting space into ERPLibre directory
|
||||||
- Script to update Poetry to support @ URL
|
- Script to update Poetry to support @ URL
|
||||||
|
|
@ -441,7 +448,9 @@ Because addons repository has change, config file need to be updated.
|
||||||
|
|
||||||
- Support only python3.6 and python3.7, python3.8 causes error in runtime.
|
- Support only python3.6 and python3.7, python3.8 causes error in runtime.
|
||||||
|
|
||||||
[Unreleased]: https://github.com/ERPLibre/ERPLibre/compare/v1.5.0...HEAD
|
[Unreleased]: https://github.com/ERPLibre/ERPLibre/compare/v1.6.0...HEAD
|
||||||
|
|
||||||
|
[1.6.0]: https://github.com/ERPLibre/ERPLibre/compare/v1.5.0...v1.6.0
|
||||||
|
|
||||||
[1.5.0]: https://github.com/ERPLibre/ERPLibre/compare/v1.4.0...v1.5.0
|
[1.5.0]: https://github.com/ERPLibre/ERPLibre/compare/v1.4.0...v1.5.0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,14 +22,14 @@ This has been tested in Debian 12 and Ubuntu 24.04 LTS.
|
||||||
1. Make sure Docker and nginx web server are installed:<BR>
|
1. Make sure Docker and nginx web server are installed:<BR>
|
||||||
```sudo apt install docker docker-compose nginx```
|
```sudo apt install docker docker-compose nginx```
|
||||||
1. Get the latest ERPLibre Docker compose file:<BR>
|
1. Get the latest ERPLibre Docker compose file:<BR>
|
||||||
```wget https://raw.githubusercontent.com/ERPLibre/ERPLibre/v1.5.0/docker-compose.yml```
|
```wget https://raw.githubusercontent.com/ERPLibre/ERPLibre/v1.6.0/docker-compose.yml```
|
||||||
1. Install and run ERPLibre with Docker running as a daemon (web server):<BR>
|
1. Install and run ERPLibre with Docker running as a daemon (web server):<BR>
|
||||||
```sudo docker-compose up -d```
|
```sudo docker-compose up -d```
|
||||||
1. Open the final installation step at this web page :<BR>
|
1. Open the final installation step at this web page :<BR>
|
||||||
```http://[server IP]:8069```<BR>
|
```http://[server IP]:8069```<BR>
|
||||||

|

|
||||||
1. Finish the installation by providing a database name, email and password. then click on **Create Database**. Depending on your system resources **this may take more than 2 minutes without feedback !** Check your browser loading indicator.
|
1. Finish the installation by providing a database name, email and password. then click on **Create Database**. Depending on your system resources **this may take more than 2 minutes without feedback !** Check your browser loading indicator.
|
||||||
1. Next, the web page will reload itself and you should see the Applications list in ERPLibre:<BR>
|
1. Next, the web page will reload itself, and you should see the Applications list in ERPLibre:<BR>
|
||||||

|

|
||||||
You can now personalize your ERPLibre installation.
|
You can now personalize your ERPLibre installation.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,7 @@
|
||||||
"odoo12.0_python3.7.17": {
|
"odoo12.0_python3.7.17": {
|
||||||
"odoo_version": "12.0",
|
"odoo_version": "12.0",
|
||||||
"python_version": "3.7.17",
|
"python_version": "3.7.17",
|
||||||
"poetry_version": "1.5.0",
|
"poetry_version": "1.5.0"
|
||||||
"default": true,
|
|
||||||
"note": "Official support ERPLibre 1.5.0"
|
|
||||||
},
|
},
|
||||||
"odoo14.0_python3.8.20": {
|
"odoo14.0_python3.8.20": {
|
||||||
"odoo_version": "14.0",
|
"odoo_version": "14.0",
|
||||||
|
|
@ -14,6 +12,8 @@
|
||||||
"odoo16.0_python3.10.14": {
|
"odoo16.0_python3.10.14": {
|
||||||
"odoo_version": "16.0",
|
"odoo_version": "16.0",
|
||||||
"python_version": "3.10.14",
|
"python_version": "3.10.14",
|
||||||
"poetry_version": "1.8.3"
|
"poetry_version": "1.8.3",
|
||||||
|
"default": true,
|
||||||
|
"note": "Official support ERPLibre 1.6.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,15 @@ This will erase everything in addons. Useful before creating docker, manifest an
|
||||||
|
|
||||||
And update all from dev to merge into prod.
|
And update all from dev to merge into prod.
|
||||||
|
|
||||||
|
Test all supported Odoo version :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./script/install/install_locally_dev.sh
|
make install_odoo_all_version
|
||||||
```
|
```
|
||||||
|
|
||||||
## Validate environment
|
## Validate environment
|
||||||
|
|
||||||
- Check if [manifest/default.dev.xml](../manifest/default.dev.xml) is ready for production.
|
- Check if each manifest version like [manifest/default.dev.odoo16.0.xml](../manifest/default.dev.odoo16.0.xml) is ready for production.
|
||||||
- Run test :
|
- Run test :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -61,7 +63,7 @@ make docker_build_odoo_16
|
||||||
Search old version, like :
|
Search old version, like :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
grep --color=always --exclude-dir={.repo,.venv,.git} --exclude="*.svg" -nri v1.2.0
|
grep --color=always --exclude-dir={.repo,.venv,.git} --exclude="*.svg" -nri v1.6.0
|
||||||
```
|
```
|
||||||
|
|
||||||
Replace if need it to new version.
|
Replace if need it to new version.
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
version: "3.3"
|
version: "3.3"
|
||||||
services:
|
services:
|
||||||
ERPLibre:
|
ERPLibre:
|
||||||
image: technolibre/erplibre:1.5.0
|
image: technolibre/erplibre:1.6.0
|
||||||
ports:
|
ports:
|
||||||
- 8069:8069
|
- 8069:8069
|
||||||
- 8071:8071
|
- 8071:8071
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
ARG ERPLIBRE_IMAGE_NAME=1.5.0
|
ARG ERPLIBRE_IMAGE_NAME=1.6.0
|
||||||
|
|
||||||
FROM technolibre/erplibre-base:${ERPLIBRE_IMAGE_NAME}
|
FROM technolibre/erplibre-base:${ERPLIBRE_IMAGE_NAME}
|
||||||
|
|
||||||
|
|
|
||||||
50
docker/docker-compose_odoo_12.0.yml
Normal file
50
docker/docker-compose_odoo_12.0.yml
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
version: "3.3"
|
||||||
|
services:
|
||||||
|
ERPLibre:
|
||||||
|
image: technolibre/erplibre:1.5.0_1f40c56
|
||||||
|
ports:
|
||||||
|
- 8069:8069
|
||||||
|
- 8071:8071
|
||||||
|
- 8072:8072
|
||||||
|
environment:
|
||||||
|
HOST: db
|
||||||
|
PASSWORD: mysecretpassword
|
||||||
|
USER: odoo
|
||||||
|
POSTGRES_DB: postgres
|
||||||
|
STOP_BEFORE_INIT: "False"
|
||||||
|
DB_NAME: ""
|
||||||
|
UPDATE_ALL_DB: "False"
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
# not behind a proxy
|
||||||
|
#command: odoo --workers 0
|
||||||
|
# behind a proxy
|
||||||
|
#command: odoo --workers 2 --proxy-mode
|
||||||
|
# For production ready
|
||||||
|
#command: odoo --workers 2 --proxy-mode --no-database-list
|
||||||
|
command: odoo
|
||||||
|
volumes:
|
||||||
|
# See the volume section at the end of the file
|
||||||
|
- erplibre_data_dir:/home/odoo/.local/share/Odoo
|
||||||
|
- ./addons/addons:/ERPLibre/addons/addons
|
||||||
|
- erplibre_conf:/etc/odoo
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgis/postgis:12-3.1-alpine
|
||||||
|
environment:
|
||||||
|
POSTGRES_PASSWORD: mysecretpassword
|
||||||
|
POSTGRES_USER: odoo
|
||||||
|
POSTGRES_DB: postgres
|
||||||
|
PGDATA: /var/lib/postgresql/data/pgdata
|
||||||
|
volumes:
|
||||||
|
- erplibre-db-data:/var/lib/postgresql/data/pgdata
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
# We configure volume without specific destination to let docker manage it. To configure it through docker use (read related documentation before continuing) :
|
||||||
|
# - docker volume --help
|
||||||
|
# - docker-compose down --help
|
||||||
|
volumes:
|
||||||
|
erplibre_data_dir:
|
||||||
|
erplibre_conf:
|
||||||
|
erplibre-db-data:
|
||||||
50
docker/docker-compose_odoo_14.0.yml
Normal file
50
docker/docker-compose_odoo_14.0.yml
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
version: "3.3"
|
||||||
|
services:
|
||||||
|
ERPLibre:
|
||||||
|
image: technolibre/erplibre:1.5.0_odoo_14.0_29e1957
|
||||||
|
ports:
|
||||||
|
- 8069:8069
|
||||||
|
- 8071:8071
|
||||||
|
- 8072:8072
|
||||||
|
environment:
|
||||||
|
HOST: db
|
||||||
|
PASSWORD: mysecretpassword
|
||||||
|
USER: odoo
|
||||||
|
POSTGRES_DB: postgres
|
||||||
|
STOP_BEFORE_INIT: "False"
|
||||||
|
DB_NAME: ""
|
||||||
|
UPDATE_ALL_DB: "False"
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
# not behind a proxy
|
||||||
|
#command: odoo --workers 0
|
||||||
|
# behind a proxy
|
||||||
|
#command: odoo --workers 2 --proxy-mode
|
||||||
|
# For production ready
|
||||||
|
#command: odoo --workers 2 --proxy-mode --no-database-list
|
||||||
|
command: odoo
|
||||||
|
volumes:
|
||||||
|
# See the volume section at the end of the file
|
||||||
|
- erplibre_data_dir:/home/odoo/.local/share/Odoo
|
||||||
|
- ./addons/addons:/ERPLibre/addons/addons
|
||||||
|
- erplibre_conf:/etc/odoo
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgis/postgis:12-3.1-alpine
|
||||||
|
environment:
|
||||||
|
POSTGRES_PASSWORD: mysecretpassword
|
||||||
|
POSTGRES_USER: odoo
|
||||||
|
POSTGRES_DB: postgres
|
||||||
|
PGDATA: /var/lib/postgresql/data/pgdata
|
||||||
|
volumes:
|
||||||
|
- erplibre-db-data:/var/lib/postgresql/data/pgdata
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
# We configure volume without specific destination to let docker manage it. To configure it through docker use (read related documentation before continuing) :
|
||||||
|
# - docker volume --help
|
||||||
|
# - docker-compose down --help
|
||||||
|
volumes:
|
||||||
|
erplibre_data_dir:
|
||||||
|
erplibre_conf:
|
||||||
|
erplibre-db-data:
|
||||||
50
docker/docker-compose_odoo_16.0.yml
Normal file
50
docker/docker-compose_odoo_16.0.yml
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
version: "3.3"
|
||||||
|
services:
|
||||||
|
ERPLibre:
|
||||||
|
image: technolibre/erplibre:1.5.0_odoo_16.0_91a7d1b
|
||||||
|
ports:
|
||||||
|
- 8069:8069
|
||||||
|
- 8071:8071
|
||||||
|
- 8072:8072
|
||||||
|
environment:
|
||||||
|
HOST: db
|
||||||
|
PASSWORD: mysecretpassword
|
||||||
|
USER: odoo
|
||||||
|
POSTGRES_DB: postgres
|
||||||
|
STOP_BEFORE_INIT: "False"
|
||||||
|
DB_NAME: ""
|
||||||
|
UPDATE_ALL_DB: "False"
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
# not behind a proxy
|
||||||
|
#command: odoo --workers 0
|
||||||
|
# behind a proxy
|
||||||
|
#command: odoo --workers 2 --proxy-mode
|
||||||
|
# For production ready
|
||||||
|
#command: odoo --workers 2 --proxy-mode --no-database-list
|
||||||
|
command: odoo
|
||||||
|
volumes:
|
||||||
|
# See the volume section at the end of the file
|
||||||
|
- erplibre_data_dir:/home/odoo/.local/share/Odoo
|
||||||
|
- ./addons/addons:/ERPLibre/addons/addons
|
||||||
|
- erplibre_conf:/etc/odoo
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgis/postgis:12-3.1-alpine
|
||||||
|
environment:
|
||||||
|
POSTGRES_PASSWORD: mysecretpassword
|
||||||
|
POSTGRES_USER: odoo
|
||||||
|
POSTGRES_DB: postgres
|
||||||
|
PGDATA: /var/lib/postgresql/data/pgdata
|
||||||
|
volumes:
|
||||||
|
- erplibre-db-data:/var/lib/postgresql/data/pgdata
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
# We configure volume without specific destination to let docker manage it. To configure it through docker use (read related documentation before continuing) :
|
||||||
|
# - docker volume --help
|
||||||
|
# - docker-compose down --help
|
||||||
|
volumes:
|
||||||
|
erplibre_data_dir:
|
||||||
|
erplibre_conf:
|
||||||
|
erplibre-db-data:
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
ERPLIBRE_VERSION="1.5.0"
|
ERPLIBRE_VERSION="1.6.0"
|
||||||
|
|
||||||
EL_USER="erplibre"
|
EL_USER="erplibre"
|
||||||
EL_HOME="/${EL_USER}"
|
EL_HOME="/${EL_USER}"
|
||||||
|
|
|
||||||
|
|
@ -101,8 +101,8 @@
|
||||||
<project name="odoo-base-addons.git" path="addons.odoo12.0/Numigi_odoo-base-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
|
<project name="odoo-base-addons.git" path="addons.odoo12.0/Numigi_odoo-base-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
|
||||||
<project name="odoo-business-spending-management-quebec-canada.git" path="addons.odoo12.0/MathBenTech_odoo-business-spending-management-quebec-canada" remote="MathBenTech" groups="addons,base"/>
|
<project name="odoo-business-spending-management-quebec-canada.git" path="addons.odoo12.0/MathBenTech_odoo-business-spending-management-quebec-canada" remote="MathBenTech" groups="addons,base"/>
|
||||||
<project name="odoo-cloud-platform.git" path="addons.odoo12.0/camptocamp_odoo-cloud-platform" remote="camptocamp" revision="12.0_dev" groups="addons"/>
|
<project name="odoo-cloud-platform.git" path="addons.odoo12.0/camptocamp_odoo-cloud-platform" remote="camptocamp" revision="12.0_dev" groups="addons"/>
|
||||||
<project name="odoo-code-generator-template.git" path="addons.odoo12.0/TechnoLibre_odoo-code-generator-template" revision="12.0_new_format" remote="TechnoLibre" groups="addons,code_generator,image_db"/>
|
<project name="odoo-code-generator-template.git" path="addons.odoo12.0/TechnoLibre_odoo-code-generator-template" remote="TechnoLibre" revision="12.0" groups="addons,code_generator,image_db"/>
|
||||||
<project name="odoo-code-generator.git" path="addons.odoo12.0/TechnoLibre_odoo-code-generator" remote="TechnoLibre" revision="12.0_support_wizard" groups="addons,code_generator,image_db"/>
|
<project name="odoo-code-generator.git" path="addons.odoo12.0/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-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.odoo12.0/Numigi_odoo-entertainment-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
|
<project name="odoo-entertainment-addons.git" path="addons.odoo12.0/Numigi_odoo-entertainment-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
|
||||||
<project name="odoo-git-addons.git" path="addons.odoo12.0/Numigi_odoo-git-addons" remote="Numigi" groups="addons"/>
|
<project name="odoo-git-addons.git" path="addons.odoo12.0/Numigi_odoo-git-addons" remote="Numigi" groups="addons"/>
|
||||||
|
|
|
||||||
4
package-lock.json
generated
4
package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "erplibre",
|
"name": "erplibre",
|
||||||
"version": "1.5.0",
|
"version": "1.6.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "erplibre",
|
"name": "erplibre",
|
||||||
"version": "1.5.0",
|
"version": "1.6.0",
|
||||||
"license": "AGPLv3",
|
"license": "AGPLv3",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@prettier/plugin-xml": "==2.2.0",
|
"@prettier/plugin-xml": "==2.2.0",
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "erplibre",
|
"name": "erplibre",
|
||||||
"description": "Easy installation of Odoo",
|
"description": "Easy installation of Odoo",
|
||||||
"version": "1.5.0",
|
"version": "1.6.0",
|
||||||
"license": "AGPLv3",
|
"license": "AGPLv3",
|
||||||
"homepage": "https://erplibre.ca",
|
"homepage": "https://erplibre.ca",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
||||||
|
|
@ -139,6 +139,17 @@ files = [
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
aiohttp = "*"
|
aiohttp = "*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aioshutil"
|
||||||
|
version = "1.5"
|
||||||
|
description = "Asynchronous shutil module."
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.8"
|
||||||
|
files = [
|
||||||
|
{file = "aioshutil-1.5-py3-none-any.whl", hash = "sha256:bc2a6cdcf1a8615b62f856154fd81131031d03f2834912ebb06d8a2391253652"},
|
||||||
|
{file = "aioshutil-1.5.tar.gz", hash = "sha256:2756d6cd3bb03405dc7348ac11a0b60eb949ebd63cdd15f56e922410231c1201"},
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aiosignal"
|
name = "aiosignal"
|
||||||
version = "1.3.2"
|
version = "1.3.2"
|
||||||
|
|
@ -8475,4 +8486,4 @@ bindings = ["ghostscript"]
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = "^3.10.14"
|
python-versions = "^3.10.14"
|
||||||
content-hash = "49785f9e198e6124847a9b304493e184d6155f5261a53211d28cbb6679dd7a3e"
|
content-hash = "350819d1b0358148243e33c0d3a0731e258153a097d85e45725435d0ee03f38b"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ target-version = [ "py37",]
|
||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "ERPLibre"
|
name = "ERPLibre"
|
||||||
version = "1.5.0"
|
version = "1.6.0"
|
||||||
description = "Easy way to configure Odoo community"
|
description = "Easy way to configure Odoo community"
|
||||||
license = "AGPL-3.0-or-later"
|
license = "AGPL-3.0-or-later"
|
||||||
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ target-version = [ "py37",]
|
||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "ERPLibre"
|
name = "ERPLibre"
|
||||||
version = "1.5.0"
|
version = "1.6.0"
|
||||||
description = "Easy way to configure Odoo community"
|
description = "Easy way to configure Odoo community"
|
||||||
license = "AGPL-3.0-or-later"
|
license = "AGPL-3.0-or-later"
|
||||||
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ target-version = [ "py37",]
|
||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "ERPLibre"
|
name = "ERPLibre"
|
||||||
version = "1.5.0"
|
version = "1.6.0"
|
||||||
description = "Easy way to configure Odoo community"
|
description = "Easy way to configure Odoo community"
|
||||||
license = "AGPL-3.0-or-later"
|
license = "AGPL-3.0-or-later"
|
||||||
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ target-version = [ "py37",]
|
||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "ERPLibre"
|
name = "ERPLibre"
|
||||||
version = "1.5.0"
|
version = "1.6.0"
|
||||||
description = "Easy way to configure Odoo community"
|
description = "Easy way to configure Odoo community"
|
||||||
license = "AGPL-3.0-or-later"
|
license = "AGPL-3.0-or-later"
|
||||||
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
||||||
|
|
@ -20,6 +20,7 @@ authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = "^3.10.14"
|
python = "^3.10.14"
|
||||||
agithub = "^2.2.2"
|
agithub = "^2.2.2"
|
||||||
|
aioshutil = "^1.5"
|
||||||
argcomplete = "^3.6.2"
|
argcomplete = "^3.6.2"
|
||||||
asana = "^5.1.0"
|
asana = "^5.1.0"
|
||||||
asn1crypto = "^1.5.1"
|
asn1crypto = "^1.5.1"
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ python-randomword-fr
|
||||||
isort
|
isort
|
||||||
pykeepass
|
pykeepass
|
||||||
click
|
click
|
||||||
|
aioshutil
|
||||||
|
|
||||||
# For OSX
|
# For OSX
|
||||||
cython
|
cython
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,8 @@ On_IPurple='\033[0;105m' # Purple
|
||||||
On_ICyan='\033[0;106m' # Cyan
|
On_ICyan='\033[0;106m' # Cyan
|
||||||
On_IWhite='\033[0;107m' # White
|
On_IWhite='\033[0;107m' # White
|
||||||
|
|
||||||
|
ODOO_VERSION=$(cat .odoo-version)
|
||||||
|
|
||||||
check_git() {
|
check_git() {
|
||||||
REP=$1
|
REP=$1
|
||||||
cd "${REP}" || exit
|
cd "${REP}" || exit
|
||||||
|
|
@ -110,5 +112,5 @@ if [ $# -gt 0 ]; then
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# check_git "./addons/TechnoLibre_odoo-code-generator"
|
# check_git "./addons/TechnoLibre_odoo-code-generator"
|
||||||
check_git "./addons/TechnoLibre_odoo-code-generator-template"
|
check_git "./addons.odoo${ODOO_VERSION}/TechnoLibre_odoo-code-generator-template"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ fi
|
||||||
INIT_DATETIME=$(date +%s)
|
INIT_DATETIME=$(date +%s)
|
||||||
|
|
||||||
if [[ $# -eq 5 ]]; then
|
if [[ $# -eq 5 ]]; then
|
||||||
|
echo ./script/addons/install_addons_dev.sh "$1" "$2" "$5"
|
||||||
./script/addons/install_addons_dev.sh "$1" "$2" "$5"
|
./script/addons/install_addons_dev.sh "$1" "$2" "$5"
|
||||||
retVal=$?
|
retVal=$?
|
||||||
if [[ $retVal -ne 0 ]]; then
|
if [[ $retVal -ne 0 ]]; then
|
||||||
|
|
@ -22,6 +23,7 @@ if [[ $# -eq 5 ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
echo ./script/addons/install_addons_dev.sh "$1" "$2"
|
||||||
./script/addons/install_addons_dev.sh "$1" "$2"
|
./script/addons/install_addons_dev.sh "$1" "$2"
|
||||||
retVal=$?
|
retVal=$?
|
||||||
if [[ $retVal -ne 0 ]]; then
|
if [[ $retVal -ne 0 ]]; then
|
||||||
|
|
@ -31,6 +33,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if the code was updated
|
# Check if the code was updated
|
||||||
|
echo ./script/code_generator/test_code_generator_update_module.py -m "$4" -d "$3" --datetime "${INIT_DATETIME}"
|
||||||
./script/code_generator/test_code_generator_update_module.py -m "$4" -d "$3" --datetime "${INIT_DATETIME}"
|
./script/code_generator/test_code_generator_update_module.py -m "$4" -d "$3" --datetime "${INIT_DATETIME}"
|
||||||
retVal=$?
|
retVal=$?
|
||||||
if [[ $retVal -ne 0 ]]; then
|
if [[ $retVal -ne 0 ]]; then
|
||||||
|
|
@ -39,6 +42,7 @@ if [[ $retVal -ne 0 ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO check output when got warning
|
# TODO check output when got warning
|
||||||
|
echo ./script/git/repo_revert_git_diff_date_from_code_generator.py --repo "$3"
|
||||||
./script/git/repo_revert_git_diff_date_from_code_generator.py --repo "$3"
|
./script/git/repo_revert_git_diff_date_from_code_generator.py --repo "$3"
|
||||||
# Remove pot and po diff
|
# Remove pot and po diff
|
||||||
cd "$3" || exit 1
|
cd "$3" || exit 1
|
||||||
|
|
@ -63,6 +67,7 @@ for element in "${elements[@]}"; do
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "TEST ${2}"
|
echo "TEST ${2}"
|
||||||
|
echo ./script/code_generator/check_git_change_code_generator.sh "$3"
|
||||||
./script/code_generator/check_git_change_code_generator.sh "$3"
|
./script/code_generator/check_git_change_code_generator.sh "$3"
|
||||||
retVal=$?
|
retVal=$?
|
||||||
if [[ $retVal -ne 0 ]]; then
|
if [[ $retVal -ne 0 ]]; then
|
||||||
|
|
|
||||||
|
|
@ -4,21 +4,17 @@
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import configparser
|
import configparser
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
import uuid
|
import uuid
|
||||||
import json
|
|
||||||
|
|
||||||
from git import Repo
|
from git import Repo
|
||||||
from git.exc import InvalidGitRepositoryError, NoSuchPathError
|
from git.exc import InvalidGitRepositoryError, NoSuchPathError
|
||||||
|
|
||||||
|
|
||||||
CODE_GENERATOR_DIRECTORY = "./addons/TechnoLibre_odoo-code-generator-template/"
|
|
||||||
CODE_GENERATOR_DEMO_NAME = "code_generator_demo"
|
|
||||||
KEY_REPLACE_CODE_GENERATOR_DEMO = 'MODULE_NAME = "%s"'
|
|
||||||
|
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
format=(
|
format=(
|
||||||
"%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d]"
|
"%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d]"
|
||||||
|
|
@ -29,6 +25,19 @@ logging.basicConfig(
|
||||||
)
|
)
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
filename_odoo_version = ".odoo-version"
|
||||||
|
if not os.path.isfile(filename_odoo_version):
|
||||||
|
_logger.error(f"Missing file {filename_odoo_version}")
|
||||||
|
sys.exit(1)
|
||||||
|
with open(".odoo-version", "r") as f:
|
||||||
|
odoo_version = f.readline()
|
||||||
|
|
||||||
|
CODE_GENERATOR_DIRECTORY = (
|
||||||
|
f"./addons.odoo{odoo_version}/TechnoLibre_odoo-code-generator-template/"
|
||||||
|
)
|
||||||
|
CODE_GENERATOR_DEMO_NAME = "code_generator_demo"
|
||||||
|
KEY_REPLACE_CODE_GENERATOR_DEMO = 'MODULE_NAME = "%s"'
|
||||||
|
|
||||||
|
|
||||||
class Struct:
|
class Struct:
|
||||||
def __init__(self, **entries):
|
def __init__(self, **entries):
|
||||||
|
|
@ -133,6 +142,11 @@ class ProjectManagement:
|
||||||
self.has_config_update = False
|
self.has_config_update = False
|
||||||
self.odoo_config = odoo_config
|
self.odoo_config = odoo_config
|
||||||
|
|
||||||
|
# Replace addons/ by addons.odoo12.0/
|
||||||
|
module_directory = module_directory.replace(
|
||||||
|
"addons/", f"addons.odoo{odoo_version}/"
|
||||||
|
)
|
||||||
|
|
||||||
self.module_directory = module_directory
|
self.module_directory = module_directory
|
||||||
if not os.path.exists(self.module_directory):
|
if not os.path.exists(self.module_directory):
|
||||||
self.msg_error = (
|
self.msg_error = (
|
||||||
|
|
@ -569,7 +583,7 @@ class ProjectManagement:
|
||||||
has_change = True
|
has_change = True
|
||||||
if has_change:
|
if has_change:
|
||||||
config.set("options", "addons_path", ",".join(lst_addons_path))
|
config.set("options", "addons_path", ",".join(lst_addons_path))
|
||||||
temp_file = tempfile.mktemp()
|
fd_i, temp_file = tempfile.mkstemp()
|
||||||
with open(temp_file, "w") as configfile:
|
with open(temp_file, "w") as configfile:
|
||||||
config.write(configfile)
|
config.write(configfile)
|
||||||
_logger.info(f"Create temporary config file: {temp_file}")
|
_logger.info(f"Create temporary config file: {temp_file}")
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,15 @@
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
import astor
|
|
||||||
import json
|
|
||||||
import ast
|
import ast
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
import astor
|
||||||
|
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import argparse
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from colorama import Fore, Style
|
from colorama import Fore, Style
|
||||||
|
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import uuid
|
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
import uuid
|
||||||
|
|
||||||
from code_writer import CodeWriter
|
from code_writer import CodeWriter
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,9 @@ import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from xml.dom import Node, minidom
|
from xml.dom import Node, minidom
|
||||||
from colorama import Fore, Style
|
|
||||||
|
|
||||||
from code_writer import CodeWriter
|
from code_writer import CodeWriter
|
||||||
|
from colorama import Fore, Style
|
||||||
|
|
||||||
from script.git.git_tool import GitTool
|
from script.git.git_tool import GitTool
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,8 @@ SUGGESTION
|
||||||
"--image",
|
"--image",
|
||||||
help=(
|
help=(
|
||||||
"Image name to restore, from directory image_db, filename without"
|
"Image name to restore, from directory image_db, filename without"
|
||||||
" '.zip'. Example, use erplibre_base to use image"
|
" '.zip'. Example, use odoo12.0_base to use image"
|
||||||
" erplibre_base.zip. Default value is erplibre_base"
|
" odoo12.0_base.zip. Default value is odoo12.0_base"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
from collections import defaultdict
|
|
||||||
import uuid
|
|
||||||
import time
|
|
||||||
import json
|
|
||||||
import sys
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import uuid
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
logging.basicConfig(level=os.environ.get("LOGLEVEL", "INFO"))
|
logging.basicConfig(level=os.environ.get("LOGLEVEL", "INFO"))
|
||||||
|
|
||||||
|
|
@ -34,7 +34,7 @@ DESCRIPTION
|
||||||
Create image for database restoration to increase speed. Check file
|
Create image for database restoration to increase speed. Check file
|
||||||
|
|
||||||
SUGGESTION
|
SUGGESTION
|
||||||
./script/database/image_db.py --image erplibre_base --odoo_version 16.0
|
./script/database/image_db.py --image odoo16.0_base --odoo_version 16.0
|
||||||
""",
|
""",
|
||||||
epilog="""\
|
epilog="""\
|
||||||
""",
|
""",
|
||||||
|
|
@ -43,8 +43,8 @@ SUGGESTION
|
||||||
"--image",
|
"--image",
|
||||||
help=(
|
help=(
|
||||||
"Image name to restore, from directory image_db, filename without"
|
"Image name to restore, from directory image_db, filename without"
|
||||||
" '.zip'. Example, use erplibre_base to use image"
|
" '.zip'. Example, use odoo12.0_base to use image"
|
||||||
" erplibre_base.zip. Default value is erplibre_base"
|
" odoo12.0_base.zip. Default value is odoo12.0_base"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ from __future__ import print_function
|
||||||
import argparse
|
import argparse
|
||||||
import os.path
|
import os.path
|
||||||
import shutil
|
import shutil
|
||||||
from colorama import Fore, Style
|
|
||||||
|
|
||||||
import yaml # pip install PyYAML
|
import yaml # pip install PyYAML
|
||||||
from agithub.GitHub import GitHub # pip install agithub
|
from agithub.GitHub import GitHub # pip install agithub
|
||||||
|
from colorama import Fore, Style
|
||||||
from git import Repo # pip install gitpython
|
from git import Repo # pip install gitpython
|
||||||
from giturlparse import parse # pip install giturlparse
|
from giturlparse import parse # pip install giturlparse
|
||||||
from retrying import retry # pip install retrying
|
from retrying import retry # pip install retrying
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ import argparse
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from colorama import Fore, Style
|
|
||||||
|
|
||||||
|
from colorama import Fore, Style
|
||||||
from git import Repo
|
from git import Repo
|
||||||
|
|
||||||
new_path = os.path.normpath(
|
new_path = os.path.normpath(
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,11 @@ import os
|
||||||
import webbrowser
|
import webbrowser
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from typing import List
|
from typing import List
|
||||||
from colorama import Fore, Style
|
|
||||||
|
|
||||||
import git
|
import git
|
||||||
import xmltodict
|
import xmltodict
|
||||||
from agithub.GitHub import GitHub # pip install agithub
|
from agithub.GitHub import GitHub # pip install agithub
|
||||||
|
from colorama import Fore, Style
|
||||||
from git import Repo
|
from git import Repo
|
||||||
from giturlparse import parse # pip install giturlparse
|
from giturlparse import parse # pip install giturlparse
|
||||||
from retrying import retry # pip install retrying
|
from retrying import retry # pip install retrying
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,14 @@ logging.basicConfig(
|
||||||
)
|
)
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
FILENAME_ODOO_VERSION = ".odoo-version"
|
||||||
|
if not os.path.isfile(FILENAME_ODOO_VERSION):
|
||||||
|
_logger.error(f"Missing file {FILENAME_ODOO_VERSION}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
with open(".odoo-version", "r") as f:
|
||||||
|
ODOO_VERSION = f.readline()
|
||||||
|
|
||||||
|
|
||||||
def get_config():
|
def get_config():
|
||||||
"""Parse command line arguments, extracting the config file name,
|
"""Parse command line arguments, extracting the config file name,
|
||||||
|
|
@ -39,7 +47,7 @@ def get_config():
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--repo",
|
"--repo",
|
||||||
default="./addons/TechnoLibre_odoo-code-generator-template;./addons/OCA_server-tools",
|
default=f"./addons.odoo{ODOO_VERSION}/TechnoLibre_odoo-code-generator-template;./addons.odoo{ODOO_VERSION}/OCA_server-tools",
|
||||||
)
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
return args
|
return args
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import csv
|
import csv
|
||||||
|
import glob
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import glob
|
|
||||||
|
|
||||||
import xmltodict
|
import xmltodict
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,15 @@
|
||||||
# TODO replace test1 by your hostname and fix server_name and run certbot
|
# TODO replace CHANGEME by your hostname and fix server_name and run certbot
|
||||||
upstream erplibretest1 {
|
upstream erplibreCHANGEME {
|
||||||
server 127.0.0.1:10000;
|
server 127.0.0.1:8069;
|
||||||
}
|
}
|
||||||
upstream erplibretest1chat {
|
upstream erplibreCHANGEMEchat {
|
||||||
server 127.0.0.1:10002;
|
server 127.0.0.1:8072;
|
||||||
}
|
}
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
|
|
||||||
server_name test1.ca;
|
server_name CHANGEME.ca;
|
||||||
|
|
||||||
# Add Headers for erplibre proxy mode
|
# Add Headers for erplibre proxy mode
|
||||||
proxy_set_header X-Forwarded-Host $host;
|
proxy_set_header X-Forwarded-Host $host;
|
||||||
|
|
@ -20,8 +20,8 @@ server {
|
||||||
add_header X-XSS-Protection "1; mode=block";
|
add_header X-XSS-Protection "1; mode=block";
|
||||||
|
|
||||||
# erplibre request log files
|
# erplibre request log files
|
||||||
access_log /var/log/nginx/test1-access.log;
|
access_log /var/log/nginx/CHANGEME-access.log;
|
||||||
error_log /var/log/nginx/test1-error.log;
|
error_log /var/log/nginx/CHANGEME-error.log;
|
||||||
|
|
||||||
# Increase proxy buffer size
|
# Increase proxy buffer size
|
||||||
proxy_buffers 16 64k;
|
proxy_buffers 16 64k;
|
||||||
|
|
@ -51,21 +51,21 @@ server {
|
||||||
client_max_body_size 1024M;
|
client_max_body_size 1024M;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
proxy_pass http://erplibretest1;
|
proxy_pass http://erplibreCHANGEME;
|
||||||
# by default, do not forward anything
|
# by default, do not forward anything
|
||||||
proxy_redirect off;
|
proxy_redirect off;
|
||||||
}
|
}
|
||||||
|
|
||||||
location /longpolling {
|
location /longpolling {
|
||||||
proxy_pass http://erplibretest1chat;
|
proxy_pass http://erplibreCHANGEMEchat;
|
||||||
}
|
}
|
||||||
|
|
||||||
# cache some static data in memory for 60mins.
|
# cache some static data in memory for 60mins.
|
||||||
location ~ /[a-zA-Z0-9_-]*/static/ {
|
location ~ /[a-zA-Z0-9_-]*/static/ {
|
||||||
proxy_cache_valid 200 302 60m;
|
proxy_cache_valid 200 302 60m;
|
||||||
proxy_cache_valid 404 1m;
|
proxy_cache_valid 404 1m;
|
||||||
proxy_buffering on;
|
proxy_buffering on;
|
||||||
expires 864000;
|
expires 864000;
|
||||||
proxy_pass http://erplibretest1;
|
proxy_pass http://erplibreCHANGEME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
93
script/nginx/template_nginx_odoo_14.0.txt
Normal file
93
script/nginx/template_nginx_odoo_14.0.txt
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
# TODO replace CHANGEME by your hostname and fix server_name and run certbot
|
||||||
|
upstream erplibreCHANGEME {
|
||||||
|
server 127.0.0.1:8069;
|
||||||
|
}
|
||||||
|
upstream erplibreCHANGEMEchat {
|
||||||
|
server 127.0.0.1:8072;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
|
||||||
|
server_name CHANGEME.ca;
|
||||||
|
|
||||||
|
# Add Headers for erplibre proxy mode
|
||||||
|
proxy_set_header X-Forwarded-Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
add_header X-Frame-Options "SAMEORIGIN";
|
||||||
|
add_header X-XSS-Protection "1; mode=block";
|
||||||
|
|
||||||
|
# erplibre request log files
|
||||||
|
access_log /var/log/nginx/CHANGEME-access.log;
|
||||||
|
error_log /var/log/nginx/CHANGEME-error.log;
|
||||||
|
|
||||||
|
# Increase proxy buffer size
|
||||||
|
proxy_buffers 16 64k;
|
||||||
|
proxy_buffer_size 128k;
|
||||||
|
|
||||||
|
proxy_read_timeout 720s;
|
||||||
|
proxy_connect_timeout 720s;
|
||||||
|
proxy_send_timeout 720s;
|
||||||
|
|
||||||
|
# Force timeouts if the backend dies
|
||||||
|
proxy_next_upstream error timeout invalid_header http_500 http_502
|
||||||
|
http_503;
|
||||||
|
|
||||||
|
types {
|
||||||
|
text/less less;
|
||||||
|
text/scss scss;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Enable data compression
|
||||||
|
gzip on;
|
||||||
|
gzip_min_length 1100;
|
||||||
|
gzip_buffers 4 32k;
|
||||||
|
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript application/pdf image/jpeg image/png;
|
||||||
|
gzip_vary on;
|
||||||
|
client_header_buffer_size 4k;
|
||||||
|
large_client_header_buffers 4 64k;
|
||||||
|
client_max_body_size 1024M;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://erplibreCHANGEME;
|
||||||
|
# by default, do not forward anything
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
proxy_read_timeout 720s;
|
||||||
|
proxy_connect_timeout 720s;
|
||||||
|
proxy_send_timeout 720s;
|
||||||
|
# Add Headers for odoo proxy mode
|
||||||
|
proxy_set_header X-Forwarded-Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /websocket {
|
||||||
|
proxy_pass http://erplibreCHANGEMEchat;
|
||||||
|
proxy_read_timeout 720s;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
proxy_connect_timeout 720s;
|
||||||
|
proxy_send_timeout 720s;
|
||||||
|
# Add Headers for odoo proxy mode
|
||||||
|
proxy_set_header X-Forwarded-Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
# cache some static data in memory for 60mins.
|
||||||
|
location ~ /[a-zA-Z0-9_-]*/static/ {
|
||||||
|
proxy_cache_valid 200 302 60m;
|
||||||
|
proxy_cache_valid 404 1m;
|
||||||
|
proxy_buffering on;
|
||||||
|
expires 864000;
|
||||||
|
proxy_pass http://erplibreCHANGEME;
|
||||||
|
}
|
||||||
|
}
|
||||||
93
script/nginx/template_nginx_odoo_16.0.txt
Normal file
93
script/nginx/template_nginx_odoo_16.0.txt
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
# TODO replace CHANGEME by your hostname and fix server_name and run certbot
|
||||||
|
upstream erplibreCHANGEME {
|
||||||
|
server 127.0.0.1:8069;
|
||||||
|
}
|
||||||
|
upstream erplibreCHANGEMEchat {
|
||||||
|
server 127.0.0.1:8072;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
|
||||||
|
server_name CHANGEME.ca;
|
||||||
|
|
||||||
|
# Add Headers for erplibre proxy mode
|
||||||
|
proxy_set_header X-Forwarded-Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
add_header X-Frame-Options "SAMEORIGIN";
|
||||||
|
add_header X-XSS-Protection "1; mode=block";
|
||||||
|
|
||||||
|
# erplibre request log files
|
||||||
|
access_log /var/log/nginx/CHANGEME-access.log;
|
||||||
|
error_log /var/log/nginx/CHANGEME-error.log;
|
||||||
|
|
||||||
|
# Increase proxy buffer size
|
||||||
|
proxy_buffers 16 64k;
|
||||||
|
proxy_buffer_size 128k;
|
||||||
|
|
||||||
|
proxy_read_timeout 720s;
|
||||||
|
proxy_connect_timeout 720s;
|
||||||
|
proxy_send_timeout 720s;
|
||||||
|
|
||||||
|
# Force timeouts if the backend dies
|
||||||
|
proxy_next_upstream error timeout invalid_header http_500 http_502
|
||||||
|
http_503;
|
||||||
|
|
||||||
|
types {
|
||||||
|
text/less less;
|
||||||
|
text/scss scss;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Enable data compression
|
||||||
|
gzip on;
|
||||||
|
gzip_min_length 1100;
|
||||||
|
gzip_buffers 4 32k;
|
||||||
|
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript application/pdf image/jpeg image/png;
|
||||||
|
gzip_vary on;
|
||||||
|
client_header_buffer_size 4k;
|
||||||
|
large_client_header_buffers 4 64k;
|
||||||
|
client_max_body_size 1024M;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://erplibreCHANGEME;
|
||||||
|
# by default, do not forward anything
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
proxy_read_timeout 720s;
|
||||||
|
proxy_connect_timeout 720s;
|
||||||
|
proxy_send_timeout 720s;
|
||||||
|
# Add Headers for odoo proxy mode
|
||||||
|
proxy_set_header X-Forwarded-Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /websocket {
|
||||||
|
proxy_pass http://erplibreCHANGEMEchat;
|
||||||
|
proxy_read_timeout 720s;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
proxy_connect_timeout 720s;
|
||||||
|
proxy_send_timeout 720s;
|
||||||
|
# Add Headers for odoo proxy mode
|
||||||
|
proxy_set_header X-Forwarded-Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
# cache some static data in memory for 60mins.
|
||||||
|
location ~ /[a-zA-Z0-9_-]*/static/ {
|
||||||
|
proxy_cache_valid 200 302 60m;
|
||||||
|
proxy_cache_valid 404 1m;
|
||||||
|
proxy_buffering on;
|
||||||
|
expires 864000;
|
||||||
|
proxy_pass http://erplibreCHANGEME;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Open a new gnome-terminal with different path on new tab
|
# Open a new gnome-terminal with different path on new tab
|
||||||
|
ODOO_VERSION=$(cat .odoo-version)
|
||||||
working_path=$(readlink -f .)
|
working_path=$(readlink -f .)
|
||||||
paths=(
|
paths=(
|
||||||
"${working_path}/"
|
"${working_path}/"
|
||||||
"${working_path}/"
|
"${working_path}/"
|
||||||
"${working_path}/addons/ERPLibre_erplibre_addons"
|
"${working_path}/addons.odoo${ODOO_VERSION}/ERPLibre_erplibre_addons"
|
||||||
"${working_path}/addons/TechnoLibre_odoo-code-generator"
|
"${working_path}/addons.odoo${ODOO_VERSION}/TechnoLibre_odoo-code-generator"
|
||||||
"${working_path}/addons/TechnoLibre_odoo-code-generator-template"
|
"${working_path}/addons.odoo${ODOO_VERSION}/TechnoLibre_odoo-code-generator-template"
|
||||||
# "${working_path}/addons/OCA_server-tools"
|
# "${working_path}/addons.odoo${ODOO_VERSION}/OCA_server-tools"
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,10 @@ import logging
|
||||||
import os
|
import os
|
||||||
from collections import OrderedDict, defaultdict
|
from collections import OrderedDict, defaultdict
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from colorama import Fore, Style
|
|
||||||
|
|
||||||
import iscompatible
|
import iscompatible
|
||||||
import toml
|
import toml
|
||||||
|
from colorama import Fore, Style
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,12 @@
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import csv
|
||||||
import datetime
|
import datetime
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
import csv
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
|
|
|
||||||
|
|
@ -10,28 +10,29 @@
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
"test_name": "code_generator_theme_test",
|
"test_name": "code_generator_theme_test",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "theme_website_demo_code_generator",
|
"generated_module": "theme_website_demo_code_generator",
|
||||||
"tested_module": "code_generator_demo_theme_website"
|
"tested_module": "code_generator_demo_theme_website"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
|
"disable": true,
|
||||||
"test_name": "code_generator_demo_test",
|
"test_name": "code_generator_demo_test",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "code_generator_demo",
|
"generated_module": "code_generator_demo",
|
||||||
"tested_module": "code_generator_demo"
|
"tested_module": "code_generator_demo"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
"test_name": "code_generator_data_test",
|
"test_name": "code_generator_data_test",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "demo_helpdesk_data",
|
"generated_module": "demo_helpdesk_data",
|
||||||
"tested_module": "code_generator_demo_export_helpdesk"
|
"tested_module": "code_generator_demo_export_helpdesk"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
"test_name": "code_generator_data_part_2_test",
|
"test_name": "code_generator_data_part_2_test",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "demo_website_data",
|
"generated_module": "demo_website_data",
|
||||||
"tested_module": "code_generator_demo_export_website",
|
"tested_module": "code_generator_demo_export_website",
|
||||||
"note": "Merge to code_generator_data_test when fix double export data."
|
"note": "Merge to code_generator_data_test when fix double export data."
|
||||||
|
|
@ -39,14 +40,14 @@
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
"test_name": "code_generator_inherit_test",
|
"test_name": "code_generator_inherit_test",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "demo_internal_inherit",
|
"generated_module": "demo_internal_inherit",
|
||||||
"tested_module": "code_generator_demo_internal_inherit"
|
"tested_module": "code_generator_demo_internal_inherit"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
"test_name": "code_generator_template_demo_internal",
|
"test_name": "code_generator_template_demo_internal",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "code_generator_demo_internal",
|
"generated_module": "code_generator_demo_internal",
|
||||||
"tested_module": "code_generator_template_demo_internal",
|
"tested_module": "code_generator_template_demo_internal",
|
||||||
"search_class_module": "demo_internal",
|
"search_class_module": "demo_internal",
|
||||||
|
|
@ -55,7 +56,7 @@
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
"test_name": "code_generator_template_demo_portal",
|
"test_name": "code_generator_template_demo_portal",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "code_generator_demo_portal",
|
"generated_module": "code_generator_demo_portal",
|
||||||
"tested_module": "code_generator_template_demo_portal",
|
"tested_module": "code_generator_template_demo_portal",
|
||||||
"search_class_module": "demo_portal",
|
"search_class_module": "demo_portal",
|
||||||
|
|
@ -63,8 +64,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
|
"disable": true,
|
||||||
"test_name": "mariadb_test_template",
|
"test_name": "mariadb_test_template",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "code_generator_demo_mariadb_sql_example_1",
|
"generated_module": "code_generator_demo_mariadb_sql_example_1",
|
||||||
"tested_module": "code_generator_template_demo_mariadb_sql_example_1",
|
"tested_module": "code_generator_template_demo_mariadb_sql_example_1",
|
||||||
"search_class_module": "demo_mariadb_sql_example_1",
|
"search_class_module": "demo_mariadb_sql_example_1",
|
||||||
|
|
@ -72,8 +74,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
|
"disable": true,
|
||||||
"test_name": "mariadb_test_migrator",
|
"test_name": "mariadb_test_migrator",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "demo_mariadb_sql_example_1",
|
"generated_module": "demo_mariadb_sql_example_1",
|
||||||
"tested_module": "code_generator_migrator_demo_mariadb_sql_example_1",
|
"tested_module": "code_generator_migrator_demo_mariadb_sql_example_1",
|
||||||
"script_after_init_check": "./script/database/restore_mariadb_sql_example_1.sh",
|
"script_after_init_check": "./script/database/restore_mariadb_sql_example_1.sh",
|
||||||
|
|
@ -81,8 +84,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
|
"disable": true,
|
||||||
"test_name": "mariadb_test_code_generator",
|
"test_name": "mariadb_test_code_generator",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "demo_mariadb_sql_example_1",
|
"generated_module": "demo_mariadb_sql_example_1",
|
||||||
"tested_module": "code_generator_demo_mariadb_sql_example_1",
|
"tested_module": "code_generator_demo_mariadb_sql_example_1",
|
||||||
"init_module_name": "code_generator_portal"
|
"init_module_name": "code_generator_portal"
|
||||||
|
|
@ -90,7 +94,7 @@
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
"test_name": "code_generator_template_demo_internal_inherit",
|
"test_name": "code_generator_template_demo_internal_inherit",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "code_generator_demo_internal_inherit",
|
"generated_module": "code_generator_demo_internal_inherit",
|
||||||
"tested_module": "code_generator_template_demo_internal_inherit",
|
"tested_module": "code_generator_template_demo_internal_inherit",
|
||||||
"search_class_module": "demo_internal_inherit",
|
"search_class_module": "demo_internal_inherit",
|
||||||
|
|
@ -98,34 +102,37 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
|
"disable": true,
|
||||||
"test_name": "code_generator_template_demo_sysadmin_cron",
|
"test_name": "code_generator_template_demo_sysadmin_cron",
|
||||||
"path_module_check": "./addons/OCA_server-tools/auto_backup",
|
"path_module_check": "./addons.odoo12.0/OCA_server-tools",
|
||||||
"generated_module": "code_generator_auto_backup",
|
"generated_module": "code_generator_auto_backup",
|
||||||
"generated_path": "./addons/OCA_server-tools/",
|
"generated_path": "./addons.odoo12.0/OCA_server-tools/",
|
||||||
"tested_module": "code_generator_template_demo_sysadmin_cron",
|
"tested_module": "code_generator_template_demo_sysadmin_cron",
|
||||||
"search_class_module": "auto_backup",
|
"search_class_module": "auto_backup",
|
||||||
"init_module_name": "auto_backup",
|
"init_module_name": "auto_backup",
|
||||||
"install_path": "./addons/TechnoLibre_odoo-code-generator-template"
|
"install_path": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
|
"disable": true,
|
||||||
"test_name": "code_generator_export_website_attachments_test",
|
"test_name": "code_generator_export_website_attachments_test",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "demo_website_attachments_data",
|
"generated_module": "demo_website_attachments_data",
|
||||||
"tested_module": "code_generator_demo_export_website_attachments",
|
"tested_module": "code_generator_demo_export_website_attachments",
|
||||||
"restore_db_image_name": "test_website_attachments"
|
"restore_db_image_name": "test_website_attachments"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
|
"disable": true,
|
||||||
"test_name": "code_generator_demo_generic_test",
|
"test_name": "code_generator_demo_generic_test",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "demo_internal,demo_portal",
|
"generated_module": "demo_internal,demo_portal",
|
||||||
"tested_module": "code_generator_demo_internal,code_generator_demo_portal"
|
"tested_module": "code_generator_demo_internal,code_generator_demo_portal"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
"test_name": "code_generator_website_snippet_test",
|
"test_name": "code_generator_website_snippet_test",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"generated_module": "demo_website_leaflet,demo_website_snippet,demo_website_multiple_snippet",
|
"generated_module": "demo_website_leaflet,demo_website_snippet,demo_website_multiple_snippet",
|
||||||
"tested_module": "code_generator_demo_website_leaflet,code_generator_demo_website_snippet,code_generator_demo_website_multiple_snippet",
|
"tested_module": "code_generator_demo_website_leaflet,code_generator_demo_website_snippet,code_generator_demo_website_multiple_snippet",
|
||||||
"file_to_restore": "demo_portal/i18n/demo_portal.pot,demo_portal/i18n/fr_CA.po",
|
"file_to_restore": "demo_portal/i18n/demo_portal.pot,demo_portal/i18n/fr_CA.po",
|
||||||
|
|
@ -135,13 +142,13 @@
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
"test_name": "demo_test",
|
"test_name": "demo_test",
|
||||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||||
"init_module_name": "demo_helpdesk_data,demo_internal,demo_internal_inherit,demo_mariadb_sql_example_1,demo_portal,demo_website_data,demo_website_leaflet,demo_website_snippet"
|
"init_module_name": "demo_helpdesk_data,demo_internal,demo_internal_inherit,demo_mariadb_sql_example_1,demo_portal,demo_website_data,demo_website_leaflet,demo_website_snippet"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"run_test_exec": true,
|
"run_test_exec": true,
|
||||||
"test_name": "code_generator_auto_backup_test",
|
"test_name": "code_generator_auto_backup_test",
|
||||||
"path_module_check": "./addons/OCA_server-tools/auto_backup",
|
"path_module_check": "./addons.odoo12.0/OCA_server-tools/auto_backup",
|
||||||
"generated_module": "auto_backup",
|
"generated_module": "auto_backup",
|
||||||
"tested_module": "code_generator_auto_backup"
|
"tested_module": "code_generator_auto_backup"
|
||||||
}
|
}
|
||||||
|
|
@ -6,15 +6,15 @@ import argparse
|
||||||
import asyncio
|
import asyncio
|
||||||
import configparser
|
import configparser
|
||||||
import datetime
|
import datetime
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
import time
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
import json
|
|
||||||
from typing import Tuple
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
from typing import Tuple
|
||||||
|
|
||||||
import aioshutil
|
import aioshutil
|
||||||
import git
|
import git
|
||||||
|
|
@ -30,8 +30,16 @@ from script import lib_asyncio
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
FILENAME_ODOO_VERSION = ".odoo-version"
|
||||||
|
if not os.path.isfile(FILENAME_ODOO_VERSION):
|
||||||
|
_logger.error(f"Missing file {FILENAME_ODOO_VERSION}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
with open(".odoo-version", "r") as f:
|
||||||
|
ODOO_VERSION = f.readline()
|
||||||
|
|
||||||
LOG_FILE = "./.venv/make_test.log"
|
LOG_FILE = "./.venv/make_test.log"
|
||||||
CONFIG_TESTCASE_JSON = "./script/test/config_testcase.json"
|
CONFIG_TESTCASE_JSON = f"./script/test/config_testcase.odoo{ODOO_VERSION}.json"
|
||||||
|
|
||||||
|
|
||||||
def get_config():
|
def get_config():
|
||||||
|
|
@ -136,7 +144,12 @@ def extract_result(result, test_name, lst_error, lst_warning):
|
||||||
if not is_ignore_warning:
|
if not is_ignore_warning:
|
||||||
lst_warning.append(log_line)
|
lst_warning.append(log_line)
|
||||||
if result[1]:
|
if result[1]:
|
||||||
lst_error.append(f"Return status error for test {test_name}")
|
if len(result[0].split("\n")) == 1:
|
||||||
|
lst_error.append(
|
||||||
|
f"Return status error for test {test_name} : {result[0]}"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
lst_error.append(f"Return status error for test {test_name}")
|
||||||
|
|
||||||
|
|
||||||
def check_result(task_list, tpl_result):
|
def check_result(task_list, tpl_result):
|
||||||
|
|
@ -319,7 +332,7 @@ async def test_exec(
|
||||||
test_name=None,
|
test_name=None,
|
||||||
install_path=None,
|
install_path=None,
|
||||||
run_in_sandbox=True,
|
run_in_sandbox=True,
|
||||||
restore_db_image_name="erplibre_base",
|
restore_db_image_name="odoo12.0_base",
|
||||||
keep_cache=False,
|
keep_cache=False,
|
||||||
coverage=False,
|
coverage=False,
|
||||||
) -> Tuple[str, int, str, float]:
|
) -> Tuple[str, int, str, float]:
|
||||||
|
|
@ -422,7 +435,10 @@ async def test_exec(
|
||||||
# Update path to change new emplacement
|
# Update path to change new emplacement
|
||||||
s_lst_path_tested_module = (
|
s_lst_path_tested_module = (
|
||||||
await lib_asyncio.run_command_get_output(
|
await lib_asyncio.run_command_get_output(
|
||||||
"find", "./addons/", "-name", module_name
|
"find",
|
||||||
|
f"./addons.odoo{ODOO_VERSION}/",
|
||||||
|
"-name",
|
||||||
|
module_name,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if not s_lst_path_tested_module:
|
if not s_lst_path_tested_module:
|
||||||
|
|
@ -437,6 +453,7 @@ async def test_exec(
|
||||||
s_lst_path_tested_module.strip().split("\n")
|
s_lst_path_tested_module.strip().split("\n")
|
||||||
)
|
)
|
||||||
s_first_path = lst_path_tested_module[0]
|
s_first_path = lst_path_tested_module[0]
|
||||||
|
# parent_dir = os.path.dirname(s_first_path).replace("addons/", f"addons.odoo{ODOO_VERSION}/")
|
||||||
parent_dir = os.path.dirname(s_first_path)
|
parent_dir = os.path.dirname(s_first_path)
|
||||||
# Copy it
|
# Copy it
|
||||||
if copy_path != parent_dir:
|
if copy_path != parent_dir:
|
||||||
|
|
@ -546,7 +563,7 @@ async def test_exec(
|
||||||
else:
|
else:
|
||||||
new_hook_line = (
|
new_hook_line = (
|
||||||
hook_line[: first_index + len(f_key)]
|
hook_line[: first_index + len(f_key)]
|
||||||
+ f'"{s_first_path}"\n'
|
+ f'"{s_first_path}"'
|
||||||
+ hook_line[index_end_string:]
|
+ hook_line[index_end_string:]
|
||||||
)
|
)
|
||||||
new_hook_line = new_hook_line.replace(
|
new_hook_line = new_hook_line.replace(
|
||||||
|
|
@ -782,7 +799,7 @@ def check_git_change():
|
||||||
task_list = [
|
task_list = [
|
||||||
run_command(
|
run_command(
|
||||||
"./script/code_generator/check_git_change_code_generator.sh",
|
"./script/code_generator/check_git_change_code_generator.sh",
|
||||||
"./addons/TechnoLibre_odoo-code-generator-template",
|
f"./addons.odoo{ODOO_VERSION}/TechnoLibre_odoo-code-generator-template",
|
||||||
test_name=(
|
test_name=(
|
||||||
"Init check_git_change"
|
"Init check_git_change"
|
||||||
" TechnoLibre_odoo-code-generator-template"
|
" TechnoLibre_odoo-code-generator-template"
|
||||||
|
|
@ -790,7 +807,7 @@ def check_git_change():
|
||||||
),
|
),
|
||||||
run_command(
|
run_command(
|
||||||
"./script/code_generator/check_git_change_code_generator.sh",
|
"./script/code_generator/check_git_change_code_generator.sh",
|
||||||
"./addons/OCA_server-tools",
|
f"./addons.odoo{ODOO_VERSION}/OCA_server-tools",
|
||||||
test_name="Init check_git_change OCA_server-tools",
|
test_name="Init check_git_change OCA_server-tools",
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
@ -826,6 +843,12 @@ def run_all_test(config) -> bool:
|
||||||
dct_task = defaultdict(list)
|
dct_task = defaultdict(list)
|
||||||
dct_task_name = defaultdict(list)
|
dct_task_name = defaultdict(list)
|
||||||
for dct_test in lst_test:
|
for dct_test in lst_test:
|
||||||
|
if dct_test.get("disable"):
|
||||||
|
continue
|
||||||
|
# Force change addons path
|
||||||
|
# if "path_module_check" in dct_test.keys():
|
||||||
|
# # dct_test["path_module_check"] = dct_test["path_module_check"].replace("addons/", f"addons.odoo{ODOO_VERSION}/")
|
||||||
|
# dct_test["path_module_check"] = dct_test["path_module_check"]
|
||||||
sequence = dct_test.get("sequence", 0)
|
sequence = dct_test.get("sequence", 0)
|
||||||
cb_coroutine = None
|
cb_coroutine = None
|
||||||
test_name = None
|
test_name = None
|
||||||
|
|
@ -869,7 +892,7 @@ def run_all_test(config) -> bool:
|
||||||
install_path = dct_test.get("install_path")
|
install_path = dct_test.get("install_path")
|
||||||
run_in_sandbox = dct_test.get("run_in_sandbox", True)
|
run_in_sandbox = dct_test.get("run_in_sandbox", True)
|
||||||
restore_db_image_name = dct_test.get(
|
restore_db_image_name = dct_test.get(
|
||||||
"restore_db_image_name", "erplibre_base"
|
"restore_db_image_name", "odoo12.0_base"
|
||||||
)
|
)
|
||||||
keep_cache = config.keep_cache
|
keep_cache = config.keep_cache
|
||||||
coverage = config.coverage
|
coverage = config.coverage
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import logging
|
|
||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
|
|
|
||||||
|
|
@ -469,7 +469,7 @@ class Update:
|
||||||
ADDONS_PATH,
|
ADDONS_PATH,
|
||||||
ADDONS_PATH
|
ADDONS_PATH
|
||||||
+ "_"
|
+ "_"
|
||||||
+ time.strftime('%Yy%mm%dd-%Hh%Mm%Ss'),
|
+ time.strftime("%Yy%mm%dd-%Hh%Mm%Ss"),
|
||||||
)
|
)
|
||||||
os.symlink(addons_path_with_version, ADDONS_PATH)
|
os.symlink(addons_path_with_version, ADDONS_PATH)
|
||||||
return status
|
return status
|
||||||
|
|
@ -701,7 +701,11 @@ def main():
|
||||||
|
|
||||||
_logger.info("Validate environment")
|
_logger.info("Validate environment")
|
||||||
status = 0
|
status = 0
|
||||||
if update.config.install_dev or update.config.partial_install or update.config.is_in_switch:
|
if (
|
||||||
|
update.config.install_dev
|
||||||
|
or update.config.partial_install
|
||||||
|
or update.config.is_in_switch
|
||||||
|
):
|
||||||
status = update.validate_environment()
|
status = update.validate_environment()
|
||||||
if update.config.install:
|
if update.config.install:
|
||||||
status = update.install_system()
|
status = update.install_system()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue