Merge branch 'update_poetry'

- Update poetry
- Fix OSX and Ubuntu installation
- Latest version wkhtmltopdf
- More documentation
This commit is contained in:
Mathieu Benoit 2024-12-01 04:58:15 -05:00
commit e96a83f036
20 changed files with 637 additions and 366 deletions

View file

@ -34,6 +34,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- 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 to show evolution module into ERPLibre support Odoo 17 and Odoo 18 - Statistic script to show evolution module into ERPLibre support Odoo 17 and Odoo 18
- Latest version wkhtmltopdf 0.12.6.1-3
### Fixed ### Fixed
@ -41,6 +42,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- Improve python code writer efficience - Improve python code writer efficience
- Config generator supporting space into ERPLibre directory - Config generator supporting space into ERPLibre directory
- Script to update Poetry support @ URL - Script to update Poetry support @ URL
- OSX and recent Ubuntu installation
## [1.5.0] - 2023-07-07 ## [1.5.0] - 2023-07-07

View file

@ -2,7 +2,7 @@
ERPLibre is a CRM/ERP platform including automated installation, maintenance, and development of open source modules of ERPLibre is a CRM/ERP platform including automated installation, maintenance, and development of open source modules of
the Odoo community version. It is a "soft-fork" of the Odoo Community Edition (OCE), meaning it aims at contributing back the Odoo community version. It is a "soft-fork" of the Odoo Community Edition (OCE), meaning it aims at contributing back
upstream. upstream.
It is based on a set of production-ready modules, supported by the Odoo Community Association (OCA) and an It is based on a set of production-ready modules, supported by the Odoo Community Association (OCA) and an
ecosystem of specialized companies. This solution ensures digital sovereignty in a local environment while integrating ecosystem of specialized companies. This solution ensures digital sovereignty in a local environment while integrating
pre-trained Generative Transformers (GPT), bringing an additional dimension to data management and automation. pre-trained Generative Transformers (GPT), bringing an additional dimension to data management and automation.
@ -17,7 +17,7 @@ Select a guide to install your environment.
This has been tested in Debian 12 and Ubuntu 24.04 LTS. This has been tested in Debian 12 and Ubuntu 24.04 LTS.
**Note** : This is meant for a test environment, on a local network or similar environment not directly exposed to the Internet. **Note** : This is meant for a test environment, on a local network or similar environment not directly exposed to the Internet.
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```
@ -59,6 +59,7 @@ cd ERPLibre
Support Ubuntu 20.04, 22.04, 24.04 and OSX. The installation duration is more than 30 minutes. Support Ubuntu 20.04, 22.04, 24.04 and OSX. The installation duration is more than 30 minutes.
```bash ```bash
make install_os
make install_odoo_16 make install_odoo_16
``` ```

View file

@ -286,3 +286,10 @@ Use [prettier](https://github.com/prettier/prettier)
```bash ```bash
./script/maintenance/prettier.sh --tab-width 4 ./addons/TechnoLibre_odoo-code-generator ./script/maintenance/prettier.sh --tab-width 4 ./addons/TechnoLibre_odoo-code-generator
``` ```
# Pre-commit
You can install pre-commit to auto-format and check lint with OCA configuration. This
will run before commit with git.
Check https://github.com/OCA/maintainer-tools/wiki/Install-pre-commit

View file

@ -117,7 +117,7 @@
<project name="product-pack.git" path="addons.odoo14.0/OCA_product-pack" remote="OCA" groups="addons"/> <project name="product-pack.git" path="addons.odoo14.0/OCA_product-pack" remote="OCA" groups="addons"/>
<project name="product-variant.git" path="addons.odoo14.0/OCA_product-variant" remote="OCA" groups="addons"/> <project name="product-variant.git" path="addons.odoo14.0/OCA_product-variant" remote="OCA" groups="addons"/>
<project name="project-reporting.git" path="addons.odoo14.0/OCA_project-reporting" remote="OCA" groups="addons"/> <project name="project-reporting.git" path="addons.odoo14.0/OCA_project-reporting" remote="OCA" groups="addons"/>
<project name="project-agile.git" path="addons.odoo14.0/OCA_project-agile" remote="OCA" groups="addons"/> <project name="project-agile.git" path="addons.odoo14.0/OCA_project-agile" remote="ERPLibre" revision="14.0_dev" groups="addons"/>
<project name="project.git" path="addons.odoo14.0/OCA_project" remote="OCA" groups="addons"/> <project name="project.git" path="addons.odoo14.0/OCA_project" remote="OCA" groups="addons"/>
<project name="purchase-workflow.git" path="addons.odoo14.0/OCA_purchase-workflow" remote="OCA" groups="addons"/> <project name="purchase-workflow.git" path="addons.odoo14.0/OCA_purchase-workflow" remote="OCA" groups="addons"/>
<project name="queue.git" path="addons.odoo14.0/OCA_queue" remote="OCA" groups="addons"/> <project name="queue.git" path="addons.odoo14.0/OCA_queue" remote="OCA" groups="addons"/>
@ -133,6 +133,7 @@
<project name="server-tools.git" path="addons.odoo14.0/OCA_server-tools" remote="ERPLibre" revision="14.0_dev" groups="addons"/> <project name="server-tools.git" path="addons.odoo14.0/OCA_server-tools" remote="ERPLibre" revision="14.0_dev" groups="addons"/>
<project name="server-ux.git" path="addons.odoo14.0/OCA_server-ux" remote="OCA" groups="addons"/> <project name="server-ux.git" path="addons.odoo14.0/OCA_server-ux" remote="OCA" groups="addons"/>
<project name="social.git" path="addons.odoo14.0/OCA_social" remote="ERPLibre" revision="14.0_dev" groups="addons"/> <project name="social.git" path="addons.odoo14.0/OCA_social" remote="ERPLibre" revision="14.0_dev" groups="addons"/>
<project name="survey.git" path="addons.odoo14.0/OCA_survey" remote="OCA" groups="addons"/>
<project name="stock-logistics-warehouse.git" path="addons.odoo14.0/OCA_stock-logistics-warehouse" remote="OCA" groups="addons"/> <project name="stock-logistics-warehouse.git" path="addons.odoo14.0/OCA_stock-logistics-warehouse" remote="OCA" groups="addons"/>
<project name="storage.git" path="addons.odoo14.0/OCA_storage" remote="OCA" groups="addons"/> <project name="storage.git" path="addons.odoo14.0/OCA_storage" remote="OCA" groups="addons"/>
<project name="timesheet.git" path="addons.odoo14.0/OCA_timesheet" remote="OCA" groups="addons"/> <project name="timesheet.git" path="addons.odoo14.0/OCA_timesheet" remote="OCA" groups="addons"/>

View file

@ -2,7 +2,7 @@
<manifest> <manifest>
<remote name="CybroOdoo" fetch="https://github.com/CybroOdoo/"/> <remote name="CybroOdoo" fetch="https://github.com/CybroOdoo/"/>
<remote name="ERPLibre" fetch="https://github.com/ERPLibre/"/> <remote name="ERPLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="MathBenTech" fetch="https://github.com/MathBenTech/"/> <remote name="MathBenTech" fetch="https://github.com/ERPLibre/"/>
<remote name="Numigi" fetch="https://github.com/Numigi/"/> <remote name="Numigi" fetch="https://github.com/Numigi/"/>
<remote name="OCA" fetch="https://github.com/OCA/"/> <remote name="OCA" fetch="https://github.com/OCA/"/>
<remote name="OmniaGit" fetch="https://github.com/OmniaGit/"/> <remote name="OmniaGit" fetch="https://github.com/OmniaGit/"/>
@ -82,6 +82,7 @@
<project name="mis-builder.git" path="addons.odoo16.0/OCA_mis-builder" remote="OCA" groups="addons"/> <project name="mis-builder.git" path="addons.odoo16.0/OCA_mis-builder" remote="OCA" groups="addons"/>
<project name="multi-company.git" path="addons.odoo16.0/OCA_multi-company" remote="OCA" groups="addons"/> <project name="multi-company.git" path="addons.odoo16.0/OCA_multi-company" remote="OCA" groups="addons"/>
<project name="muk_web.git" path="addons.odoo16.0/muk-it_muk_web" remote="muk-it" groups="addons"/> <project name="muk_web.git" path="addons.odoo16.0/muk-it_muk_web" remote="muk-it" groups="addons"/>
<project name="odoo-business-spending-management-quebec-canada.git" path="addons.odoo16.0/MathBenTech_odoo-business-spending-management-quebec-canada" remote="MathBenTech" groups="addons,base"/>
<project name="odoo-cloud-platform.git" path="addons.odoo16.0/camptocamp_odoo-cloud-platform" remote="camptocamp" groups="addons"/> <project name="odoo-cloud-platform.git" path="addons.odoo16.0/camptocamp_odoo-cloud-platform" remote="camptocamp" groups="addons"/>
<project name="odoo-formio.git" path="addons.odoo16.0/novacode-nl_odoo-formio" remote="novacode-nl" groups="addons"/> <project name="odoo-formio.git" path="addons.odoo16.0/novacode-nl_odoo-formio" remote="novacode-nl" groups="addons"/>
<project name="odoo-module-migrator.git" path="script/OCA_odoo-module-migrator" remote="OCA" revision="master" groups="odoo"/> <project name="odoo-module-migrator.git" path="script/OCA_odoo-module-migrator" remote="OCA" revision="master" groups="odoo"/>
@ -114,7 +115,7 @@
<project name="server-tools.git" path="addons.odoo16.0/OCA_server-tools" remote="ERPLibre" revision="ERPLibre/16.0" groups="addons"/> <project name="server-tools.git" path="addons.odoo16.0/OCA_server-tools" remote="ERPLibre" revision="ERPLibre/16.0" groups="addons"/>
<project name="server-ux.git" path="addons.odoo16.0/OCA_server-ux" remote="OCA" groups="addons"/> <project name="server-ux.git" path="addons.odoo16.0/OCA_server-ux" remote="OCA" groups="addons"/>
<project name="social.git" path="addons.odoo16.0/OCA_social" remote="OCA" groups="addons"/> <project name="social.git" path="addons.odoo16.0/OCA_social" remote="OCA" groups="addons"/>
<project name="survey.git" path="addons.odoo16.0/OCA_survey" remote="ERPLibre" revision="16.0_survey_odoo_debranding" groups="addons"/> <project name="survey.git" path="addons.odoo16.0/OCA_survey" remote="ERPLibre" revision="16.0_dev" groups="addons"/>
<project name="stock-logistics-warehouse.git" path="addons.odoo16.0/OCA_stock-logistics-warehouse" remote="OCA" groups="addons"/> <project name="stock-logistics-warehouse.git" path="addons.odoo16.0/OCA_stock-logistics-warehouse" remote="OCA" groups="addons"/>
<project name="storage.git" path="addons.odoo16.0/OCA_storage" remote="OCA" groups="addons"/> <project name="storage.git" path="addons.odoo16.0/OCA_storage" remote="OCA" groups="addons"/>
<project name="timesheet.git" path="addons.odoo16.0/OCA_timesheet" remote="OCA" groups="addons"/> <project name="timesheet.git" path="addons.odoo16.0/OCA_timesheet" remote="OCA" groups="addons"/>

File diff suppressed because it is too large Load diff

View file

@ -24,7 +24,7 @@ argcomplete = "^3.5.1"
asana = "^5.0.10" asana = "^5.0.10"
asn1crypto = "^1.5.1" asn1crypto = "^1.5.1"
astor = "^0.8.1" astor = "^0.8.1"
avalara = "^24.10.0" avalara = "^24.11.2"
azure-identity = "1.13.0" azure-identity = "1.13.0"
azure-storage-blob = "12.16.0" azure-storage-blob = "12.16.0"
babel = "2.9.1" babel = "2.9.1"
@ -38,7 +38,7 @@ cairosvg = "^2.7.1"
chardet = "4.0.0" chardet = "4.0.0"
clicksend-client = "^5.0.78" clicksend-client = "^5.0.78"
cloudflare = "^3.1.0" cloudflare = "^3.1.0"
cmake = "^3.30.5" cmake = "^3.31.1"
colorama = "^0.4.6" colorama = "^0.4.6"
countryinfo = "^0.1.2" countryinfo = "^0.1.2"
cryptography = "3.4.8" cryptography = "3.4.8"
@ -52,7 +52,7 @@ dropbox = "^12.0.2"
ebaysdk = "2.1.5" ebaysdk = "2.1.5"
email-validator = "^2.2.0" email-validator = "^2.2.0"
endesive = "^2.17.3" endesive = "^2.17.3"
extract-msg = "^0.51.1" extract-msg = "^0.52.0"
ezdxf = "^1.3.4" ezdxf = "^1.3.4"
face-recognition = "^1.3.0" face-recognition = "^1.3.0"
factur-x = "^3.1" factur-x = "^3.1"
@ -69,9 +69,9 @@ gitpython = "3.1.30"
giturlparse = "^0.12.0" giturlparse = "^0.12.0"
googletrans-py = "4.0.0" googletrans-py = "4.0.0"
greenlet = "1.1.2" greenlet = "1.1.2"
gst = "^0.1.0" gst = "^0.1.2"
httpagentparser = "1.8.1" httpagentparser = "1.8.1"
hubspot-api-client = "^10.0.0" hubspot-api-client = "10.0.0"
idna = "2.10" idna = "2.10"
iscompatible = "^0.1.1" iscompatible = "^0.1.1"
jinja2 = "2.11.3" jinja2 = "2.11.3"
@ -80,25 +80,25 @@ libsass = "0.20.1"
linkedin = "^0.1.5" linkedin = "^0.1.5"
lottie = "^0.7.1" lottie = "^0.7.1"
lxml = "4.6.5" lxml = "4.6.5"
lxml-html-clean = "^0.3.1" lxml-html-clean = "^0.4.1"
mako = "^1.3.5" mako = "^1.3.6"
markupsafe = "1.1.1" markupsafe = "1.1.1"
matplotlib = "^3.9.2" matplotlib = "^3.9.2"
mechanize = "^0.4.10" mechanize = "^0.4.10"
messagebird = "^2.2.0" messagebird = "^2.2.0"
mock = "^5.1.0" mock = "^5.1.0"
mpld3 = "0.5.9" mpld3 = "0.5.9"
mysqlclient = "^2.2.5" mysqlclient = "^2.2.6"
nextcloud-api-wrapper = "^0.2.3" nextcloud-api-wrapper = "^0.2.3"
num2words = "0.5.13" num2words = "0.5.13"
numpy = ">=1.15" numpy = ">=1.15"
numpy-financial = "<=1.0.0" numpy-financial = "<=1.0.0"
numpy-stl = "^3.1.2" numpy-stl = "^3.2.0"
odoo-test-helper = "^2.1.1" odoo-test-helper = "^2.1.1"
odoorpc = "^0.10.1" odoorpc = "^0.10.1"
ofxparse = "0.21" ofxparse = "0.21"
ofxtools = "^0.9.5" ofxtools = "^0.9.5"
openai = "^1.52.0" openai = "^1.55.2"
opencv-python = "^4.10.0.84" opencv-python = "^4.10.0.84"
openpyxl = "^3.1.5" openpyxl = "^3.1.5"
pandas = ">=0.25.3" pandas = ">=0.25.3"
@ -107,10 +107,12 @@ passlib = "1.7.4"
pathspec = "^0.12.1" pathspec = "^0.12.1"
pay-ccavenue = "^1.0.0" pay-ccavenue = "^1.0.0"
pdf2image = "^1.17.0" pdf2image = "^1.17.0"
phonenumbers = "^8.13.47" pdfminer = "^20191125"
phonenumbers = "^8.13.50"
pillow = "9.0.1" pillow = "9.0.1"
plotly = "5.13.1" plotly = "5.13.1"
polib = "1.1.0" polib = "1.1.0"
pre-commit = "^4.0.1"
premailer = "^3.10.0" premailer = "^3.10.0"
printnodeapi = "^0.2.0" printnodeapi = "^0.2.0"
prometheus-client = "0.15.0" prometheus-client = "0.15.0"
@ -122,12 +124,12 @@ py3o-formats = "^0.3"
py3o-template = "^0.10.0" py3o-template = "^0.10.0"
pyaudio = "^0.2.14" pyaudio = "^0.2.14"
pycountry = "^24.6.1" pycountry = "^24.6.1"
pydifact = "^0.1.7" pydifact = "^0.1.8"
pydot = "1.4.2" pydot = "1.4.2"
pyfcm = "^2.0.7" pyfcm = "^2.0.7"
pygithub = "^2.4.0" pygithub = "^2.5.0"
pygobject = "3.44.1" pygobject = "3.44.1"
pyjwt = "^2.9.0" pyjwt = "^2.10.1"
pymssql = "<=2.2.5" pymssql = "<=2.2.5"
pyncclient = "^0.7" pyncclient = "^0.7"
pyopenssl = "20.0.1" pyopenssl = "20.0.1"
@ -148,7 +150,7 @@ python-resize-image = "^1.1.20"
python-slugify = "^8.0.4" python-slugify = "^8.0.4"
python-stdnum = "1.16" python-stdnum = "1.16"
python-swiftclient = "4.1.0" python-swiftclient = "4.1.0"
python-telegram-bot = "^21.6" python-telegram-bot = "^21.7"
pytz = "^2024.2" pytz = "^2024.2"
pyusb = "1.0.2" pyusb = "1.0.2"
pyyaml = "6.0" pyyaml = "6.0"
@ -164,7 +166,7 @@ retrying = "^1.3.4"
rl-renderpm = "4.0.3" rl-renderpm = "4.0.3"
roulier = "^1.1.1" roulier = "^1.1.1"
schwifty = "2024.4.0" schwifty = "2024.4.0"
selenium = "^4.25.0" selenium = "^4.27.1"
sentry-sdk = "<=1.9.0" sentry-sdk = "<=1.9.0"
shapely = "^2.0.6" shapely = "^2.0.6"
simplejson = "^3.19.3" simplejson = "^3.19.3"
@ -172,21 +174,22 @@ spacy = "^3.8.2"
speechrecognition = "3.10.0" speechrecognition = "3.10.0"
sqlalchemy = "^2.0.36" sqlalchemy = "^2.0.36"
statsd = "4.0.1" statsd = "4.0.1"
telesign = "^2.2.3" telesign = "^2.2.5"
telnyx = "^2.1.3" telnyx = "^2.1.3"
todoist-python = "^8.1.4" todoist-python = "^8.1.4"
toml = "^0.10.2" toml = "^0.10.2"
tweepy = "^4.14.0" tweepy = "^4.14.0"
twilio = "^9.3.4" twilio = "^9.3.7"
unidecode = "^1.3.8" unidecode = "^1.3.8"
unidiff = "^0.7.5" unidiff = "^0.7.5"
urllib3 = "1.26.5" urllib3 = "1.26.5"
uvloop = "^0.21.0" uvloop = "^0.21.0"
validate-email = "^1.3" validate-email = "^1.3"
vobject = "0.9.6.1" vobject = "0.9.6.1"
vonage = "^3.17.1" vonage = "^4.0.0"
vonage-verify-v2 = "1.1.4"
werkzeug = "2.0.2" werkzeug = "2.0.2"
wheel = "^0.44.0" wheel = "^0.45.1"
xlrd = "1.2.0" xlrd = "1.2.0"
xlsxwriter = "1.4.5" xlsxwriter = "1.4.5"
xlwt = "1.3.0" xlwt = "1.3.0"

View file

@ -16,6 +16,7 @@ cloudflare
selenium selenium
# mmg # depend on weasyprint 59.0 and depend on old version pillow 9.0.1 # mmg # depend on weasyprint 59.0 and depend on old version pillow 9.0.1
uvloop uvloop
python-randomword-fr
# For OSX # For OSX
cython cython
@ -45,6 +46,7 @@ PyPDF2
# For logical test and quality # For logical test and quality
git+https://github.com/psf/black.git@24.8.0 git+https://github.com/psf/black.git@24.8.0
pre-commit
# For python 3.10 from odoo/requirements.txt, poetry_update.py cannot support python_version # For python 3.10 from odoo/requirements.txt, poetry_update.py cannot support python_version
cryptography==3.4.8 cryptography==3.4.8
@ -72,3 +74,12 @@ xlrd==1.2.0
# Force python 3.10 over odoo/requirements.txt to remove warning # Force python 3.10 over odoo/requirements.txt to remove warning
num2words==0.5.13 num2words==0.5.13
xlsxwriter==1.4.5 xlsxwriter==1.4.5
# Fix vonage package depend on vonage-verify-v2 1.1.3, but not exist into pip
vonage-verify-v2==1.1.4
# Fix poetry
hubspot-api-client==10.0.0
# Optional Odoo
pdfminer

View file

@ -119,9 +119,7 @@ def search_and_replace(
# new_file_content = ( # new_file_content = (
# f'{f_lines[:t_index_second_quote]}"{models_name}"{f_lines[t_index_third_quote + len(second_char):]}' # f'{f_lines[:t_index_second_quote]}"{models_name}"{f_lines[t_index_third_quote + len(second_char):]}'
# ) # )
new_file_content = ( new_file_content = f'{f_lines[:t_index_second_quote]}"{models_name}"{f_lines[t_index_third_quote + len(second_char):]}'
f'{f_lines[:t_index_second_quote]}"{models_name}"{f_lines[t_index_third_quote + len(second_char):]}'
)
return new_file_content return new_file_content

View file

@ -240,7 +240,10 @@ def main():
# not finish to empty the queue # not finish to empty the queue
if dct_depend_image: if dct_depend_image:
_logger.info("Missing dependencies, auto-run all image generation for last execution") _logger.info(
"Missing dependencies, auto-run all image generation for last"
" execution"
)
for depend_image, lst_module in dct_depend_image.items(): for depend_image, lst_module in dct_depend_image.items():
lst_queue_parallel.append(lst_module) lst_queue_parallel.append(lst_module)
# print command to execute # print command to execute

View file

@ -0,0 +1,28 @@
#!/bin/bash
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
datetime=$(date +%Y-%m-%d_%H-%M-%S)
backup_dir="backup_$datetime"
mkdir -p "$backup_dir"
for dir in */; do
if [ -d "$dir/addons/addons" ]; then
mkdir -p "$backup_dir/$dir"
# Support when addons is a symlink, copy the target directory
if [ -L "$dir/addons/addons" ]; then
source_dir=$(readlink -f "$dir/addons/addons")
else
source_dir="$dir/addons/addons"
fi
echo $source_dir
# Copy directory of addons
cp -r "$source_dir" "$backup_dir/$dir/addons"
# Copy docker-compose.yml
cp "$dir/docker-compose.yml" "$backup_dir/$dir/"
fi
done

View file

@ -0,0 +1,11 @@
#!/bin/bash
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
for dir in */; do
if [ -d "$dir/addons/addons" ]; then
echo "Directory : $dir"
find "$dir/addons/addons" -type f -print
fi
done

View file

@ -28,6 +28,16 @@ def get_config():
When auto_sync is enable: When auto_sync is enable:
Check zone and name on cloudflare and compare with public ip, update all old ip with new ip if different. Check zone and name on cloudflare and compare with public ip, update all old ip with new ip if different.
You need your profile in file ~/.cloudflare/cloudflare.cfg You need your profile in file ~/.cloudflare/cloudflare.cfg
Example:
[profil_name]
email=email@email.com
token=TOKEN
Configure locally a crontab and adapt it, crontab -e, specify an existing DNS
Example each 5 minutes:
*/5 * * * * USERNAME cd /home/USERNAME/ERPLibre && ./script/deployment/update_dns_cloudflare.py --profile profil_name --zone_name example.com --dns_name example.com --auto_sync
Example each minute:
* * * * * USERNAME cd /home/USERNAME/ERPLibre && ./script/deployment/update_dns_cloudflare.py --profile profil_name --zone_name example.com --dns_name example.com --auto_sync
""", """,
epilog="""\ epilog="""\
""", """,

View file

@ -91,9 +91,9 @@ def edit_text(config):
if is_find: if is_find:
key = "image:" key = "image:"
value = lst_docker_info[i] value = lst_docker_info[i]
lst_docker_info[ lst_docker_info[i] = (
i f"{value[:value.find(key) + len(key)]} {config.prod_version}\n"
] = f"{value[:value.find(key) + len(key)]} {config.prod_version}\n" )
break break
if "ERPLibre" in docker_info: if "ERPLibre" in docker_info:
is_find = True is_find = True

View file

@ -13,9 +13,13 @@ EL_USER=${USER}
# Install PostgreSQL Server # Install PostgreSQL Server
#-------------------------------------------------- #--------------------------------------------------
echo "\n---- Install PostgreSQL Server ----" echo "\n---- Install PostgreSQL Server ----"
brew install postgresql@15 if which psql >/dev/null 2>&1; then
brew install postgis echo "postgresql is already installed, skipping"
brew services start postgresql@15 else
brew install postgresql@15
brew install postgis
brew services start postgresql@15
fi
echo "\n---- Creating the ERPLibre PostgreSQL User ----" echo "\n---- Creating the ERPLibre PostgreSQL User ----"
sudo su - postgres -c "createuser -s ${EL_USER}" 2> /dev/null || true sudo su - postgres -c "createuser -s ${EL_USER}" 2> /dev/null || true
@ -25,6 +29,7 @@ sudo su - postgres -c "CREATE EXTENSION postgis;\nCREATE EXTENSION postgis_topol
# Install Dependencies # Install Dependencies
#-------------------------------------------------- #--------------------------------------------------
echo "\n--- Installing Python 3 + pip3 --" echo "\n--- Installing Python 3 + pip3 --"
#TODO is python@3.7 line here still usefull?? Should we get rid of it?
brew install git python@3.7 wget parallel mariadb brew install git python@3.7 wget parallel mariadb
brew link git brew link git
brew link wget brew link wget

View file

@ -12,18 +12,23 @@ EL_USER=${USER}
## https://github.com/odoo/odoo/wiki/Wkhtmltopdf ): ## https://github.com/odoo/odoo/wiki/Wkhtmltopdf ):
# Ubuntu 20.04 # Ubuntu 20.04
UBUNTU_VERSION=$(lsb_release -rs) UBUNTU_VERSION=$(lsb_release -rs)
DEBIAN_VERSION=$(lsb_release -cs)
OS=$(lsb_release -si) OS=$(lsb_release -si)
if [ "20.04" == "${UBUNTU_VERSION}" ]; then if [ "24.04" == "${UBUNTU_VERSION}" ] || [ "24.10" == "${UBUNTU_VERSION}" ] || [ "23.10" == "${UBUNTU_VERSION}" ] || [ "23.04" == "${UBUNTU_VERSION}" ] || [ "22.10" == "${UBUNTU_VERSION}" ] || [ "22.04" == "${UBUNTU_VERSION}" ]; then
WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb
elif [ "20.04" == "${UBUNTU_VERSION}" ]; then
WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
elif [ "22.04" == "${UBUNTU_VERSION}" ]; then
WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
elif [ "18.04" == "${UBUNTU_VERSION}" ]; then elif [ "18.04" == "${UBUNTU_VERSION}" ]; then
WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb
elif [[ "${OS}" == "Debian" ]]; then elif [[ "${OS}" == "Debian" ]]; then
WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.bullseye_amd64.deb if [ "bookworm" == "${DEBIAN_VERSION}" ]; then
WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
else
WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bullseye_amd64.deb
fi
elif [[ "${OS}" == *"Ubuntu"* ]]; then elif [[ "${OS}" == *"Ubuntu"* ]]; then
echo "Your version of Ubuntu is not supported, only support 18.04, 20.04 and 22.04" echo "Your version of Ubuntu is not supported, only support 18.04, 20.04 and 22.04"
WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb
else else
echo "Your version of Ubuntu is not supported, only support 18.04, 20.04 and 22.04" echo "Your version of Ubuntu is not supported, only support 18.04, 20.04 and 22.04"
exit 1 exit 1

View file

@ -106,7 +106,10 @@ if [[ ! -f ${VENV_REPO_PATH} ]]; then
fi fi
# Make .venv active # Make .venv active
if [[ "${OSTYPE}" == "darwin"* ]]; then
echo -e "=======>source .venv/bin/activate here!!! <==============="
source .venv/bin/activate
fi
echo -e "\n---- Installing poetry dependency ----" echo -e "\n---- Installing poetry dependency ----"
${VENV_PATH}/bin/pip install --upgrade pip ${VENV_PATH}/bin/pip install --upgrade pip
# Force python instead of changing env # Force python instead of changing env

View file

@ -67,6 +67,7 @@ def get_lst_requirements_txt():
def get_lst_manifest_py(): def get_lst_manifest_py():
return get_file_from_glob("__manifest__.py") return get_file_from_glob("__manifest__.py")
def get_file_from_glob(glob_txt): def get_file_from_glob(glob_txt):
with open(".odoo-version") as txt: with open(".odoo-version") as txt:
odoo_version = txt.read() odoo_version = txt.read()
@ -77,7 +78,9 @@ def get_file_from_glob(glob_txt):
a_dirname = os.path.dirname(a) a_dirname = os.path.dirname(a)
if a_dirname.startswith(".repo/") or a_dirname.startswith(".venv"): if a_dirname.startswith(".repo/") or a_dirname.startswith(".venv"):
continue continue
if a_dirname.startswith("addons") and not a_dirname.startswith(f"addons.odoo{odoo_version}"): if a_dirname.startswith("addons") and not a_dirname.startswith(
f"addons.odoo{odoo_version}"
):
continue continue
lst_v.append(a) lst_v.append(a)
return lst_v return lst_v

View file

@ -38,13 +38,13 @@ def run(config, selenium_tool):
try: try:
connexion_button = selenium_tool.driver.find_element( connexion_button = selenium_tool.driver.find_element(
By.XPATH, By.XPATH,
"/html/body/div/div/div/form/div[3]/button" "/html/body/div/div/div/form/div[3]/button",
# '//button[contains(text(), "Log in")]' # '//button[contains(text(), "Log in")]'
) )
except Exception: except Exception:
connexion_button = selenium_tool.driver.find_element( connexion_button = selenium_tool.driver.find_element(
By.XPATH, By.XPATH,
"/html/body/div/main/div/form/div[3]/button" "/html/body/div/main/div/form/div[3]/button",
# '//button[contains(text(), "Connexion")]' # '//button[contains(text(), "Connexion")]'
) )

View file

@ -423,18 +423,16 @@ class Update:
os.rename(addons_path, addons_path + "TEMP") os.rename(addons_path, addons_path + "TEMP")
# TODO need to be force if installation path is all good, return True # TODO need to be force if installation path is all good, return True
if self.config.is_in_installation: if self.config.install_dev:
_logger.info("Installation.") _logger.info("Installation.")
status = self.install_erplibre( status = self.install_erplibre()
install_system=self.config.install,
install_dev=self.config.install_dev,
)
# Re-update if launch installation # Re-update if launch installation
self._update_directory_to_link( if self.config.install_dev:
VENV_FILE, self.expected_venv_name self._update_directory_to_link(
) VENV_FILE, self.expected_venv_name
# self._update_directory_to_link(ADDONS_PATH, self.expected_addons_name) )
# self._update_directory_to_link(ADDONS_PATH, self.expected_addons_name)
elif self.config.is_in_switch: elif self.config.is_in_switch:
_logger.info("Switch") _logger.info("Switch")
self.execute_log.append(f"System update") self.execute_log.append(f"System update")
@ -485,17 +483,18 @@ class Update:
pycharm_is_installed = os.path.exists(".idea") pycharm_is_installed = os.path.exists(".idea")
if not pycharm_is_installed or not self.execute_log: if not pycharm_is_installed or not self.execute_log:
return return
os.system("./.venv/bin/python ./script/ide/pycharm_configuration.py --init") os.system(
"./.venv/bin/python ./script/ide/pycharm_configuration.py --init"
)
def install_erplibre(self, install_system=False, install_dev=False): def install_erplibre(self):
status = 0 self.execute_log.append(f"Dev installation")
status = os.system("./script/install/install_locally_dev.sh")
return status
if install_system: def install_system(self):
self.execute_log.append(f"System installation") self.execute_log.append(f"System installation")
status = os.system("./script/install/install_dev.sh") status = os.system("./script/install/install_dev.sh")
if install_dev and not status:
self.execute_log.append(f"Dev installation")
status = os.system("./script/install/install_locally_dev.sh")
return status return status
def update_link_file( def update_link_file(
@ -688,12 +687,20 @@ def main():
update.validate_version() update.validate_version()
_logger.info("Validate environment") _logger.info("Validate environment")
status = update.validate_environment() status = 0
if update.config.force_install or not status: if update.config.install_dev or update.config.is_in_switch:
status = update.validate_environment()
if update.config.install:
status = update.install_system()
if (
update.config.force_install
or update.config.install_dev
or update.config.is_in_switch
) and not status:
update.update_environment() update.update_environment()
update.print_log() update.print_log()
if update.config.is_in_installation: if update.config.install_dev:
# Update pycharm configuration # Update pycharm configuration
update.pycharm_update() update.pycharm_update()