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
|
||||
|
||||
- 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
|
||||
- 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.
|
||||
- Video recording
|
||||
- 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
|
||||
- Script to search docker compose into the system
|
||||
- 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
|
||||
- Latest version wkhtmltopdf 0.12.6.1-3
|
||||
|
||||
### Fixed
|
||||
|
||||
- NPM instaled locally and not globally
|
||||
- NPM installed locally and not globally
|
||||
- Improve python code writer efficiency
|
||||
- Config generator supporting space into ERPLibre directory
|
||||
- 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.
|
||||
|
||||
[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
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
```sudo apt install docker docker-compose nginx```
|
||||
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>
|
||||
```sudo docker-compose up -d```
|
||||
1. Open the final installation step at this web page :<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. 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.
|
||||
|
||||
|
|
|
|||
|
|
@ -2,9 +2,7 @@
|
|||
"odoo12.0_python3.7.17": {
|
||||
"odoo_version": "12.0",
|
||||
"python_version": "3.7.17",
|
||||
"poetry_version": "1.5.0",
|
||||
"default": true,
|
||||
"note": "Official support ERPLibre 1.5.0"
|
||||
"poetry_version": "1.5.0"
|
||||
},
|
||||
"odoo14.0_python3.8.20": {
|
||||
"odoo_version": "14.0",
|
||||
|
|
@ -14,6 +12,8 @@
|
|||
"odoo16.0_python3.10.14": {
|
||||
"odoo_version": "16.0",
|
||||
"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.
|
||||
|
||||
Test all supported Odoo version :
|
||||
|
||||
```bash
|
||||
./script/install/install_locally_dev.sh
|
||||
make install_odoo_all_version
|
||||
```
|
||||
|
||||
## 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 :
|
||||
|
||||
```bash
|
||||
|
|
@ -61,7 +63,7 @@ make docker_build_odoo_16
|
|||
Search old version, like :
|
||||
|
||||
```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.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
version: "3.3"
|
||||
services:
|
||||
ERPLibre:
|
||||
image: technolibre/erplibre:1.5.0
|
||||
image: technolibre/erplibre:1.6.0
|
||||
ports:
|
||||
- 8069:8069
|
||||
- 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}
|
||||
|
||||
|
|
|
|||
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
|
||||
|
||||
ERPLIBRE_VERSION="1.5.0"
|
||||
ERPLIBRE_VERSION="1.6.0"
|
||||
|
||||
EL_USER="erplibre"
|
||||
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-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-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.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-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" 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.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"/>
|
||||
|
|
|
|||
4
package-lock.json
generated
4
package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "erplibre",
|
||||
"version": "1.5.0",
|
||||
"version": "1.6.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "erplibre",
|
||||
"version": "1.5.0",
|
||||
"version": "1.6.0",
|
||||
"license": "AGPLv3",
|
||||
"devDependencies": {
|
||||
"@prettier/plugin-xml": "==2.2.0",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "erplibre",
|
||||
"description": "Easy installation of Odoo",
|
||||
"version": "1.5.0",
|
||||
"version": "1.6.0",
|
||||
"license": "AGPLv3",
|
||||
"homepage": "https://erplibre.ca",
|
||||
"devDependencies": {
|
||||
|
|
|
|||
|
|
@ -139,6 +139,17 @@ files = [
|
|||
[package.dependencies]
|
||||
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]]
|
||||
name = "aiosignal"
|
||||
version = "1.3.2"
|
||||
|
|
@ -8475,4 +8486,4 @@ bindings = ["ghostscript"]
|
|||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.10.14"
|
||||
content-hash = "49785f9e198e6124847a9b304493e184d6155f5261a53211d28cbb6679dd7a3e"
|
||||
content-hash = "350819d1b0358148243e33c0d3a0731e258153a097d85e45725435d0ee03f38b"
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ target-version = [ "py37",]
|
|||
|
||||
[tool.poetry]
|
||||
name = "ERPLibre"
|
||||
version = "1.5.0"
|
||||
version = "1.6.0"
|
||||
description = "Easy way to configure Odoo community"
|
||||
license = "AGPL-3.0-or-later"
|
||||
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ target-version = [ "py37",]
|
|||
|
||||
[tool.poetry]
|
||||
name = "ERPLibre"
|
||||
version = "1.5.0"
|
||||
version = "1.6.0"
|
||||
description = "Easy way to configure Odoo community"
|
||||
license = "AGPL-3.0-or-later"
|
||||
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ target-version = [ "py37",]
|
|||
|
||||
[tool.poetry]
|
||||
name = "ERPLibre"
|
||||
version = "1.5.0"
|
||||
version = "1.6.0"
|
||||
description = "Easy way to configure Odoo community"
|
||||
license = "AGPL-3.0-or-later"
|
||||
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ target-version = [ "py37",]
|
|||
|
||||
[tool.poetry]
|
||||
name = "ERPLibre"
|
||||
version = "1.5.0"
|
||||
version = "1.6.0"
|
||||
description = "Easy way to configure Odoo community"
|
||||
license = "AGPL-3.0-or-later"
|
||||
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
||||
|
|
@ -20,6 +20,7 @@ authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
|
|||
[tool.poetry.dependencies]
|
||||
python = "^3.10.14"
|
||||
agithub = "^2.2.2"
|
||||
aioshutil = "^1.5"
|
||||
argcomplete = "^3.6.2"
|
||||
asana = "^5.1.0"
|
||||
asn1crypto = "^1.5.1"
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ python-randomword-fr
|
|||
isort
|
||||
pykeepass
|
||||
click
|
||||
aioshutil
|
||||
|
||||
# For OSX
|
||||
cython
|
||||
|
|
|
|||
|
|
@ -73,6 +73,8 @@ On_IPurple='\033[0;105m' # Purple
|
|||
On_ICyan='\033[0;106m' # Cyan
|
||||
On_IWhite='\033[0;107m' # White
|
||||
|
||||
ODOO_VERSION=$(cat .odoo-version)
|
||||
|
||||
check_git() {
|
||||
REP=$1
|
||||
cd "${REP}" || exit
|
||||
|
|
@ -110,5 +112,5 @@ if [ $# -gt 0 ]; then
|
|||
fi
|
||||
else
|
||||
# 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
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ fi
|
|||
INIT_DATETIME=$(date +%s)
|
||||
|
||||
if [[ $# -eq 5 ]]; then
|
||||
echo ./script/addons/install_addons_dev.sh "$1" "$2" "$5"
|
||||
./script/addons/install_addons_dev.sh "$1" "$2" "$5"
|
||||
retVal=$?
|
||||
if [[ $retVal -ne 0 ]]; then
|
||||
|
|
@ -22,6 +23,7 @@ if [[ $# -eq 5 ]]; then
|
|||
exit 1
|
||||
fi
|
||||
else
|
||||
echo ./script/addons/install_addons_dev.sh "$1" "$2"
|
||||
./script/addons/install_addons_dev.sh "$1" "$2"
|
||||
retVal=$?
|
||||
if [[ $retVal -ne 0 ]]; then
|
||||
|
|
@ -31,6 +33,7 @@ else
|
|||
fi
|
||||
|
||||
# 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}"
|
||||
retVal=$?
|
||||
if [[ $retVal -ne 0 ]]; then
|
||||
|
|
@ -39,6 +42,7 @@ if [[ $retVal -ne 0 ]]; then
|
|||
fi
|
||||
|
||||
# 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"
|
||||
# Remove pot and po diff
|
||||
cd "$3" || exit 1
|
||||
|
|
@ -63,6 +67,7 @@ for element in "${elements[@]}"; do
|
|||
done
|
||||
|
||||
echo "TEST ${2}"
|
||||
echo ./script/code_generator/check_git_change_code_generator.sh "$3"
|
||||
./script/code_generator/check_git_change_code_generator.sh "$3"
|
||||
retVal=$?
|
||||
if [[ $retVal -ne 0 ]]; then
|
||||
|
|
|
|||
|
|
@ -4,21 +4,17 @@
|
|||
|
||||
import argparse
|
||||
import configparser
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
import uuid
|
||||
import json
|
||||
|
||||
from git import Repo
|
||||
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(
|
||||
format=(
|
||||
"%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d]"
|
||||
|
|
@ -29,6 +25,19 @@ logging.basicConfig(
|
|||
)
|
||||
_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:
|
||||
def __init__(self, **entries):
|
||||
|
|
@ -133,6 +142,11 @@ class ProjectManagement:
|
|||
self.has_config_update = False
|
||||
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
|
||||
if not os.path.exists(self.module_directory):
|
||||
self.msg_error = (
|
||||
|
|
@ -569,7 +583,7 @@ class ProjectManagement:
|
|||
has_change = True
|
||||
if has_change:
|
||||
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:
|
||||
config.write(configfile)
|
||||
_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)
|
||||
|
||||
import argparse
|
||||
|
||||
import astor
|
||||
import json
|
||||
import ast
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import astor
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import argparse
|
|||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
from colorama import Fore, Style
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
|
||||
import argparse
|
||||
import uuid
|
||||
import subprocess
|
||||
import sys
|
||||
import uuid
|
||||
|
||||
from code_writer import CodeWriter
|
||||
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@ import logging
|
|||
import os
|
||||
import sys
|
||||
from xml.dom import Node, minidom
|
||||
from colorama import Fore, Style
|
||||
|
||||
from code_writer import CodeWriter
|
||||
from colorama import Fore, Style
|
||||
|
||||
from script.git.git_tool import GitTool
|
||||
|
||||
|
|
|
|||
|
|
@ -41,8 +41,8 @@ SUGGESTION
|
|||
"--image",
|
||||
help=(
|
||||
"Image name to restore, from directory image_db, filename without"
|
||||
" '.zip'. Example, use erplibre_base to use image"
|
||||
" erplibre_base.zip. Default value is erplibre_base"
|
||||
" '.zip'. Example, use odoo12.0_base to use image"
|
||||
" odoo12.0_base.zip. Default value is odoo12.0_base"
|
||||
),
|
||||
)
|
||||
parser.add_argument(
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@
|
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
from collections import defaultdict
|
||||
import uuid
|
||||
import time
|
||||
import json
|
||||
import sys
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
import uuid
|
||||
from collections import defaultdict
|
||||
|
||||
logging.basicConfig(level=os.environ.get("LOGLEVEL", "INFO"))
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ DESCRIPTION
|
|||
Create image for database restoration to increase speed. Check file
|
||||
|
||||
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="""\
|
||||
""",
|
||||
|
|
@ -43,8 +43,8 @@ SUGGESTION
|
|||
"--image",
|
||||
help=(
|
||||
"Image name to restore, from directory image_db, filename without"
|
||||
" '.zip'. Example, use erplibre_base to use image"
|
||||
" erplibre_base.zip. Default value is erplibre_base"
|
||||
" '.zip'. Example, use odoo12.0_base to use image"
|
||||
" odoo12.0_base.zip. Default value is odoo12.0_base"
|
||||
),
|
||||
)
|
||||
parser.add_argument(
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@ from __future__ import print_function
|
|||
import argparse
|
||||
import os.path
|
||||
import shutil
|
||||
from colorama import Fore, Style
|
||||
|
||||
import yaml # pip install PyYAML
|
||||
from agithub.GitHub import GitHub # pip install agithub
|
||||
from colorama import Fore, Style
|
||||
from git import Repo # pip install gitpython
|
||||
from giturlparse import parse # pip install giturlparse
|
||||
from retrying import retry # pip install retrying
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ import argparse
|
|||
import logging
|
||||
import os
|
||||
import sys
|
||||
from colorama import Fore, Style
|
||||
|
||||
from colorama import Fore, Style
|
||||
from git import Repo
|
||||
|
||||
new_path = os.path.normpath(
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@ import os
|
|||
import webbrowser
|
||||
from collections import OrderedDict
|
||||
from typing import List
|
||||
from colorama import Fore, Style
|
||||
|
||||
import git
|
||||
import xmltodict
|
||||
from agithub.GitHub import GitHub # pip install agithub
|
||||
from colorama import Fore, Style
|
||||
from git import Repo
|
||||
from giturlparse import parse # pip install giturlparse
|
||||
from retrying import retry # pip install retrying
|
||||
|
|
|
|||
|
|
@ -22,6 +22,14 @@ logging.basicConfig(
|
|||
)
|
||||
_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():
|
||||
"""Parse command line arguments, extracting the config file name,
|
||||
|
|
@ -39,7 +47,7 @@ def get_config():
|
|||
)
|
||||
parser.add_argument(
|
||||
"--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()
|
||||
return args
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@
|
|||
|
||||
import argparse
|
||||
import csv
|
||||
import glob
|
||||
import logging
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import glob
|
||||
|
||||
import xmltodict
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
# TODO replace test1 by your hostname and fix server_name and run certbot
|
||||
upstream erplibretest1 {
|
||||
server 127.0.0.1:10000;
|
||||
# TODO replace CHANGEME by your hostname and fix server_name and run certbot
|
||||
upstream erplibreCHANGEME {
|
||||
server 127.0.0.1:8069;
|
||||
}
|
||||
upstream erplibretest1chat {
|
||||
server 127.0.0.1:10002;
|
||||
upstream erplibreCHANGEMEchat {
|
||||
server 127.0.0.1:8072;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
server_name test1.ca;
|
||||
server_name CHANGEME.ca;
|
||||
|
||||
# Add Headers for erplibre proxy mode
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
|
|
@ -20,8 +20,8 @@ server {
|
|||
add_header X-XSS-Protection "1; mode=block";
|
||||
|
||||
# erplibre request log files
|
||||
access_log /var/log/nginx/test1-access.log;
|
||||
error_log /var/log/nginx/test1-error.log;
|
||||
access_log /var/log/nginx/CHANGEME-access.log;
|
||||
error_log /var/log/nginx/CHANGEME-error.log;
|
||||
|
||||
# Increase proxy buffer size
|
||||
proxy_buffers 16 64k;
|
||||
|
|
@ -51,21 +51,21 @@ server {
|
|||
client_max_body_size 1024M;
|
||||
|
||||
location / {
|
||||
proxy_pass http://erplibretest1;
|
||||
proxy_pass http://erplibreCHANGEME;
|
||||
# by default, do not forward anything
|
||||
proxy_redirect off;
|
||||
}
|
||||
|
||||
location /longpolling {
|
||||
proxy_pass http://erplibretest1chat;
|
||||
proxy_pass http://erplibreCHANGEMEchat;
|
||||
}
|
||||
|
||||
# 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://erplibretest1;
|
||||
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_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
|
||||
# Open a new gnome-terminal with different path on new tab
|
||||
ODOO_VERSION=$(cat .odoo-version)
|
||||
working_path=$(readlink -f .)
|
||||
paths=(
|
||||
"${working_path}/"
|
||||
"${working_path}/"
|
||||
"${working_path}/addons/ERPLibre_erplibre_addons"
|
||||
"${working_path}/addons/TechnoLibre_odoo-code-generator"
|
||||
"${working_path}/addons/TechnoLibre_odoo-code-generator-template"
|
||||
# "${working_path}/addons/OCA_server-tools"
|
||||
"${working_path}/addons.odoo${ODOO_VERSION}/ERPLibre_erplibre_addons"
|
||||
"${working_path}/addons.odoo${ODOO_VERSION}/TechnoLibre_odoo-code-generator"
|
||||
"${working_path}/addons.odoo${ODOO_VERSION}/TechnoLibre_odoo-code-generator-template"
|
||||
# "${working_path}/addons.odoo${ODOO_VERSION}/OCA_server-tools"
|
||||
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ import logging
|
|||
import os
|
||||
from collections import OrderedDict, defaultdict
|
||||
from pathlib import Path
|
||||
from colorama import Fore, Style
|
||||
|
||||
import iscompatible
|
||||
import toml
|
||||
from colorama import Fore, Style
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
|
|||
|
|
@ -3,12 +3,12 @@
|
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
import datetime
|
||||
import logging
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import csv
|
||||
from collections import defaultdict
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
|
|
|||
|
|
@ -10,28 +10,29 @@
|
|||
{
|
||||
"run_test_exec": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_demo_theme_website"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_demo"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_demo_export_helpdesk"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_demo_export_website",
|
||||
"note": "Merge to code_generator_data_test when fix double export data."
|
||||
|
|
@ -39,14 +40,14 @@
|
|||
{
|
||||
"run_test_exec": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_demo_internal_inherit"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_template_demo_internal",
|
||||
"search_class_module": "demo_internal",
|
||||
|
|
@ -55,7 +56,7 @@
|
|||
{
|
||||
"run_test_exec": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_template_demo_portal",
|
||||
"search_class_module": "demo_portal",
|
||||
|
|
@ -63,8 +64,9 @@
|
|||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_template_demo_mariadb_sql_example_1",
|
||||
"search_class_module": "demo_mariadb_sql_example_1",
|
||||
|
|
@ -72,8 +74,9 @@
|
|||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_migrator_demo_mariadb_sql_example_1",
|
||||
"script_after_init_check": "./script/database/restore_mariadb_sql_example_1.sh",
|
||||
|
|
@ -81,8 +84,9 @@
|
|||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_demo_mariadb_sql_example_1",
|
||||
"init_module_name": "code_generator_portal"
|
||||
|
|
@ -90,7 +94,7 @@
|
|||
{
|
||||
"run_test_exec": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_template_demo_internal_inherit",
|
||||
"search_class_module": "demo_internal_inherit",
|
||||
|
|
@ -98,34 +102,37 @@
|
|||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"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_path": "./addons/OCA_server-tools/",
|
||||
"generated_path": "./addons.odoo12.0/OCA_server-tools/",
|
||||
"tested_module": "code_generator_template_demo_sysadmin_cron",
|
||||
"search_class_module": "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,
|
||||
"disable": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_demo_export_website_attachments",
|
||||
"restore_db_image_name": "test_website_attachments"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"disable": true,
|
||||
"test_name": "code_generator_demo_generic_test",
|
||||
"path_module_check": "./addons/TechnoLibre_odoo-code-generator-template",
|
||||
"path_module_check": "./addons.odoo12.0/TechnoLibre_odoo-code-generator-template",
|
||||
"generated_module": "demo_internal,demo_portal",
|
||||
"tested_module": "code_generator_demo_internal,code_generator_demo_portal"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"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",
|
||||
"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",
|
||||
|
|
@ -135,13 +142,13 @@
|
|||
{
|
||||
"run_test_exec": true,
|
||||
"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"
|
||||
},
|
||||
{
|
||||
"run_test_exec": true,
|
||||
"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",
|
||||
"tested_module": "code_generator_auto_backup"
|
||||
}
|
||||
|
|
@ -6,15 +6,15 @@ import argparse
|
|||
import asyncio
|
||||
import configparser
|
||||
import datetime
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
import uuid
|
||||
import json
|
||||
from typing import Tuple
|
||||
from collections import defaultdict
|
||||
from typing import Tuple
|
||||
|
||||
import aioshutil
|
||||
import git
|
||||
|
|
@ -30,8 +30,16 @@ from script import lib_asyncio
|
|||
logging.basicConfig(level=logging.DEBUG)
|
||||
_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"
|
||||
CONFIG_TESTCASE_JSON = "./script/test/config_testcase.json"
|
||||
CONFIG_TESTCASE_JSON = f"./script/test/config_testcase.odoo{ODOO_VERSION}.json"
|
||||
|
||||
|
||||
def get_config():
|
||||
|
|
@ -136,7 +144,12 @@ def extract_result(result, test_name, lst_error, lst_warning):
|
|||
if not is_ignore_warning:
|
||||
lst_warning.append(log_line)
|
||||
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):
|
||||
|
|
@ -319,7 +332,7 @@ async def test_exec(
|
|||
test_name=None,
|
||||
install_path=None,
|
||||
run_in_sandbox=True,
|
||||
restore_db_image_name="erplibre_base",
|
||||
restore_db_image_name="odoo12.0_base",
|
||||
keep_cache=False,
|
||||
coverage=False,
|
||||
) -> Tuple[str, int, str, float]:
|
||||
|
|
@ -422,7 +435,10 @@ async def test_exec(
|
|||
# Update path to change new emplacement
|
||||
s_lst_path_tested_module = (
|
||||
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:
|
||||
|
|
@ -437,6 +453,7 @@ async def test_exec(
|
|||
s_lst_path_tested_module.strip().split("\n")
|
||||
)
|
||||
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)
|
||||
# Copy it
|
||||
if copy_path != parent_dir:
|
||||
|
|
@ -546,7 +563,7 @@ async def test_exec(
|
|||
else:
|
||||
new_hook_line = (
|
||||
hook_line[: first_index + len(f_key)]
|
||||
+ f'"{s_first_path}"\n'
|
||||
+ f'"{s_first_path}"'
|
||||
+ hook_line[index_end_string:]
|
||||
)
|
||||
new_hook_line = new_hook_line.replace(
|
||||
|
|
@ -782,7 +799,7 @@ def check_git_change():
|
|||
task_list = [
|
||||
run_command(
|
||||
"./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=(
|
||||
"Init check_git_change"
|
||||
" TechnoLibre_odoo-code-generator-template"
|
||||
|
|
@ -790,7 +807,7 @@ def check_git_change():
|
|||
),
|
||||
run_command(
|
||||
"./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",
|
||||
),
|
||||
]
|
||||
|
|
@ -826,6 +843,12 @@ def run_all_test(config) -> bool:
|
|||
dct_task = defaultdict(list)
|
||||
dct_task_name = defaultdict(list)
|
||||
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)
|
||||
cb_coroutine = None
|
||||
test_name = None
|
||||
|
|
@ -869,7 +892,7 @@ def run_all_test(config) -> bool:
|
|||
install_path = dct_test.get("install_path")
|
||||
run_in_sandbox = dct_test.get("run_in_sandbox", True)
|
||||
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
|
||||
coverage = config.coverage
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
|
||||
import argparse
|
||||
import logging
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
|
|
|
|||
|
|
@ -469,7 +469,7 @@ class Update:
|
|||
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)
|
||||
return status
|
||||
|
|
@ -701,7 +701,11 @@ def main():
|
|||
|
||||
_logger.info("Validate environment")
|
||||
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()
|
||||
if update.config.install:
|
||||
status = update.install_system()
|
||||
|
|
|
|||
Loading…
Reference in a new issue