Merge branch 'support_multi_odoo'

- Support Odoo 12, Odoo 14 and Odoo 16
- Windows installation doc upgrade
- Fix Selenium installation
- Refresh licence TechnoLibre
- More documentation
- Update stat evolution module
This commit is contained in:
Mathieu Benoit 2024-11-02 02:26:10 -04:00
commit e47edc2879
107 changed files with 26081 additions and 1774 deletions

17
.gitignore vendored
View file

@ -3,7 +3,7 @@
*.tmp *.tmp
*.bak *.bak
.idea .idea
.venv .venv*
*.log *.log
config.conf config.conf
*.DS_Store *.DS_Store
@ -12,9 +12,12 @@ config.conf
coverage* coverage*
.repo .repo
addons
!addons/ !addons/
addons/* addons/*
addons*/*
!script/addons !script/addons
addons.*
doc/itpp* doc/itpp*
doc/odoo* doc/odoo*
script/OCA* script/OCA*
@ -26,3 +29,15 @@ wkhtmltox*
cache cache
node_modules node_modules
docker-compose.override.yml docker-compose.override.yml
# Generated by ERPLibre
manifest/default.dev.xml
poetry.lock
pyproject.toml
.erplibre-semver-version
.erplibre-version
.odoo-version
.poetry-version
.python-version
requirements.txt
requirement/ignore_requirements.txt

View file

@ -1 +0,0 @@
3.7.16

369
Makefile
View file

@ -67,6 +67,13 @@ run_parallel_cg_template:
run_parallel_cg_migrator: run_parallel_cg_migrator:
parallel < ./conf/list_cg_migrator_test.txt parallel < ./conf/list_cg_migrator_test.txt
############
# VERSION #
############
.PHONY: version
version:
./script/version/update_env_version.py
############# #############
# INSTALL # # INSTALL #
############# #############
@ -75,12 +82,64 @@ install:install_os install_dev
.PHONY: install_dev .PHONY: install_dev
install_dev: install_dev:
./script/install/install_locally_dev.sh # ./script/version/update_env_version.py
# ./script/install/install_locally_dev.sh
./script/version/update_env_version.py --install_dev
.PHONY: install_odoo_16
install_odoo_16:
./script/version/update_env_version.py --erplibre_version odoo16.0_python3.10.14 --install_dev
.PHONY: switch_odoo_16
switch_odoo_16:
./script/version/update_env_version.py --erplibre_version odoo16.0_python3.10.14 --switch
./script/make.sh config_gen_all
.PHONY: install_odoo_14
install_odoo_14:
./script/version/update_env_version.py --erplibre_version odoo14.0_python3.8.20 --install_dev
.PHONY: switch_odoo_14
switch_odoo_14:
./script/version/update_env_version.py --erplibre_version odoo14.0_python3.8.20 --switch
./script/make.sh config_gen_all
.PHONY: install_odoo_12
install_odoo_12:
./script/version/update_env_version.py --erplibre_version odoo12.0_python3.7.17 --install_dev
.PHONY: switch_odoo_12
switch_odoo_12:
./script/version/update_env_version.py --erplibre_version odoo12.0_python3.7.17 --switch
./script/make.sh config_gen_all
.PHONY: install_odoo_all_version
install_odoo_all_version:
./script/make.sh install_odoo_12
./script/make.sh install_odoo_14
./script/make.sh install_odoo_16
.PHONY: install_odoo_all_version_dev
install_odoo_all_version_dev:
echo "Open Pycharm, close it before install Odoo and reopen at the end"
pycharm .
./script/make.sh install_odoo_12
./script/make.sh install_odoo_14
./script/make.sh install_odoo_16
#.PHONY: install_update_odoo
#install_update_odoo:
# ./script/version/update_env_version.py --install_dev --update_addons
.PHONY: install_show_version
install_show_version:
./script/version/update_env_version.py -l
# Install this for the first time of dev environment # Install this for the first time of dev environment
.PHONY: install_os .PHONY: install_os
install_os: install_os:
./script/install/install_dev.sh #./script/install/install_dev.sh
./script/version/update_env_version.py --install
.PHONY: install_production .PHONY: install_production
install_production: install_production:
@ -95,6 +154,13 @@ install_docker_debian:
install_docker_ubuntu: install_docker_ubuntu:
./script/install/install_ubuntu_docker.sh ./script/install/install_ubuntu_docker.sh
###################
# Environnement #
###################
.PHONY: pyenv_update
pyenv_update:
~/.pyenv/bin/pyenv update
##################### #####################
# DB installation # # DB installation #
##################### #####################
@ -161,14 +227,6 @@ db_restore_prod_client:
db_restore_erplibre_base_db_test_image_test: db_restore_erplibre_base_db_test_image_test:
./script/database/db_restore.py --database test --image test ./script/database/db_restore.py --database test --image test
.PHONY: db_restore_erplibre_base_db_test2
db_restore_erplibre_base_db_test2:
./script/database/db_restore.py --database test2
.PHONY: db_restore_erplibre_base_db_test3
db_restore_erplibre_base_db_test3:
./script/database/db_restore.py --database test3
.PHONY: db_restore_erplibre_website_db_test .PHONY: db_restore_erplibre_website_db_test
db_restore_erplibre_website_db_test: db_restore_erplibre_website_db_test:
./script/database/db_restore.py --database test --image erplibre_website ./script/database/db_restore.py --database test --image erplibre_website
@ -217,52 +275,6 @@ db_test_re_export_website_attachments:
######################## ########################
# Image installation # # Image installation #
######################## ########################
.PHONY: image_db_create_erplibre_base
image_db_create_erplibre_base:
.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_base
.venv/bin/python3 ./odoo/odoo-bin db --create --database image_creation_erplibre_base
./script/addons/install_addons_from_file.sh image_creation_erplibre_base ./conf/module_list_image_erplibre_base.txt
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_base --restore_image erplibre_base
.PHONY: image_db_create_erplibre_website
image_db_create_erplibre_website:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_website
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_website
./script/addons/install_addons.sh image_creation_erplibre_website website,erplibre_website_snippets_basic_html,erplibre_website_snippets_cards,erplibre_website_snippets_structures,erplibre_website_snippets_timelines,website_form_builder,muk_website_branding,website_snippet_anchor,website_anchor_smooth_scroll,website_snippet_all
./script/addons/install_addons_theme.sh image_creation_erplibre_website theme_default
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_website --restore_image erplibre_website
./script/addons/install_addons.sh image_creation_erplibre_website crm,website_crm,crm_team_quebec
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_website --restore_image erplibre_website_crm
./script/addons/install_addons.sh image_creation_erplibre_website website_livechat
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_website --restore_image erplibre_website_chat_crm
./script/addons/install_addons.sh image_creation_erplibre_website website_sale,erplibre_base_quebec,website_snippet_product_category,website_snippet_carousel_product
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_website --restore_image erplibre_ecommerce_base
./script/addons/install_addons.sh image_creation_erplibre_website stock,purchase,website_sale_management
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_website --restore_image erplibre_ecommerce_advance
./script/addons/install_addons.sh image_creation_erplibre_website project
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_website --restore_image erplibre_ecommerce_project
./script/addons/install_addons.sh image_creation_erplibre_website pos_sale,muk_pos_branding
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_website --restore_image erplibre_ecommerce_pos
./script/addons/install_addons.sh image_creation_erplibre_website hr
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_website --restore_image erplibre_ecommerce_pos_hr
.PHONY: image_db_create_erplibre_demo
image_db_create_erplibre_demo:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_demo
./.venv/bin/python3 ./odoo/odoo-bin db --create --database image_creation_demo --demo
./script/addons/install_addons_from_file.sh image_creation_demo ./conf/module_list_image_erplibre_base.txt
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_demo --restore_image erplibre_demo_base
./script/addons/install_addons.sh image_creation_demo website,erplibre_website_snippets_basic_html,erplibre_website_snippets_cards,erplibre_website_snippets_structures,erplibre_website_snippets_timelines,website_form_builder,muk_website_branding,website_snippet_anchor,website_anchor_smooth_scroll,website_snippet_all,crm,website_crm,crm_team_quebec,website_livechat,website_sale,erplibre_base_quebec,website_snippet_product_category,website_snippet_carousel_product,stock,purchase,website_sale_management,project,pos_sale,muk_pos_branding,hr
./script/addons/install_addons_theme.sh image_creation_demo theme_default
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_demo --restore_image erplibre_demo_full
.PHONY: image_db_create_erplibre_code_generator .PHONY: image_db_create_erplibre_code_generator
image_db_create_erplibre_code_generator: image_db_create_erplibre_code_generator:
@ -273,175 +285,25 @@ image_db_create_erplibre_code_generator:
./script/make.sh addons_install_code_generator_full ./script/make.sh addons_install_code_generator_full
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database code_generator --restore_image erplibre_code_generator_full ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database code_generator --restore_image erplibre_code_generator_full
.PHONY: image_db_create_erplibre_package_accounting
image_db_create_erplibre_package_accounting:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_accounting
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_accounting
./script/addons/install_addons.sh image_creation_erplibre_package_accounting erplibre_base_quebec
./script/addons/install_addons.sh image_creation_erplibre_package_accounting account_fiscal_year_closing,account_export_csv,account_financial_report,account_tax_balance,mis_builder_cash_flow,partner_statement,account_bank_statement_import_camt_oca,account_bank_statement_import_move_line,account_bank_statement_import_ofx,account_bank_statement_import_online,account_bank_statement_import_online_paypal,account_bank_statement_import_online_transferwise,account_bank_statement_import_paypal,account_bank_statement_import_split,account_bank_statement_import_txt_xlsx,accounting_pdf_reports,om_account_accountant,om_account_asset,om_account_budget
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_accounting --restore_image erplibre_package_accounting
.PHONY: image_db_create_erplibre_package_business_requirements
image_db_create_erplibre_package_business_requirements:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_business_requirements
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_business_requirements
./script/addons/install_addons.sh image_creation_erplibre_package_business_requirements crm_team_quebec
./script/addons/install_addons.sh image_creation_erplibre_package_business_requirements business_requirement,business_requirement_crm,business_requirement_deliverable,business_requirement_sale,business_requirement_sale_timesheet
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_business_requirements --restore_image erplibre_package_business_requirements
.PHONY: image_db_create_erplibre_package_contract
image_db_create_erplibre_package_contract:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_contract
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_contract
./script/addons/install_addons.sh image_creation_erplibre_package_contract agreement,agreement_account,agreement_legal,agreement_legal_sale,agreement_project,agreement_sale,agreement_serviceprofile,agreement_stock,contract,contract_forecast,contract_invoice_start_end_dates,contract_layout_category_hide_detail,contract_mandate,contract_payment_mode,contract_sale,contract_sale_invoicing,contract_sale_mandate,contract_sale_payment_mode,contract_transmit_method,contract_variable_qty_prorated,contract_variable_qty_timesheet,contract_variable_quantity,product_contract,product_contract_variable_quantity
# ./script/addons/install_addons.sh image_creation agreement_legal_sale_fieldservice,agreement_maintenance,agreement_mrp,agreement_repair
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_contract --restore_image erplibre_package_contract
.PHONY: image_db_create_erplibre_package_crm
image_db_create_erplibre_package_crm:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_crm
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_crm
./script/addons/install_addons.sh image_creation_erplibre_package_crm erplibre_base_quebec,crm_team_quebec,crm,crm_livechat,crm_phone_validation,crm_project,crm_reveal
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_crm --restore_image erplibre_package_crm
.PHONY: image_db_create_erplibre_package_e_commerce
image_db_create_erplibre_package_e_commerce:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_e_commerce
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_e_commerce
./script/addons/install_addons.sh image_creation_erplibre_package_e_commerce erplibre_base_quebec
./script/addons/install_addons.sh image_creation_erplibre_package_e_commerce website_sale,website_sale_comparison,website_sale_delivery,website_sale_digital,website_sale_link_tracker,website_sale_management,website_sale_stock,website_sale_wishlist,website_sale_attribute_filter_category,website_sale_attribute_filter_order,website_sale_attribute_filter_price,website_sale_cart_selectable,website_sale_category_description,website_sale_checkout_skip_payment,website_sale_exception,website_sale_hide_empty_category,website_sale_hide_price,website_sale_product_attachment,website_sale_product_attribute_filter_visibility,website_sale_product_attribute_value_filter_existing,website_sale_product_detail_attribute_image,website_sale_product_detail_attribute_value_image,website_sale_product_minimal_price,website_sale_product_reference_displayed,website_sale_product_sort,website_sale_product_style_badge,website_sale_require_legal,website_sale_require_login,website_sale_secondary_unit,website_sale_show_company_data,website_sale_stock_available,website_sale_stock_available_display,website_sale_stock_force_block,website_sale_suggest_create_account,website_sale_wishlist_keep,website_snippet_carousel_product,website_snippet_product_category,product_rating_review,product_configurator,product_configurator_mrp,product_configurator_purchase,product_configurator_sale,product_configurator_stock,website_product_configurator
./script/addons/install_addons_theme.sh image_creation_erplibre_package_e_commerce theme_default
# ./script/addons/install_addons.sh image_creation website_sale_product_brand,website_sale_tax_toggle,website_sale_vat_required,product_configurator_sale_mrp,product_configurator_stock_lots,product_configurator_subconfig,website_product_configurator_mrp
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_e_commerce --restore_image erplibre_package_e_commerce
.PHONY: image_db_create_erplibre_package_field_service
image_db_create_erplibre_package_field_service:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_field_service
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_field_service
./script/addons/install_addons.sh image_creation_erplibre_package_field_service erplibre_base_quebec,crm_team_quebec
./script/addons/install_addons.sh image_creation_erplibre_package_field_service fieldservice,fieldservice_account,fieldservice_account_analytic,fieldservice_account_payment,fieldservice_activity,fieldservice_agreement,fieldservice_change_management,fieldservice_crm,fieldservice_delivery,fieldservice_distribution,fieldservice_fleet,fieldservice_geoengine,fieldservice_isp_account,fieldservice_isp_flow,fieldservice_location_builder,fieldservice_maintenance,fieldservice_partner_multi_relation,fieldservice_project,fieldservice_purchase,fieldservice_recurring,fieldservice_repair,fieldservice_route,fieldservice_route_account,fieldservice_route_stock,fieldservice_route_vehicle,fieldservice_sale,fieldservice_sale_recurring,fieldservice_sale_stock,fieldservice_size,fieldservice_skill,fieldservice_stage_server_action,fieldservice_stage_validation,fieldservice_stock,fieldservice_stock_account,fieldservice_stock_account_analytic,fieldservice_substatus,fieldservice_vehicle,fieldservice_vehicle_stock
# ./script/addons/install_addons.sh image_creation fieldservice_google_map,fieldservice_google_marker_icon_picker
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_field_service --restore_image erplibre_package_field_service
.PHONY: image_db_create_erplibre_package_helpdesk
image_db_create_erplibre_package_helpdesk:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_helpdesk
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_helpdesk
./script/addons/install_addons.sh image_creation_erplibre_package_helpdesk helpdesk_mgmt,helpdesk_mgmt_project,helpdesk_motive,helpdesk_type,helpdesk_mgmt_timesheet,helpdesk_mgmt_timesheet_time_control,helpdesk_mgmt_partner_sequence,helpdesk_mgmt_sla
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_helpdesk --restore_image erplibre_package_helpdesk
.PHONY: image_db_create_erplibre_package_hr
image_db_create_erplibre_package_hr:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_hr
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_hr
./script/addons/install_addons.sh image_creation_erplibre_package_hr erplibre_base_quebec
./script/addons/install_addons.sh image_creation_erplibre_package_hr hr,hr_expense_associate_with_customer,hr_expense_tip,res_partner_fix_group_by_company,hr_attendance,hr_contract,hr_expense,hr_expense_check,hr_gamification,hr_holidays,hr_maintenance,hr_org_chart,hr_payroll,hr_payroll_account,hr_recruitment,hr_recruitment_survey,hr_timesheet,hr_timesheet_attendance,hr_attendance_autoclose,hr_attendance_geolocation,hr_attendance_modification_tracking,hr_attendance_reason,hr_attendance_report_theoretical_time,hr_attendance_rfid,hr_calendar_rest_time,hr_contract_currency,hr_contract_document,hr_contract_multi_job,hr_contract_rate,hr_course,hr_employee_age,hr_employee_birth_name,hr_employee_calendar_planning,hr_employee_display_own_info,hr_employee_document,hr_employee_emergency_contact,hr_employee_firstname,hr_employee_health,hr_employee_id,hr_employee_language,hr_employee_medical_examination,hr_employee_partner_external,hr_employee_phone_extension,hr_employee_relative,hr_employee_service,hr_employee_service_contract,hr_employee_social_media,hr_employee_ssn,hr_expense_advance_clearing,hr_expense_cancel,hr_expense_invoice,hr_expense_payment_difference,hr_expense_petty_cash,hr_expense_sequence,hr_expense_tier_validation,hr_experience,hr_holidays_accrual_advanced,hr_holidays_credit,hr_holidays_hour,hr_holidays_leave_auto_approve,hr_holidays_leave_repeated,hr_holidays_leave_request_wizard,hr_holidays_length_validation,hr_holidays_notify_employee_manager,hr_holidays_public,hr_holidays_settings,hr_holidays_validity_date,hr_job_category,hr_payroll_cancel,hr_payslip_change_state,hr_period,hr_skill,hr_worked_days_from_timesheet,resource_hook,hr_contract_single_open,hr_contract_wage_type,hr_employee_private_wizard,hr_employee_type,hr_employee_type_private_wizard,hr_event,hr_expense_same_month,hr_working_space,muk_hr_utils
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_hr --restore_image erplibre_package_hr
.PHONY: image_db_create_erplibre_package_project
image_db_create_erplibre_package_project:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_project
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_project
./script/addons/install_addons.sh image_creation_erplibre_package_project erplibre_base_quebec
./script/addons/install_addons.sh image_creation_erplibre_package_project project,project_chatter,project_default_task_stage,project_form_with_dates,project_hide_create_sale_order,project_iteration,project_iteration_parent_only,project_iteration_parent_type_required,project_portal_hide_timesheets,project_portal_parent_task,project_remaining_hours_update,project_stage,project_stage_allow_timesheet,project_stage_no_quick_create,project_task_date_planned,project_task_deadline_from_project,project_task_full_text_search,project_task_id_in_display_name,project_task_link,project_task_reference,project_task_resource_type,project_task_search_parent_subtask,project_task_stage_external_mail,project_task_subtask_same_project,project_task_type,project_template,project_template_numigi,project_template_timesheet,project_type,project_time_budget,project_time_range
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_project --restore_image erplibre_package_project
.PHONY: image_db_create_erplibre_package_purchase
image_db_create_erplibre_package_purchase:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_purchase
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_purchase
./script/addons/install_addons.sh image_creation_erplibre_package_purchase erplibre_base_quebec
./script/addons/install_addons.sh image_creation_erplibre_package_purchase purchase,purchase_mrp,purchase_requisition,purchase_stock,product_supplier_info_helpers,purchase_consignment,purchase_consignment_delivery_expense,purchase_consignment_inventory,purchase_consignment_inventory_line_domain,purchase_estimated_time_arrival,purchase_invoice_empty_lines,purchase_invoice_from_picking,purchase_partner_products,purchase_warning_minimum_amount
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_purchase --restore_image erplibre_package_purchase
.PHONY: image_db_create_erplibre_package_sale
image_db_create_erplibre_package_sale:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_sale
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_sale
./script/addons/install_addons.sh image_creation_erplibre_package_sale erplibre_base_quebec,crm_team_quebec
./script/addons/install_addons.sh image_creation_erplibre_package_sale sale,sale_crm,sale_expense,sale_management,sale_margin,sale_mrp,sale_purchase,sale_quotation_builder,sale_stock,sale_timesheet,sales_team,product_create_group,product_dimension,product_dimension_numigi,product_extra_views,product_extra_views_purchase,product_extra_views_sale,product_extra_views_stock,product_kit,product_panel_shortcut,product_reference,product_reference_list_view,product_variant_button_complete_form,sale_order_line_limit,sale_degroup_tax,payment,payment_transfer,purchase,stock
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_sale --restore_image erplibre_package_sale
.PHONY: image_db_create_erplibre_package_scrummer
image_db_create_erplibre_package_scrummer:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_scrummer
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_scrummer
./script/addons/install_addons.sh image_creation_erplibre_package_scrummer erplibre_base_quebec
./script/addons/install_addons.sh image_creation_erplibre_package_scrummer scrummer,scrummer_git,scrummer_kanban,scrummer_scrum,scrummer_timesheet_category,scrummer_workflow_security,scrummer_workflow_transition_by_project,scrummer_workflow_transitions_by_task_type,web_diagram_position,web_syncer,web_widget_image_url,project_agile_sale_timesheet,project_agile_analytic,project_agile_scrum,project_git_github,project_git_gitlab,project_portal
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_scrummer --restore_image erplibre_package_scrummer
.PHONY: image_db_create_erplibre_package_stock
image_db_create_erplibre_package_stock:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_stock
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_stock
./script/addons/install_addons.sh image_creation_erplibre_package_stock stock,stock_account,stock_dropshipping,stock_landed_costs,stock_picking_batch,purchase_warehouse_access,stock_component,stock_component_account,stock_inventory_accounting_date_editable,stock_inventory_category_domain,stock_inventory_internal_location,stock_inventory_line_domain,stock_location_position_alphanum,stock_picking_change_destination,stock_serial_single_quant,stock_theorical_quantity_access,stock_turnover_rate,stock_warehouse_access,stock_warehouse_distance
# ./script/addons/install_addons.sh image_creation_erplibre_package_stock stock_zebra,stock_inventory_line_domain_barcode
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_stock --restore_image erplibre_package_stock
.PHONY: image_db_create_erplibre_package_timesheet
image_db_create_erplibre_package_timesheet:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_timesheet
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_timesheet
./script/addons/install_addons.sh image_creation_erplibre_package_timesheet payroll_code_on_task_type,payroll_period,payroll_preparation,payroll_preparation_export_wizard,payroll_preparation_from_timesheet,project_timesheet_time_control_enhanced,timesheet_edit_only_today,timesheet_list_description_after_task,timesheet_list_employee,timesheet_multi_line_wizard,timesheet_multi_line_wizard_security,timesheet_payroll_period,timesheet_validation_status
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_timesheet --restore_image erplibre_package_timesheet
.PHONY: image_db_create_erplibre_package_website
image_db_create_erplibre_package_website:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_website
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_website
./script/addons/install_addons.sh image_creation_erplibre_package_website portal,website,website_blog,website_crm,website_crm_partner_assign,website_crm_phone_validation,website_customer,website_event,website_event_questions,website_event_sale,website_event_track,website_form,website_form_project,website_forum,website_google_map,website_hr,website_hr_recruitment,website_links,website_livechat,website_mail,website_mail_channel,website_mass_mailing,website_membership,website_partner,website_payment,website_rating,website_slides,website_survey,website_theme_install,website_twitter,website_adv_image_optimization,website_anchor_smooth_scroll,website_blog_excerpt_img,website_breadcrumb,website_canonical_url,website_cookie_notice,website_crm_privacy_policy,website_crm_quick_answer,website_crm_recaptcha,website_form_builder,website_form_recaptcha,website_google_tag_manager,website_img_dimension,website_js_below_the_fold,website_lazy_load_image,website_legal_page,website_logo,website_media_size,website_megamenu,website_odoo_debranding,website_portal_address,website_portal_contact,website_snippet_anchor,website_snippet_big_button,website_snippet_country_dropdown,website_snippet_marginless_gallery,smile_website_login_as,website_snippet_all
./script/addons/install_addons_theme.sh image_creation_erplibre_package_website theme_default
# ./script/addons/install_addons.sh image_creation_erplibre_package_website website_no_crawler
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_website --restore_image erplibre_package_website
.PHONY: image_db_create_erplibre_package_wiki
image_db_create_erplibre_package_wiki:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_wiki
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_wiki
./script/addons/install_addons.sh image_creation_erplibre_package_wiki document_page,document_page_approval,document_page_group,document_page_project,document_page_reference,document_page_tag,document_url,knowledge,attachment_preview,document_page_procedure,document_page_quality_manual,document_page_work_instruction,mgmtsystem,mgmtsystem_action,mgmtsystem_audit,mgmtsystem_hazard,mgmtsystem_manual,mgmtsystem_nonconformity,mgmtsystem_nonconformity_hr,mgmtsystem_nonconformity_product,mgmtsystem_nonconformity_project,mgmtsystem_quality,mgmtsystem_review,mgmtsystem_survey
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_wiki --restore_image erplibre_package_wiki
.PHONY: image_db_create_erplibre_package_dms
image_db_create_erplibre_package_dms:
./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation_erplibre_package_dms
./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database image_creation_erplibre_base --database image_creation_erplibre_package_dms
./script/addons/install_addons.sh image_creation_erplibre_package_dms muk_dms,muk_dms_access,muk_dms_view,muk_web_preview,muk_web_preview_audio,muk_web_preview_csv,muk_web_preview_image,muk_web_preview_markdown,muk_web_preview_msoffice,muk_web_preview_opendocument,muk_web_preview_rst,muk_web_preview_text,muk_web_preview_video
./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation_erplibre_package_dms --restore_image erplibre_package_dms
.PHONY: image_db_create_all
image_db_create_all:
# TODO remove modules from addons/addons
#./script/make.sh config_gen_image_db
./script/database/db_restore.py --clean_cache
./script/make.sh image_db_create_erplibre_base
./script/make.sh image_db_create_erplibre_website
./script/make.sh image_db_create_erplibre_code_generator
./script/make.sh image_db_create_erplibre_demo
./script/make.sh image_db_create_erplibre_package_accounting
./script/make.sh image_db_create_erplibre_package_business_requirements
./script/make.sh image_db_create_erplibre_package_contract
./script/make.sh image_db_create_erplibre_package_crm
./script/make.sh image_db_create_erplibre_package_e_commerce
./script/make.sh image_db_create_erplibre_package_field_service
./script/make.sh image_db_create_erplibre_package_helpdesk
./script/make.sh image_db_create_erplibre_package_hr
./script/make.sh image_db_create_erplibre_package_project
./script/make.sh image_db_create_erplibre_package_purchase
./script/make.sh image_db_create_erplibre_package_sale
./script/make.sh image_db_create_erplibre_package_scrummer
./script/make.sh image_db_create_erplibre_package_stock
./script/make.sh image_db_create_erplibre_package_timesheet
./script/make.sh image_db_create_erplibre_package_website
./script/make.sh image_db_create_erplibre_package_wiki
./script/make.sh image_db_create_erplibre_package_dms
./script/make.sh image_db_create_test_website_attachments
#./script/make.sh config_gen_all
.PHONY: image_db_create_all_parallel .PHONY: image_db_create_all_parallel
image_db_create_all_parallel: image_db_create_all_parallel:
./script/database/db_restore.py --clean_cache ./script/database/db_restore.py --clean_cache
./script/make.sh image_db_create_erplibre_base echo "Search in-existing module"
parallel < ./conf/image_db_create.txt ./.venv/bin/python3 ./script/database/image_db.py --check_addons_exist
echo "Create Image DB"
./.venv/bin/python3 ./script/database/image_db.py --generate_bash_cmd_parallel | bash
./script/database/db_restore.py --clean_cache
#./script/make.sh image_db_create_test_website_attachments
.PHONY: image_db_list_data
image_db_list_data:
./.venv/bin/python3 ./script/database/image_db.py --generate_bash_cmd_parallel
#./.venv/bin/python3 ./script/database/image_db.py --generate_bash_cmd_parallel --odoo_version 12.0
.PHONY: image_db_list
image_db_list:
./.venv/bin/python3 ./script/database/image_db.py --show_list_only
#./.venv/bin/python3 ./script/database/image_db.py --generate_bash_cmd_parallel --odoo_version 12.0
.PHONY: image_db_create_test_website_attachments .PHONY: image_db_create_test_website_attachments
image_db_create_test_website_attachments: image_db_create_test_website_attachments:
@ -452,8 +314,8 @@ image_db_create_test_website_attachments:
.PHONY: image_diff_base_website .PHONY: image_diff_base_website
image_diff_base_website: image_diff_base_website:
#./script/manifest/compare_backup.py --backup_file_1 ./image_db/erplibre_base.zip --backup_file_2 ./image_db/erplibre_website.zip #./script/database/compare_backup.py --backup_file_1 ./image_db/erplibre_base.zip --backup_file_2 ./image_db/erplibre_website.zip
./script/manifest/compare_backup.py --backup_1 erplibre_base --backup_2 erplibre_website ./script/database/compare_backup.py --backup_1 odoo12.0_base --backup_2 odoo12.0_website
######################### #########################
# Addons installation # # Addons installation #
@ -918,6 +780,13 @@ format_script_isort_only:
log_show_test: log_show_test:
vim ${LOG_FILE} vim ${LOG_FILE}
##########
# poetry #
##########
.PHONY: poetry_update
poetry_update:
./script/poetry/poetry_update.py
########### ###########
# clean # # clean #
########### ###########
@ -979,9 +848,17 @@ docker_exec_erplibre_repo_show_status:
./script/docker/docker_repo_show_status.sh ./script/docker/docker_repo_show_status.sh
# build docker # build docker
.PHONY: docker_build .PHONY: docker_build_odoo_16
docker_build: docker_build_odoo_16:
./script/docker/docker_build.sh ./script/docker/docker_build.sh --odoo_16
.PHONY: docker_build_odoo_14
docker_build_odoo_14:
./script/docker/docker_build.sh --odoo_14
.PHONY: docker_build_odoo_12
docker_build_odoo_12:
./script/docker/docker_build.sh --odoo_12
# build docker release # build docker release
.PHONY: docker_build_release .PHONY: docker_build_release
@ -1059,9 +936,30 @@ repo_use_all_https:
config_install: config_install:
./script/generate_config.sh ./script/generate_config.sh
.PHONY: config_update
config_update:
./run.sh -c config.conf -s --stop-after-init
.PHONY: config_update_over_proxy
config_update_over_proxy:
./run.sh -c config.conf -s --stop-after-init --max-cron-threads 2 --workers 2 --xmlrpc-interface 127.0.0.1 --proxy-mode
.PHONY: config_update_dev
config_update_dev:
./run.sh -c config.conf -s --stop-after-init --max-cron-threads 4 --workers 4
.PHONY: config_update_dev_mono
config_update_dev_mono:
./run.sh -c config.conf -s --stop-after-init --workers 0
.PHONY: config_clear
config_clear:
rm -f ./config.conf
# generate config all repo # generate config all repo
.PHONY: config_gen_all .PHONY: config_gen_all
config_gen_all: config_gen_all:
echo "config_gen_all"
./script/git/git_repo_update_group.py ./script/git/git_repo_update_group.py
./script/generate_config.sh ./script/generate_config.sh
@ -1191,3 +1089,20 @@ doc_clean_user:
.PHONY: doc_markdown .PHONY: doc_markdown
doc_markdown: doc_markdown:
./.venv/bin/mmg --verbose --yes ./doc/CODE_GENERATOR.base.md ./.venv/bin/mmg --verbose --yes ./doc/CODE_GENERATOR.base.md
# Cache
.PHONY: clear_cache
clear_cache:
rm -rf cache artifacts .coverage coverage.json
#######
# IDE #
#######
.PHONY: pycharm_open
pycharm_open:
~/.local/share/JetBrains/Toolbox/scripts/pycharm .
.PHONY: pycharm_configure
pycharm_configure:
./script/ide/pycharm_configuration.py --init

View file

@ -18,7 +18,7 @@ Into Ubuntu, minimal dependency:
sudo apt install make git curl sudo apt install make git curl
``` ```
Into Ubuntu, developper dependency: Into Ubuntu, developer dependency:
```bash ```bash
sudo apt install make build-essential libssl-dev zlib1g-dev libreadline-dev libsqlite3-dev curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev liblzma-dev libbz2-dev libldap2-dev libsasl2-dev sudo apt install make build-essential libssl-dev zlib1g-dev libreadline-dev libsqlite3-dev curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev liblzma-dev libbz2-dev libldap2-dev libsasl2-dev
@ -31,10 +31,10 @@ git clone https://github.com/ERPLibre/ERPLibre.git
cd ERPLibre cd ERPLibre
``` ```
Support Ubuntu 18.04, 20.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 make install_odoo_16
``` ```
Update your configuration if you need to run from another interface than 127.0.0.1, file `config.conf` Update your configuration if you need to run from another interface than 127.0.0.1, file `config.conf`
@ -43,6 +43,12 @@ Update your configuration if you need to run from another interface than 127.0.0
xmlrpc_interface = 0.0.0.0 xmlrpc_interface = 0.0.0.0
``` ```
Show version :
```bash
make version
```
Ready to execute: Ready to execute:
```bash ```bash
@ -75,6 +81,26 @@ For more information, read [Docker guide](./docker/README.md).
[Guide to run ERPLibre in development environment](./doc/DEVELOPMENT.md). [Guide to run ERPLibre in development environment](./doc/DEVELOPMENT.md).
### Pycharm
First open
```bash
make pycharm_open
```
Close it, and configure
```bash
make pycharm_configure
```
Open it
```bash
make pycharm_open
```
# Execution # Execution
[Guide to run ERPLibre with different case](./doc/RUN.md). [Guide to run ERPLibre with different case](./doc/RUN.md).

View file

@ -1,21 +0,0 @@
./script/make.sh image_db_create_erplibre_package_contract
./script/make.sh image_db_create_erplibre_package_crm
./script/make.sh image_db_create_erplibre_package_e_commerce
./script/make.sh image_db_create_erplibre_package_field_service
./script/make.sh image_db_create_erplibre_package_helpdesk
./script/make.sh image_db_create_erplibre_package_hr
./script/make.sh image_db_create_erplibre_package_project
./script/make.sh image_db_create_erplibre_package_purchase
./script/make.sh image_db_create_erplibre_package_sale
./script/make.sh image_db_create_erplibre_package_scrummer
./script/make.sh image_db_create_erplibre_package_stock
./script/make.sh image_db_create_erplibre_package_timesheet
./script/make.sh image_db_create_erplibre_package_website
./script/make.sh image_db_create_erplibre_package_wiki
./script/make.sh image_db_create_erplibre_package_dms
./script/make.sh image_db_create_erplibre_package_accounting
./script/make.sh image_db_create_erplibre_package_business_requirements
./script/make.sh image_db_create_erplibre_website
./script/make.sh image_db_create_test_website_attachments
./script/make.sh image_db_create_erplibre_code_generator
./script/make.sh image_db_create_erplibre_demo

View file

@ -0,0 +1,603 @@
{
"odoo12.0_base": {
"base": "",
"disable": false,
"image_list": [
{
"module": [
"auth_user_case_insensitive",
"auto_backup",
"disable_odoo_online",
"erplibre_info",
"fetchmail_notify_error_to_sender",
"fetchmail_thread_default",
"mail_debrand",
"mail_history",
"muk_branding",
"muk_mail_branding",
"muk_utils",
"muk_web_branding",
"muk_web_theme",
"muk_web_theme_mail",
"muk_web_utils",
"partner_no_vat",
"partner_quebec_tz",
"remove_odoo_enterprise",
"web_diagram_position",
"web_responsive",
"web_timeline"
]
}
]
},
"odoo12.0_website": {
"base": "odoo12.0_base",
"disable": false,
"image_list": [
{
"module": [
"erplibre_website_snippets_basic_html",
"erplibre_website_snippets_cards",
"erplibre_website_snippets_structures",
"erplibre_website_snippets_timelines",
"muk_website_branding",
"website",
"website_anchor_smooth_scroll",
"website_form_builder",
"website_odoo_debranding",
"website_snippet_all",
"website_snippet_anchor"
],
"theme": "theme_default"
}
]
},
"odoo12.0_website_crm": {
"base": "odoo12.0_website",
"disable": false,
"image_list": [
{
"module": [
"crm",
"crm_team_quebec",
"website_crm"
]
},
{
"pkg_name": "chat",
"module": [
"website_livechat"
]
}
]
},
"odoo12.0_website_ecommerce": {
"base": "odoo12.0_website",
"disable": false,
"delay": 1,
"image_list": [
{
"module": [
"configure_quebec_tax",
"l10n_ca",
"website_sale"
]
}
]
},
"odoo12.0_base_demo": {
"base": "",
"disable": false,
"with_demo": true,
"image_list": [
{
"module": [
"auth_user_case_insensitive",
"auto_backup",
"disable_odoo_online",
"erplibre_info",
"fetchmail_notify_error_to_sender",
"fetchmail_thread_default",
"mail_debrand",
"mail_history",
"muk_branding",
"muk_mail_branding",
"muk_utils",
"muk_web_branding",
"muk_web_theme",
"muk_web_theme_mail",
"muk_web_utils",
"partner_no_vat",
"partner_quebec_tz",
"remove_odoo_enterprise",
"web_diagram_position",
"web_responsive",
"web_timeline"
]
}
]
},
"odoo12.0_base_demo_adv": {
"base": "odoo12.0_base_demo",
"disable": false,
"with_demo": true,
"image_list": [
{
"pkg_name": "website_ecommerce",
"theme": "theme_default",
"module": [
"configure_quebec_tax",
"crm",
"crm_team_quebec",
"l10n_ca",
"purchase",
"stock",
"website_crm",
"website_livechat",
"website_sale",
"website_sale_management",
"website_snippet_carousel_product",
"website_snippet_product_category"
]
},
{
"pkg_name": "full",
"module": [
"account_financial_report",
"account_fiscal_year_closing",
"account_tax_balance",
"accounting_pdf_reports",
"agreement",
"agreement_legal",
"business_requirement",
"document_page",
"fieldservice",
"fleet",
"geoengine_partner",
"helpdesk_mgmt",
"hr_attendance",
"hr_timesheet",
"maintenance",
"mgmtsystem",
"mis_builder_cash_flow",
"mrp",
"muk_dms",
"muk_dms_access",
"muk_dms_view",
"muk_pos_branding",
"muk_web_preview",
"muk_web_preview_audio",
"muk_web_preview_csv",
"muk_web_preview_image",
"muk_web_preview_markdown",
"muk_web_preview_msoffice",
"muk_web_preview_opendocument",
"muk_web_preview_rst",
"muk_web_preview_text",
"muk_web_preview_video",
"note",
"om_account_accountant",
"om_account_asset",
"om_account_budget",
"partner_statement",
"payment",
"payment_transfer",
"plm",
"portal",
"pos_sale",
"product_configurator",
"product_extra_views",
"product_extra_views_purchase",
"product_extra_views_sale",
"product_extra_views_stock",
"product_supplier_info_helpers",
"product_variant_button_complete_form",
"project",
"purchase_estimated_time_arrival",
"purchase_mrp",
"purchase_requisition",
"purchase_stock",
"repair",
"rma",
"sale",
"sale_crm",
"sale_expense",
"sale_management",
"sale_margin",
"sale_mrp",
"sale_purchase",
"sale_quotation_builder",
"sale_stock",
"sale_timesheet",
"sales_team",
"survey",
"website_blog",
"website_crm_privacy_policy",
"website_event",
"website_event_questions",
"website_event_sale",
"website_event_track",
"website_form",
"website_form_project",
"website_forum",
"website_hr_recruitment",
"website_legal_page",
"website_links",
"website_livechat",
"website_mail",
"website_mail_channel",
"website_mass_mailing",
"website_membership",
"website_odoo_debranding",
"website_partner",
"website_payment",
"website_product_configurator",
"website_slides",
"website_snippet_country_dropdown",
"wms"
]
}
]
},
"odoo14.0_base": {
"base": "",
"disable": false,
"image_list": [
{
"module": [
"auth_user_case_insensitive",
"auto_backup",
"disable_odoo_online",
"fetchmail_notify_error_to_sender",
"mail_debrand",
"partner_no_vat",
"remove_odoo_enterprise",
"smile_many2many_tags_clickable",
"web_responsive",
"web_timeline"
]
}
]
},
"odoo14.0_website": {
"base": "odoo14.0_base",
"disable": false,
"image_list": [
{
"module": [
"website",
"website_odoo_debranding"
],
"theme": "theme_default"
}
]
},
"odoo14.0_website_crm": {
"base": "odoo14.0_website",
"disable": false,
"image_list": [
{
"module": [
"crm",
"website_crm"
]
},
{
"pkg_name": "chat",
"module": [
"website_livechat"
]
}
]
},
"odoo14.0_website_ecommerce": {
"base": "odoo14.0_website",
"disable": false,
"delay": 1,
"image_list": [
{
"module": [
"l10n_ca",
"website_sale"
]
}
]
},
"odoo14.0_base_demo": {
"base": "",
"disable": false,
"with_demo": true,
"image_list": [
{
"module": [
"auth_user_case_insensitive",
"auto_backup",
"disable_odoo_online",
"fetchmail_notify_error_to_sender",
"mail_debrand",
"partner_no_vat",
"remove_odoo_enterprise",
"smile_many2many_tags_clickable",
"web_responsive",
"web_timeline"
]
}
]
},
"odoo14.0_base_demo_adv": {
"base": "odoo14.0_base_demo",
"disable": false,
"with_demo": true,
"image_list": [
{
"pkg_name": "website_ecommerce",
"theme": "theme_default",
"module": [
"crm",
"l10n_ca",
"purchase",
"stock",
"website_crm",
"website_livechat",
"website_sale",
"website_sale_management"
]
},
{
"pkg_name": "full",
"module": [
"account_financial_report",
"account_fiscal_year_closing",
"account_tax_balance",
"accounting_pdf_reports",
"agreement_legal",
"document_page",
"fieldservice",
"helpdesk_mgmt",
"hr_attendance",
"hr_holidays",
"hr_payroll_community",
"hr_timesheet",
"hr_skills",
"fleet",
"maintenance",
"mis_builder_cash_flow",
"mgmtsystem",
"mrp",
"note",
"om_account_accountant",
"om_account_asset",
"om_account_budget",
"partner_statement",
"payment",
"payment_transfer",
"plm",
"portal",
"pos_sale",
"product_extra_views",
"product_extra_views_purchase",
"product_extra_views_sale",
"product_extra_views_stock",
"product_supplier_info_helpers",
"product_variant_button_complete_form",
"project",
"purchase_estimated_time_arrival",
"purchase_mrp",
"purchase_requisition",
"purchase_stock",
"rma",
"sale",
"sale_crm",
"sale_expense",
"sale_management",
"sale_margin",
"sale_mrp",
"sale_purchase",
"sale_quotation_builder",
"sale_stock",
"sale_timesheet",
"sales_team",
"survey",
"repair",
"web_pwa_oca",
"website_blog",
"website_crm_privacy_policy",
"website_event",
"website_event_questions",
"website_event_sale",
"website_event_track",
"website_form",
"website_form_project",
"website_forum",
"website_google_tag_manager",
"website_hr_recruitment",
"website_legal_page",
"website_links",
"website_livechat",
"website_mail",
"website_mail_channel",
"website_mass_mailing",
"website_membership",
"website_odoo_debranding",
"website_partner",
"website_payment",
"website_slides",
"website_snippet_country_dropdown"
]
}
]
},
"odoo16.0_base": {
"base": "",
"disable": false,
"image_list": [
{
"module": [
"auth_user_case_insensitive",
"auto_backup",
"disable_odoo_online",
"mail_debrand",
"remove_odoo_enterprise",
"web_responsive",
"web_timeline"
]
}
]
},
"odoo16.0_website": {
"base": "odoo16.0_base",
"disable": false,
"image_list": [
{
"module": [
"website",
"website_odoo_debranding"
]
}
]
},
"odoo16.0_website_crm": {
"base": "odoo16.0_website",
"disable": false,
"image_list": [
{
"module": [
"crm",
"website_crm"
]
},
{
"pkg_name": "chat",
"module": [
"website_livechat"
]
}
]
},
"odoo16.0_website_ecommerce": {
"base": "odoo16.0_website",
"disable": false,
"delay": 1,
"image_list": [
{
"module": [
"l10n_ca",
"website_sale"
]
}
]
},
"odoo16.0_base_demo": {
"base": "",
"disable": false,
"with_demo": true,
"image_list": [
{
"module": [
"auth_user_case_insensitive",
"auto_backup",
"disable_odoo_online",
"mail_debrand",
"remove_odoo_enterprise",
"web_responsive",
"web_timeline"
]
}
]
},
"odoo16.0_base_demo_adv_broke": {
"base": "odoo16.0_base_demo",
"disable": true,
"with_demo": true,
"image_list": [
{
"module": [
"project_mrp",
"mrp",
"purchase_mrp",
"hr_payroll_community",
"sale_mrp"
]
}
]
},
"odoo16.0_base_demo_adv": {
"base": "odoo16.0_base_demo",
"disable": false,
"with_demo": true,
"image_list": [
{
"pkg_name": "full",
"module": [
"crm",
"l10n_ca",
"purchase",
"stock",
"website_crm",
"website_sale",
"account_financial_report",
"account_tax_balance",
"accounting_pdf_reports",
"document_page",
"fieldservice",
"helpdesk_mgmt",
"hr_attendance",
"hr_holidays",
"hr_timesheet",
"hr_skills",
"fleet",
"maintenance",
"mis_builder_cash_flow",
"mgmtsystem",
"note",
"om_account_accountant",
"om_account_asset",
"om_account_budget",
"partner_statement",
"payment",
"plm",
"portal",
"pos_sale",
"project",
"purchase_requisition",
"purchase_stock",
"rma",
"sale",
"sale_crm",
"sale_expense",
"sale_management",
"sale_margin",
"sale_purchase",
"sale_quotation_builder",
"sale_stock",
"sale_timesheet",
"sales_team",
"survey",
"repair",
"web_pwa_oca",
"website_blog",
"website_crm_privacy_policy",
"website_event",
"website_event_questions",
"website_event_sale",
"website_event_track",
"website_form_project",
"website_forum",
"website_google_tag_manager",
"website_hr_recruitment",
"website_legal_page",
"website_links",
"website_livechat",
"website_mail",
"website_mass_mailing",
"website_membership",
"website_odoo_debranding",
"website_partner",
"website_payment",
"website_slides",
"website_snippet_country_dropdown"
]
}
]
}
}

View file

@ -1 +0,0 @@
web_responsive,disable_odoo_online,remove_odoo_enterprise,auth_user_case_insensitive,muk_web_theme,muk_utils,muk_branding,muk_mail_branding,muk_web_branding,muk_web_theme_mail,muk_web_utils,fetchmail_notify_error_to_sender,mail_debrand,partner_quebec_tz,erplibre_info,web_timeline,web_diagram_position,auto_backup,partner_no_vat,fetchmail_thread_default,mail_history

View file

@ -1,4 +1,3 @@
.venv
.repo .repo
script/OCA_maintainer-tools script/OCA_maintainer-tools
script/OCA_odoo-module-migrator script/OCA_odoo-module-migrator

View file

@ -0,0 +1,19 @@
{
"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"
},
"odoo14.0_python3.8.20": {
"odoo_version": "14.0",
"python_version": "3.8.20",
"poetry_version": "1.5.0"
},
"odoo16.0_python3.10.14": {
"odoo_version": "16.0",
"python_version": "3.10.14",
"poetry_version": "1.8.3"
}
}

View file

@ -178,3 +178,16 @@ networks:
external: external:
name: localnetwork name: localnetwork
``` ```
## Pycharm inotify watches limit Linux
Please read this: https://intellij-support.jetbrains.com/hc/en-us/articles/15268113529362-Inotify-Watches-Limit-Linux
Validate it works:
```bash
cat /proc/sys/fs/inotify/max_user_watches
```
Tips, when doing `sudo sysctl -p --system`, validate the order of the process, another process can overwrite your new
value.

View file

@ -37,3 +37,29 @@ make docker_show_databases
- Run script `make install_dev` - Run script `make install_dev`
- Restart your daemon - Restart your daemon
- Regenerate master password manually - Regenerate master password manually
## Migration Odoo 12 to Odoo 13
Replace BD to your database name.
First, be sure all addons is updated with script.
```bash
./script/addons/update_addons_all.sh BD
```
Execute migration with OpenUpgrade.
```bash
make config_gen_migration
./.venv/bin/python ./script/OCA_OpenUpgrade/odoo-bin -c ./config.conf --update all --stop-after-init -d BD
```
## Migration Odoo 13 to Odoo 14
Replace BD to your database name.
```bash
make config_gen_migration
./run.sh --upgrade-path=./script/OCA_OpenUpgrade/openupgrade_scripts/scripts --update all --stop-after-init --load=base,web,openupgrade_framework -d BD
```

View file

@ -44,3 +44,47 @@ Delete cache at root of the project
```bash ```bash
rm -r cache rm -r cache
``` ```
## Configure a proxy with poetry
The proxy will create a cache of all downloads.
https://github.com/EpicWink/proxpi
Install and run the server
```bash
pip3 install 'git+https://github.com/EpicWink/proxpi.git'
PROXPI_BINARY_FILE_MIME_TYPE=1 FLASK_APP=proxpi.server flask run
```
Or by docker-compose, add the environment
```
services:
proxpi:
restart: unless-stopped
ports:
- '5000:5000'
image: epicwink/proxpi:latest
environment:
- PROXPI_BINARY_FILE_MIME_TYPE=1
```
Add this configuration into the pyproject.toml
```toml
[[tool.poetry.source]]
name = "proxpi"
url = "http://localhost:5000/index/"
default = true
secondary = false
```
TIPS, maybe before `poetry install` into installation script, need to do `poetry lock --no-update`
In development, a solution without configuring pyproject.toml, update installation script like :
```bash
${VENV_PATH}/bin/poetry self add git+https://github.com/mathben/poetry-plugin-pypi-proxy.git[plugin]
PIP_INDEX_URL=http://127.0.0.1:5000/index/ ${VENV_PATH}/bin/poetry install
```

View file

@ -53,7 +53,7 @@ make doc_markdown
To generate a docker, run: To generate a docker, run:
```bash ```bash
make docker_build make docker_build_odoo_16
``` ```
### Rename old version to new version ### Rename old version to new version

View file

@ -147,6 +147,23 @@ Add role to PostgresSQL, change `USERNAME` field in the command with your UNIX u
sudo service postgresql start sudo service postgresql start
sudo su - postgres -c "createuser -s USERNAME" 2>/dev/null || true sudo su - postgres -c "createuser -s USERNAME" 2>/dev/null || true
``` ```
## Common Problems During Installation
### Error During `make install`
Ensure all dependencies are installed correctly. Re-run the following command to fix any broken dependencies:
```bash
sudo apt-get install -f
```
### PostgreSQL Not Starting
Check the PostgreSQL service status with the following command:
```bash
sudo service postgresql status
```
If PostgreSQL is not running, try restarting it with:
```bash
sudo service postgresql restart
```
## Running ERPLibre ## Running ERPLibre
@ -190,13 +207,13 @@ If these last steps to set up your development environment were unsuccessful, fo
## Manual Installation ## Manual Installation
### Install Python 3.7.16 ### Install Python 3.10.14
You can delete the files that are left over in your home directory regarding the python installation when the steps have been completed succesfully. You can delete the files that are left over in your home directory regarding the python installation when the steps have been completed succesfully.
```bash ```bash
cd ~ cd ~
wget https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
tar -xzf Python-3.7.16.tgz tar -xzf Python-3.10.14.tgz
cd Python-3.7.16 cd Python-3.10.14
./configure --enable-optimizations ./configure --enable-optimizations
make -j $(nproc) make -j $(nproc)
sudo make install sudo make install
@ -205,13 +222,13 @@ sudo make install
### Verify the installation ### Verify the installation
```bash ```bash
python3.7 python3.10
``` ```
### Set Python 3.7.16 as default ### Set Python 3.10.14 as default
```bash ```bash
alias python='/usr/local/bin/python3.7' alias python='/usr/local/bin/python3.10'
source ~/.bashrc source ~/.bashrc
``` ```
@ -241,14 +258,15 @@ wsl.exe
![Shell Path - Terminal](image/shell_path.png) ![Shell Path - Terminal](image/shell_path.png)
### High Memory Usage warnings ### High Memory Usage warnings
If you experience high memory usage, click on `Help` in the toolbar and choose `Change Memory Settings` to increase the memory heap of the IDE.
Click on `Help` in the toolbar and choose `Change Memory Settings` to increase the memory heap of the IDE.
### Missing or incorrect imported modules ### Missing or incorrect imported modules
PyCharm may ignore some information from the `requirements.txt` and `pyproject.toml` from the project (such as their specific versions). If you have problems at runtime or while debugging with a certain module, search for the correct version of that specific module and reinstall it from PyCharm's package manager. PyCharm might not fully recognize some details from `requirements.txt` and `pyproject.toml` (e.g., specific module versions). If you encounter issues at runtime or while debugging, search for the correct version of the module and reinstall it using PyCharm's package manager.
### Can't run ERPLibre from PyCharm ### Can't run ERPLibre from PyCharm
Run the following command in the root of the project from the terminal in PyCharm or WSL2
If ERPLibre fails to run from PyCharm, execute the following command in the root directory of the project from the terminal in PyCharm or WSL2:
```bash ```bash
./script/ide/pycharm_configuration.py ./script/ide/pycharm_configuration.py
``` ```
@ -258,8 +276,20 @@ Run `htop` from the terminal in PyCharm or WSL2 and close the python processes r
## References ## References
[WSL Installation](https://learn.microsoft.com/en-us/windows/wsl/install) [WSL Installation](https://learn.microsoft.com/en-us/windows/wsl/install)
Comprehensive guide on installing Windows Subsystem for Linux (WSL) on Windows.
[PostgreSQL Official Documentation](https://www.postgresql.org/docs/)
Official PostgreSQL documentation for troubleshooting common issues and learning more about PostgreSQL commands and configuration.
[PyCharm Installation and Configuration](https://www.jetbrains.com/pycharm/quickstart/)
Quick start guide for setting up and configuring PyCharm, including handling Python modules and environment setup.
[WSL Troubleshooting](https://learn.microsoft.com/en-us/windows/wsl/troubleshoot)
Troubleshooting guide for common issues encountered in WSL, providing solutions for various problems that may arise.
[Linux GUI](https://hub.tcno.co/windows/wsl/desktop-gui/) [Linux GUI](https://hub.tcno.co/windows/wsl/desktop-gui/)
Instructions for setting up a graphical user interface (GUI) in WSL, which might be helpful for better integration of Linux applications.
[Memory Problem](https://www.aleksandrhovhannisyan.com/blog/limiting-memory-usage-in-wsl-2/) [Memory Problem](https://www.aleksandrhovhannisyan.com/blog/limiting-memory-usage-in-wsl-2/)
Guide on how to manage and limit memory usage in WSL 2 to avoid high memory consumption issues.

View file

@ -29,6 +29,7 @@ RUN apt-get update \
python3-watchdog \ python3-watchdog \
python3-xlrd \ python3-xlrd \
python3-xlwt \ python3-xlwt \
cython \
xz-utils \ xz-utils \
git \ git \
iproute2 \ iproute2 \

View file

@ -1,5 +1,9 @@
FROM python:3.7.17-slim-bullseye # syntax=docker/dockerfile:1
MAINTAINER TechnoLibre <docker@technolibre.ca>
ARG PYTHON_VERSION=3.10.14
ARG DEBIAN_NAME=bookworm
FROM python:${PYTHON_VERSION}-slim-${DEBIAN_NAME}
#MAINTAINER TechnoLibre <docker@technolibre.ca>
SHELL ["/bin/bash", "-xo", "pipefail", "-c"] SHELL ["/bin/bash", "-xo", "pipefail", "-c"]
@ -15,6 +19,9 @@ ENV LANG="C.UTF-8" \
ENV ODOO_PREFIX /ERPLibre ENV ODOO_PREFIX /ERPLibre
ENV ODOO_EXEC_BIN $ODOO_PREFIX/odoo/odoo-bin ENV ODOO_EXEC_BIN $ODOO_PREFIX/odoo/odoo-bin
ARG URL_WKHTMLTOX=github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
ARG SHA1SUM_WKTHMLTOX=e9f95436298c77cc9406bd4bbd242f4771d0a4b2
# Install some deps, lessc and less-plugin-clean-css, and wkhtmltopdf # Install some deps, lessc and less-plugin-clean-css, and wkhtmltopdf
RUN apt-get update \ RUN apt-get update \
&& apt-get install -y --no-install-recommends \ && apt-get install -y --no-install-recommends \
@ -65,14 +72,17 @@ RUN apt-get update \
libncursesw5-dev \ libncursesw5-dev \
libffi-dev \ libffi-dev \
uuid-dev \ uuid-dev \
portaudio19-dev \
swig \ swig \
&& curl -o wkhtmltox.deb -sSL https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_amd64.deb \ && curl -o wkhtmltox.deb -sSL https://${URL_WKHTMLTOX}/ \
&& echo 'd9f259a67e05e1c221d48b504453645e6c491fab wkhtmltox.deb' | sha1sum -c - \ && echo "${SHA1SUM_WKTHMLTOX} wkhtmltox.deb" | sha1sum -c - \
&& apt-get install -y --no-install-recommends ./wkhtmltox.deb \ && apt-get install -y --no-install-recommends ./wkhtmltox.deb \
&& rm -rf /var/lib/apt/lists/* wkhtmltox.deb && rm -rf /var/lib/apt/lists/* wkhtmltox.deb
ARG DEBIAN_NAME=bookworm
# Install latest postgresql-client # Install latest postgresql-client
RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main' > /etc/apt/sources.list.d/pgdg.list \ RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ ${DEBIAN_NAME}-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
&& GNUPGHOME="$(mktemp -d)" \ && GNUPGHOME="$(mktemp -d)" \
&& export GNUPGHOME \ && export GNUPGHOME \
&& repokey='B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8' \ && repokey='B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8' \
@ -88,19 +98,6 @@ RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main' > /etc/
RUN npm install -g rtlcss less prettier @prettier/plugin-xml \ RUN npm install -g rtlcss less prettier @prettier/plugin-xml \
&& ln -fs /usr/local/bin/lessc /usr/bin/lessc && ln -fs /usr/local/bin/lessc /usr/bin/lessc
# Install python with pyenv
# Reference https://github.com/bopen/docker-ubuntu-pyenv
#COPY pyenv-version.txt python-versions.txt /
#RUN git clone -b `cat /pyenv-version.txt` --single-branch --depth 1 https://github.com/pyenv/pyenv.git $PYENV_ROOT \
# && for version in `cat /python-versions.txt`; do pyenv install $version; done \
# && pyenv global `cat /python-versions.txt` \
# && find $PYENV_ROOT/versions -type d '(' -name '__pycache__' -o -name 'test' -o -name 'tests' ')' -exec rm -rf '{}' + \
# && find $PYENV_ROOT/versions -type f '(' -name '*.pyo' -o -name '*.exe' ')' -exec rm -f '{}' + \
# && rm -rf /tmp/* \
# && python --version \
# && python3 --version
# Install git-repo # Install git-repo
RUN cd ; mkdir -p .bin/ && \ RUN cd ; mkdir -p .bin/ && \
git config --global color.ui false && \ git config --global color.ui false && \

View file

@ -1,37 +0,0 @@
FROM technolibre/erplibre-base:12.0
USER root
RUN apt update && \
apt install -y -y --no-install-recommends \
build-essential \
wget \
python3-dev \
python3-venv \
python3-wheel \
libxslt-dev \
libzip-dev \
libldap2-dev \
libsasl2-dev \
python3-setuptools \
libpng16-16 \
gdebi \
&& rm -rf /var/lib/apt/lists/* \
&& npm install -g rtlcss
# RUN pip3 install -r https://raw.githubusercontent.com/odoo/odoo/12.0/requirements.txt --ignore-installed psycopg2 && pip3a cache purge
ENV ADDONS_BASE_DIR /ERPLibre
ENV ENV=dev
# Copy entrypoint script and Odoo configuration file
COPY ./entrypoint.sh /
RUN chmod +x /entrypoint.sh
COPY repo_manifest_gen_org_prefix_path.py /usr/bin/
RUN chmod +x /usr/bin/repo_manifest_gen_org_prefix_path.py
USER odoo
ENTRYPOINT ["/entrypoint.sh"]
CMD ["odoo"]

View file

@ -1,10 +1,17 @@
FROM technolibre/erplibre-base:1.5.0 ARG ERPLIBRE_IMAGE_NAME=1.5.0
FROM technolibre/erplibre-base:${ERPLIBRE_IMAGE_NAME}
ARG ERPLIBRE_VERSION=odoo16.0_python3.10.14
ARG ODOO_VERSION=16.0
ARG POETRY_VERSION=1.8.3
ENV REPO_MANIFEST_URL https://github.com/ERPLibre/ERPLibre ENV REPO_MANIFEST_URL https://github.com/ERPLibre/ERPLibre
ARG WORKING_BRANCH ARG WORKING_BRANCH
ARG WORKING_HASH ARG WORKING_HASH
ENV BRANCH_ERPLIBRE $WORKING_BRANCH ENV BRANCH_ERPLIBRE $WORKING_BRANCH
ENV COMMIT_ERPLIBRE $WORKING_HASH ENV COMMIT_ERPLIBRE $WORKING_HASH
ENV COMMIT_ERPLIBRE $WORKING_HASH
ENV DOCKER_BUILD=true
RUN cat /etc/os-release RUN cat /etc/os-release
@ -27,27 +34,48 @@ RUN cd ; mkdir -p .bin/ && \
git checkout $COMMIT_ERPLIBRE git checkout $COMMIT_ERPLIBRE
RUN cd $ODOO_PREFIX && \ RUN cd $ODOO_PREFIX && \
ls -lha /ERPLibre && \
python -m venv .venv python -m venv .venv
RUN cd $ODOO_PREFIX && \ RUN cd $ODOO_PREFIX && \
ls -lha /ERPLibre && \
curl https://storage.googleapis.com/git-repo-downloads/repo > ./.venv/repo && \ curl https://storage.googleapis.com/git-repo-downloads/repo > ./.venv/repo && \
chmod +x ./.venv/repo chmod +x ./.venv/repo
RUN cd $ODOO_PREFIX && \ RUN cd $ODOO_PREFIX && \
./script/manifest/update_manifest_dev.sh ls -lha /ERPLibre && \
echo "${ERPLIBRE_VERSION}" && \
./script/version/update_env_version.py --erplibre_version "${ERPLIBRE_VERSION}"
RUN cd $ODOO_PREFIX && ls ./manifest -la && \
ls -lha /ERPLibre && \
./script/manifest/update_manifest_local_dev.sh
RUN apt update && \
apt install -y libgirepository1.0-dev && \
rm -rf /var/lib/apt/lists/*
# Install Poetry # Install Poetry
RUN cd $ODOO_PREFIX && \ RUN cd $ODOO_PREFIX && \
./.venv/bin/pip install --upgrade pip && \ ls -lha /ERPLibre && \
./.venv/bin/pip install poetry==1.3.1 && \ echo "${ERPLIBRE_VERSION}" && \
./.venv/bin/pip install --upgrade pip && git branch && ls . -lha && \
./.venv/bin/pip install "poetry==${POETRY_VERSION}" && \
./.venv/bin/poetry --version && \ ./.venv/bin/poetry --version && \
./.venv/bin/poetry install ./.venv/bin/poetry install
# Install local npm # Install local npm
RUN cd $ODOO_PREFIX && \ RUN cd $ODOO_PREFIX && \
ls -lha /ERPLibre && \
npm install npm install
# Create link to addons
RUN cd $ODOO_PREFIX && \ RUN cd $ODOO_PREFIX && \
ls -lha /ERPLibre && \
ln -s "addons.odoo${ODOO_VERSION}" addons
RUN cd $ODOO_PREFIX && \
ls -lha /ERPLibre && \
head /etc/odoo/odoo.conf && \ head /etc/odoo/odoo.conf && \
./docker/repo_manifest_gen_org_prefix_path.py $ODOO_PREFIX/addons /etc/odoo/odoo.conf /etc/odoo/odoo.conf && \ ./docker/repo_manifest_gen_org_prefix_path.py $ODOO_PREFIX/addons /etc/odoo/odoo.conf /etc/odoo/odoo.conf && \
head /etc/odoo/odoo.conf head /etc/odoo/odoo.conf

View file

@ -1,41 +0,0 @@
FROM technolibre/erplibre-base:12.0
# TODO
# ENV REPO_MANIFEST_URL https://github.com/agileops/ERPLibre.git
# RUN cat /etc/os-release
# USER root
# # Install Odoo
# ENV ODOO_VERSION 12.0
# ARG ODOO_RELEASE=20200417
# ARG ODOO_SHA=ca4a7485b0b75850ffe1458a8f3266839400a501
# RUN curl -o odoo.deb -sSL http://nightly.odoo.com/${ODOO_VERSION}/nightly/deb/odoo_${ODOO_VERSION}.${ODOO_RELEASE}_all.deb \
# && echo "${ODOO_SHA} odoo.deb" | sha1sum -c - \
# && apt-get update \
# && apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew install --no-install-recommends ./odoo.deb \
# && rm -rf /var/lib/apt/lists/* odoo.deb
# RUN mkdir ~/.ssh/ && echo "StrictHostKeyChecking no" >> ~/.ssh/config && apt update && apt install ssh-client git -y --no-install-recommends && \
# rm -rf /var/lib/apt/lists/*
# RUN cd ; mkdir -p .bin/ && \
# git config --global color.ui false && \
# git config --global user.email "foo@bar.io" && \
# git config --global user.name "Foo Bar" && \
# mkdir -p $ODOO_PREFIX && cd $ODOO_PREFIX && \
# repo init -u $REPO_MANIFEST_URL -b 12.0_repo && \
# repo sync -j 4 -c
# ADD repo_manifest_gen_org_prefix_path.py /root/.bin/
# RUN chmod +x ~/.bin/repo_manifest_gen_org_prefix_path.py
# RUN head /etc/odoo/odoo.conf && /root/.bin/repo_manifest_gen_org_prefix_path.py $ODOO_PREFIX/addons /etc/odoo/odoo.conf /etc/odoo/odoo.conf && head /etc/odoo/odoo.conf
# user odoo
# ENTRYPOINT ["/entrypoint.sh"]
# CMD ["odoo"]

View file

@ -2,7 +2,7 @@
Those images are prepared to permit better portability and reproducibility of ERPLibre release. Those images are prepared to permit better portability and reproducibility of ERPLibre release.
Due the the growing code of ERPLibre, it could also simplify development. Due the growing code of ERPLibre, it could also simplify development.
NOTE: Those Dockerfiles themselves are in heavy development for now. Incompatibilities between releases are normal until the interface is stabilized. NOTE: Those Dockerfiles themselves are in heavy development for now. Incompatibilities between releases are normal until the interface is stabilized.
@ -114,7 +114,7 @@ And restart docker service. You can delete or move all older locations of docker
# Update docker # Update docker
When building your docker with script When building your docker with script
> make docker_build > make docker_build_odoo_16
List your docker version List your docker version
> docker images > docker images

View file

@ -79,7 +79,7 @@ case "$1" in
if [[ "${STOP_BEFORE_INIT}" == "True" ]] ; then if [[ "${STOP_BEFORE_INIT}" == "True" ]] ; then
sleep 999999 sleep 999999
fi fi
./docker/wait-for-psql.py ${DB_ARGS[@]} --timeout=30 /ERPLibre/.venv/bin/python ./docker/wait-for-psql.py ${DB_ARGS[@]} --timeout=30
if [[ "${UPDATE_ALL_DB}" == "True" ]] ; then if [[ "${UPDATE_ALL_DB}" == "True" ]] ; then
# --stop-after-init # --stop-after-init
exec ./.venv/bin/python $ODOO_EXEC_BIN "$@" "${DB_ARGS[@]}" -c /etc/odoo/odoo.conf -u all -d "${DB_NAME}" exec ./.venv/bin/python $ODOO_EXEC_BIN "$@" "${DB_ARGS[@]}" -c /etc/odoo/odoo.conf -u all -d "${DB_NAME}"
@ -93,7 +93,7 @@ case "$1" in
if [[ "${STOP_BEFORE_INIT}" == "True" ]] ; then if [[ "${STOP_BEFORE_INIT}" == "True" ]] ; then
sleep 999999 sleep 999999
fi fi
./docker/wait-for-psql.py ${DB_ARGS[@]} --timeout=30 /ERPLibre/.venv/bin/python ./docker/wait-for-psql.py ${DB_ARGS[@]} --timeout=30
if [[ "${UPDATE_ALL_DB}" == "True" ]] ; then if [[ "${UPDATE_ALL_DB}" == "True" ]] ; then
exec ./.venv/bin/python $ODOO_EXEC_BIN "$@" "${DB_ARGS[@]}" -c /etc/odoo/odoo.conf -u all -d "${DB_NAME}" exec ./.venv/bin/python $ODOO_EXEC_BIN "$@" "${DB_ARGS[@]}" -c /etc/odoo/odoo.conf -u all -d "${DB_NAME}"
else else

View file

@ -1,32 +0,0 @@
FROM technolibre/erplibre-base:12.0
ENV REPO_MANIFEST_URL https://github.com/agileops/ERPLibre.git
RUN cat /etc/os-release
ENV ADDONS_BASE_DIR /odoo
USER root
RUN mkdir ~/.ssh/ && echo "StrictHostKeyChecking no" >> ~/.ssh/config && apt update && apt install ssh-client git -y --no-install-recommends && \
rm -rf /var/lib/apt/lists/*
RUN cd ; mkdir -p .bin/ && \
git config --global color.ui false && \
git config --global user.email "foo@bar.io" && \
git config --global user.name "Foo Bar" && \
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo && \
chmod +x ~/.bin/repo && sed -i '1 s/python$/python3/' ~/.bin/repo && head ~/.bin/repo && \
export PATH="${HOME}/.bin:${PATH}" && \
mkdir -p $ADDONS_BASE_DIR && cd $ADDONS_BASE_DIR && \
repo init -u $REPO_MANIFEST_URL -b 12.0_repo && \
repo sync -j 4 -c
ADD repo_manifest_gen_org_prefix_path.py /root/.bin/ RUN chmod +x
~/.bin/repo_manifest_gen_org_prefix_path.py
RUN head /etc/odoo/odoo.conf && /root/.bin/repo_manifest_gen_org_prefix_path.py $ADDONS_BASE_DIR/addons /etc/odoo/odoo.conf /etc/odoo/odoo.conf && head /etc/odoo/odoo.conf
user odoo
ENTRYPOINT ["/entrypoint.sh"]
CMD ["odoo"]

View file

@ -1 +0,0 @@
v1.2.20

View file

@ -1 +0,0 @@
3.7.16

View file

@ -1,4 +1,6 @@
#!./.venv/bin/python #!/usr/bin/env python
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import psycopg2 import psycopg2
import sys import sys

View file

@ -6,6 +6,10 @@ EL_USER="erplibre"
EL_HOME="/${EL_USER}" EL_HOME="/${EL_USER}"
EL_HOME_ERPLIBRE="${EL_HOME}/erplibre" EL_HOME_ERPLIBRE="${EL_HOME}/erplibre"
EL_HOME_ODOO="${EL_HOME_ERPLIBRE}/odoo" EL_HOME_ODOO="${EL_HOME_ERPLIBRE}/odoo"
EL_ODOO_VERSION=$(cat ".odoo-version" | xargs)
EL_POETRY_VERSION=$(cat ".poetry-version" | xargs)
EL_PYTHON_VERSION=$(cat ".python-version" | xargs)
EL_ERPLIBRE_VERSION=$(cat ".erplibre-version" | xargs)
# The default port where this Odoo instance will run under (provided you use the command -c in the terminal) # The default port where this Odoo instance will run under (provided you use the command -c in the terminal)
# Set to true if you want to install it, false if you don't need it or have it already installed. # Set to true if you want to install it, false if you don't need it or have it already installed.
EL_INSTALL_WKHTMLTOPDF="True" EL_INSTALL_WKHTMLTOPDF="True"

View file

@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="CybroOdoo" fetch="https://github.com/ERPLibre/"/>
<remote name="ERPLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="MathBenTech" fetch="https://github.com/ERPLibre/"/>
<remote name="Numigi" fetch="https://github.com/ERPLibre/"/>
<remote name="OCA" fetch="https://github.com/ERPLibre/"/>
<remote name="OmniaGit" fetch="https://github.com/ERPLibre/"/>
<remote name="Smile-SA" fetch="https://github.com/ERPLibre/"/>
<remote name="TechnoLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="ajepe" fetch="https://github.com/ERPLibre/"/>
<remote name="camptocamp" fetch="https://github.com/ERPLibre/"/>
<remote name="dhongu" fetch="https://github.com/ERPLibre/"/>
<remote name="it-projects-llc" fetch="https://github.com/ERPLibre/"/>
<remote name="itpp-labs" fetch="https://github.com/ERPLibre/"/>
<remote name="JayVora-SerpentCS" fetch="https://github.com/ERPLibre/"/>
<remote name="kinjal-sorathiya" fetch="https://github.com/ERPLibre/"/>
<remote name="muk-it" fetch="https://github.com/ERPLibre/"/>
<remote name="novacode-nl" fetch="https://github.com/ERPLibre/"/>
<remote name="obayit" fetch="https://github.com/ERPLibre/"/>
<remote name="odoo" fetch="https://github.com/ERPLibre/"/>
<remote name="odooaktiv" fetch="https://github.com/ERPLibre/"/>
<remote name="odoomates" fetch="https://github.com/ERPLibre/"/>
<remote name="openeducat" fetch="https://github.com/ERPLibre/"/>
<remote name="pledra" fetch="https://github.com/ERPLibre/"/>
<remote name="tegin" fetch="https://github.com/ERPLibre/"/>
<default remote="ERPLibre" revision="12.0" sync-j="4" sync-c="true"/>
<project name="ERPLibre_image_db.git" path="image_db" remote="ERPLibre" clone-depth="1" revision="main" groups="base"/>
<project name="OpenHRMS.git" path="addons.odoo12.0/CybroOdoo_OpenHRMS" remote="CybroOdoo" revision="dev_12.0" groups="addons"/>
<project name="Property-Management_odoo.git" path="addons.odoo12.0/kinjal-sorathiya_Property-Management_odoo" remote="kinjal-sorathiya" revision="master" groups="addons"/>
<project name="QuotationRevision.git" path="addons.odoo12.0/MathBenTech_QuotationRevision" remote="MathBenTech" groups="addons"/>
<project name="access-addons.git" path="addons.odoo12.0/itpp-labs_access-addons" remote="itpp-labs" revision="12.0_dev" groups="addons"/>
<project name="account-analytic.git" path="addons.odoo12.0/OCA_account-analytic" remote="OCA" revision="12.0_dev" groups="addons"/>
<project name="account-budgeting.git" path="addons.odoo12.0/OCA_account-budgeting" remote="OCA" groups="addons"/>
<project name="account-closing.git" path="addons.odoo12.0/OCA_account-closing" remote="OCA" groups="addons"/>
<project name="account-consolidation.git" path="addons.odoo12.0/OCA_account-consolidation" remote="OCA" groups="addons"/>
<project name="account-financial-reporting.git" path="addons.odoo12.0/OCA_account-financial-reporting" remote="OCA" groups="addons"/>
<project name="account-financial-tools.git" path="addons.odoo12.0/OCA_account-financial-tools" remote="OCA" revision="12.0_dev" groups="addons"/>
<project name="account-fiscal-rule.git" path="addons.odoo12.0/OCA_account-fiscal-rule" remote="OCA" groups="addons"/>
<project name="account-invoice-reporting.git" path="addons.odoo12.0/OCA_account-invoice-reporting" remote="OCA" groups="addons"/>
<project name="account-invoicing.git" path="addons.odoo12.0/OCA_account-invoicing" remote="OCA" groups="addons"/>
<project name="account-payment.git" path="addons.odoo12.0/OCA_account-payment" remote="OCA" groups="addons"/>
<project name="account-reconcile.git" path="addons.odoo12.0/OCA_account-reconcile" remote="OCA" groups="addons"/>
<project name="apps-store.git" path="addons.odoo12.0/OCA_apps-store" remote="OCA" groups="addons"/>
<project name="bank-payment.git" path="addons.odoo12.0/OCA_bank-payment" remote="OCA" groups="addons"/>
<project name="bank-statement-import.git" path="addons.odoo12.0/OCA_bank-statement-import" remote="OCA" groups="addons"/>
<project name="brand.git" path="addons.odoo12.0/OCA_brand" remote="OCA" groups="addons"/>
<project name="business-requirement.git" path="addons.odoo12.0/OCA_business-requirement" remote="OCA" groups="addons"/>
<project name="commission.git" path="addons.odoo12.0/OCA_commission" remote="OCA" groups="addons"/>
<project name="community-data-files.git" path="addons.odoo12.0/OCA_community-data-files" remote="OCA" groups="addons"/>
<project name="connector-ecommerce.git" path="addons.odoo12.0/OCA_connector-ecommerce" remote="OCA" groups="addons"/>
<project name="connector-interfaces.git" path="addons.odoo12.0/OCA_connector-interfaces" remote="OCA" groups="addons"/>
<project name="connector-jira.git" path="addons.odoo12.0/OCA_connector-jira" remote="OCA" groups="addons"/>
<project name="connector-telephony.git" path="addons.odoo12.0/OCA_connector-telephony" remote="OCA" groups="addons"/>
<project name="connector.git" path="addons.odoo12.0/OCA_connector" remote="OCA" groups="addons"/>
<project name="contract.git" path="addons.odoo12.0/OCA_contract" remote="OCA" groups="addons,code_generator,image_db"/>
<project name="credit-control.git" path="addons.odoo12.0/OCA_credit-control" remote="OCA" groups="addons"/>
<project name="crm.git" path="addons.odoo12.0/OCA_crm" remote="OCA" groups="addons"/>
<project name="currency.git" path="addons.odoo12.0/OCA_currency" remote="OCA" groups="addons"/>
<project name="data-protection.git" path="addons.odoo12.0/OCA_data-protection" remote="OCA" groups="addons"/>
<project name="ddmrp.git" path="addons.odoo12.0/OCA_ddmrp" remote="OCA" groups="addons"/>
<project name="delivery-carrier.git" path="addons.odoo12.0/OCA_delivery-carrier" remote="OCA" groups="addons"/>
<project name="deltatech.git" path="addons.odoo12.0/dhongu_deltatech" remote="dhongu" groups="addons"/>
<project name="design-themes.git" path="addons.odoo12.0/odoo_design-themes" remote="odoo" groups="addons,code_generator,image_db"/>
<project name="development.git" path="addons.odoo12.0/MathBenTech_development" remote="MathBenTech" groups="addons,base"/>
<project name="documentation-user.git" path="doc/odoo_documentation-user" remote="odoo" groups="odoo"/>
<project name="donation.git" path="addons.odoo12.0/OCA_donation" remote="OCA" revision="12.0_module_donation_website" groups="addons"/>
<project name="e-commerce.git" path="addons.odoo12.0/OCA_e-commerce" remote="OCA" groups="addons"/>
<project name="edi.git" path="addons.odoo12.0/OCA_edi" remote="OCA" groups="addons"/>
<project name="erplibre-3D-printing-addons.git" path="addons.odoo12.0/ERPLibre_erplibre-3D-printing-addons" remote="ERPLibre" groups="addons"/>
<project name="erplibre-family-management.git" path="addons.odoo12.0/MathBenTech_erplibre-family-management" remote="MathBenTech" groups="addons,code_generator"/>
<project name="erplibre_addons.git" path="addons.odoo12.0/ERPLibre_erplibre_addons" remote="ERPLibre" revision="12.0_erplibre_devops" groups="addons,base"/>
<project name="erplibre_theme_addons.git" path="addons.odoo12.0/ERPLibre_erplibre_theme_addons" remote="ERPLibre" groups="addons,code_generator,image_db"/>
<project name="event.git" path="addons.odoo12.0/OCA_event" remote="OCA" groups="addons"/>
<project name="field-service.git" path="addons.odoo12.0/OCA_field-service" remote="OCA" groups="addons"/>
<project name="fleet.git" path="addons.odoo12.0/OCA_fleet" remote="OCA" groups="addons"/>
<project name="geospatial.git" path="addons.odoo12.0/OCA_geospatial" remote="OCA" groups="addons,code_generator,image_db"/>
<project name="helpdesk.git" path="addons.odoo12.0/OCA_helpdesk" remote="OCA" revision="12.0_dev" groups="addons,code_generator,image_db"/>
<project name="hr.git" path="addons.odoo12.0/OCA_hr" remote="OCA" groups="addons"/>
<project name="interface-github.git" path="addons.odoo12.0/OCA_interface-github" remote="OCA" groups="addons"/>
<project name="knowledge.git" path="addons.odoo12.0/OCA_knowledge" remote="OCA" groups="addons"/>
<project name="l10n-canada.git" path="addons.odoo12.0/OCA_l10n-canada" remote="OCA" groups="addons"/>
<project name="maintainer-tools.git" path="script/OCA_maintainer-tools" remote="OCA" revision="master" groups="odoo,code_generator"/>
<project name="maintenance.git" path="addons.odoo12.0/OCA_maintenance" remote="OCA" groups="addons"/>
<project name="management-system.git" path="addons.odoo12.0/OCA_management-system" remote="OCA" groups="addons"/>
<project name="manufacture.git" path="addons.odoo12.0/OCA_manufacture" remote="OCA" groups="addons"/>
<project name="margin-analysis.git" path="addons.odoo12.0/OCA_margin-analysis" remote="OCA" revision="12.0_sale_margin_editor" groups="addons"/>
<project name="medical-fhir.git" path="addons.odoo12.0/tegin_medical-fhir" remote="tegin" groups="addons"/>
<project name="mis-builder.git" path="addons.odoo12.0/OCA_mis-builder" remote="OCA" groups="addons"/>
<project name="muk_base.git" path="addons.odoo12.0/muk-it_muk_base" remote="muk-it" revision="12.0_dev" groups="addons,base"/>
<project name="muk_dms.git" path="addons.odoo12.0/muk-it_muk_dms" remote="muk-it" groups="addons"/>
<project name="muk_docs.git" path="addons.odoo12.0/muk-it_muk_docs" remote="muk-it" groups="addons"/>
<project name="muk_misc.git" path="addons.odoo12.0/muk-it_muk_misc" remote="muk-it" revision="12.0_dev" groups="addons,base"/>
<project name="muk_quality.git" path="addons.odoo12.0/muk-it_muk_quality" remote="muk-it" groups="addons"/>
<project name="muk_web.git" path="addons.odoo12.0/muk-it_muk_web" remote="muk-it" revision="12.0_dev" groups="addons,base,code_generator"/>
<project name="muk_website.git" path="addons.odoo12.0/muk-it_muk_website" remote="muk-it" revision="12.0_remove_autoinstall" groups="addons,base"/>
<project name="multi-company.git" path="addons.odoo12.0/OCA_multi-company" remote="OCA" groups="addons"/>
<project name="odoo-addons.git" path="addons.odoo12.0/ajepe_odoo-addons" remote="ajepe" revision="12.0_dev" groups="addons,base"/>
<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-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"/>
<project name="odoo-formio.git" path="addons.odoo12.0/novacode-nl_odoo-formio" remote="novacode-nl" groups="addons"/>
<project name="odoo-hr-addons.git" path="addons.odoo12.0/Numigi_odoo-hr-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-module-migrator.git" path="script/OCA_odoo-module-migrator" remote="OCA" revision="master" groups="odoo"/>
<project name="odoo-partner-addons.git" path="addons.odoo12.0/Numigi_odoo-partner-addons" remote="Numigi" revision="12.0_dev" groups="addons,base,image_db"/>
<project name="odoo-product-addons.git" path="addons.odoo12.0/Numigi_odoo-product-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-port-docs.git" path="doc/itpp-labs_odoo-port-docs" remote="itpp-labs" revision="master" groups="odoo"/>
<project name="odoo-product-configurator.git" path="addons.odoo12.0/pledra_odoo-product-configurator" remote="pledra" revision="12.0_dev" groups="addons"/>
<project name="odoo-project-addons.git" path="addons.odoo12.0/Numigi_odoo-project-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-purchase-addons.git" path="addons.odoo12.0/Numigi_odoo-purchase-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-stock-addons.git" path="addons.odoo12.0/Numigi_odoo-stock-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-survey-addons.git" path="addons.odoo12.0/Numigi_odoo-survey-addons" remote="Numigi" groups="addons"/>
<project name="odoo-test-docs.git" path="doc/itpp-labs_odoo-test-docs" remote="itpp-labs" revision="master" groups="odoo"/>
<project name="odoo-timesheet-addons.git" path="addons.odoo12.0/Numigi_odoo-timesheet-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-web-addons.git" path="addons.odoo12.0/Numigi_odoo-web-addons" remote="Numigi" groups="addons,base"/>
<project name="odoo.git" path="odoo" remote="odoo" revision="ERPLibre/12.0" clone-depth="10" groups="odoo,base"/>
<project name="odoo_addons.git" path="addons.odoo12.0/Smile-SA_odoo_addons" remote="Smile-SA" revision="12.0_remote_autoinstall" groups="addons"/>
<project name="odoo_dhtmlxgantt.git" path="addons.odoo12.0/obayit_odoo_dhtmlxgantt" remote="obayit" groups="addons"/>
<project name="odooapps.git" path="addons.odoo12.0/odoomates_odooapps" remote="odoomates" groups="addons"/>
<project name="odooplm.git" path="addons.odoo12.0/OmniaGit_odooplm" remote="OmniaGit" groups="addons"/>
<project name="openeducat_erp.git" path="addons.odoo12.0/openeducat_openeducat_erp" remote="openeducat" groups="addons"/>
<project name="operating-unit.git" path="addons.odoo12.0/OCA_operating-unit" remote="OCA" groups="addons"/>
<project name="partner-contact.git" path="addons.odoo12.0/OCA_partner-contact" remote="OCA" groups="addons"/>
<project name="pos-addons.git" path="addons.odoo12.0/itpp-labs_pos-addons" remote="itpp-labs" groups="addons"/>
<project name="pos.git" path="addons.odoo12.0/OCA_pos" remote="OCA" groups="addons"/>
<project name="product-attribute.git" path="addons.odoo12.0/OCA_product-attribute" remote="OCA" groups="addons"/>
<project name="product-pack.git" path="addons.odoo12.0/OCA_product-pack" remote="OCA" groups="addons"/>
<project name="product-variant.git" path="addons.odoo12.0/OCA_product-variant" remote="OCA" groups="addons"/>
<project name="product_rating_app.git" path="addons.odoo12.0/odooaktiv_product_rating_app" remote="odooaktiv" groups="addons"/>
<project name="project-reporting.git" path="addons.odoo12.0/OCA_project-reporting" remote="OCA" groups="addons"/>
<project name="project.git" path="addons.odoo12.0/OCA_project" remote="OCA" revision="12.0_fix_conflict_project_key" groups="addons"/>
<project name="purchase-workflow.git" path="addons.odoo12.0/OCA_purchase-workflow" remote="OCA" groups="addons"/>
<project name="queue.git" path="addons.odoo12.0/OCA_queue" remote="OCA" groups="addons"/>
<project name="reporting-engine.git" path="addons.odoo12.0/OCA_reporting-engine" remote="OCA" groups="addons"/>
<project name="rma.git" path="addons.odoo12.0/OCA_rma" remote="OCA" groups="addons"/>
<project name="saas-addons.git" path="addons.odoo12.0/it-projects-llc_saas-addons" remote="it-projects-llc" groups="addons"/>
<project name="sale-reporting.git" path="addons.odoo12.0/OCA_sale-reporting" remote="OCA" groups="addons"/>
<project name="sale-workflow.git" path="addons.odoo12.0/OCA_sale-workflow" remote="OCA" revision="12.0_modules_sale_order_line" groups="addons"/>
<project name="scrummer.git" path="addons.odoo12.0/MathBenTech_scrummer" remote="MathBenTech" revision="12.0_dev" groups="addons,base"/>
<project name="SerpentCS_Contributions.git" path="addons.odoo12.0/JayVora-SerpentCS_SerpentCS_Contributions" remote="JayVora-SerpentCS" groups="addons,code_generator,base"/>
<project name="server-auth.git" path="addons.odoo12.0/OCA_server-auth" remote="OCA" groups="addons,base,image_db"/>
<project name="server-backend.git" path="addons.odoo12.0/OCA_server-backend" remote="OCA" revision="12.0_dev" groups="addons"/>
<project name="server-brand.git" path="addons.odoo12.0/OCA_server-brand" remote="OCA" groups="addons,base"/>
<project name="server-env.git" path="addons.odoo12.0/OCA_server-env" remote="OCA" groups="addons"/>
<project name="server-tools.git" path="addons.odoo12.0/OCA_server-tools" remote="OCA" revision="12.0_dev" groups="addons,base"/>
<project name="server-ux.git" path="addons.odoo12.0/OCA_server-ux" remote="OCA" groups="addons,base"/>
<project name="social.git" path="addons.odoo12.0/OCA_social" remote="OCA" groups="addons,base"/>
<project name="stock-logistics-warehouse.git" path="addons.odoo12.0/OCA_stock-logistics-warehouse" remote="OCA" revision="12.0_dev" groups="addons"/>
<project name="storage.git" path="addons.odoo12.0/OCA_storage" remote="OCA" groups="addons"/>
<project name="timesheet.git" path="addons.odoo12.0/OCA_timesheet" remote="OCA" revision="12.0_support_project_agile_timesheet" groups="addons"/>
<project name="vertical-association.git" path="addons.odoo12.0/OCA_vertical-association" remote="OCA" groups="addons"/>
<project name="vertical-hotel.git" path="addons.odoo12.0/OCA_vertical-hotel" remote="OCA" groups="addons"/>
<project name="vertical-isp.git" path="addons.odoo12.0/OCA_vertical-isp" remote="OCA" groups="addons"/>
<project name="vertical-travel.git" path="addons.odoo12.0/OCA_vertical-travel" remote="OCA" groups="addons"/>
<project name="web.git" path="addons.odoo12.0/OCA_web" remote="OCA" revision="12.0_dev" groups="addons,base"/>
<project name="website-addons.git" path="addons.odoo12.0/itpp-labs_website-addons" remote="itpp-labs" revision="12.0_dev" groups="addons"/>
<project name="website-cms.git" path="addons.odoo12.0/OCA_website-cms" remote="OCA" groups="addons"/>
<project name="website.git" path="addons.odoo12.0/OCA_website" remote="OCA" revision="12.0_dev" groups="addons,code_generator,image_db"/>
<project name="wms.git" path="addons.odoo12.0/OCA_wms" remote="OCA" groups="addons"/>
</manifest>

View file

@ -0,0 +1,148 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="CybroOdoo" fetch="https://github.com/CybroOdoo/"/>
<remote name="ERPLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="MathBenTech" fetch="https://github.com/MathBenTech/"/>
<remote name="Numigi" fetch="https://github.com/Numigi/"/>
<remote name="OCA" fetch="https://github.com/OCA/"/>
<remote name="OmniaGit" fetch="https://github.com/OmniaGit/"/>
<remote name="Smile-SA" fetch="https://github.com/ERPLibre/"/>
<remote name="TechnoLibre" fetch="https://github.com/TechnoLibre/"/>
<remote name="ajepe" fetch="https://github.com/ajepe/"/>
<remote name="camptocamp" fetch="https://github.com/camptocamp/"/>
<remote name="dhongu" fetch="https://github.com/dhongu/"/>
<remote name="it-projects-llc" fetch="https://github.com/it-projects-llc/"/>
<remote name="itpp-labs" fetch="https://github.com/itpp-labs/"/>
<remote name="kinjal-sorathiya" fetch="https://github.com/kinjal-sorathiya/"/>
<remote name="muk-it" fetch="https://github.com/muk-it/"/>
<remote name="novacode-nl" fetch="https://github.com/novacode-nl/"/>
<remote name="obayit" fetch="https://github.com/obayit/"/>
<remote name="odoo" fetch="https://github.com/ERPLibre/"/>
<remote name="odooaktiv" fetch="https://github.com/odooaktiv/"/>
<remote name="odoomates" fetch="https://github.com/odoomates/"/>
<remote name="openeducat" fetch="https://github.com/openeducat/"/>
<remote name="pledra" fetch="https://github.com/pledra/"/>
<remote name="tegin" fetch="https://github.com/tegin/"/>
<default remote="ERPLibre" revision="14.0" sync-j="4" sync-c="true"/>
<project name="ERPLibre_image_db.git" path="image_db" remote="ERPLibre" clone-depth="1" revision="main" groups="base"/>
<project name="OpenHRMS.git" path="addons.odoo14.0/CybroOdoo_OpenHRMS" remote="CybroOdoo" groups="addons"/>
<project name="access-addons.git" path="addons.odoo14.0/itpp-labs_access-addons" remote="itpp-labs" groups="addons"/>
<project name="account-analytic.git" path="addons.odoo14.0/OCA_account-analytic" remote="OCA" groups="addons"/>
<project name="account-budgeting.git" path="addons.odoo14.0/OCA_account-budgeting" remote="OCA" groups="addons"/>
<project name="account-closing.git" path="addons.odoo14.0/OCA_account-closing" remote="OCA" groups="addons"/>
<project name="account-consolidation.git" path="addons.odoo14.0/OCA_account-consolidation" remote="OCA" groups="addons"/>
<project name="account-financial-reporting.git" path="addons.odoo14.0/OCA_account-financial-reporting" remote="OCA" groups="addons"/>
<project name="account-financial-tools.git" path="addons.odoo14.0/OCA_account-financial-tools" remote="OCA" groups="addons"/>
<project name="account-fiscal-rule.git" path="addons.odoo14.0/OCA_account-fiscal-rule" remote="OCA" groups="addons"/>
<project name="account-invoice-reporting.git" path="addons.odoo14.0/OCA_account-invoice-reporting" remote="OCA" groups="addons"/>
<project name="account-invoicing.git" path="addons.odoo14.0/OCA_account-invoicing" remote="OCA" groups="addons"/>
<project name="account-payment.git" path="addons.odoo14.0/OCA_account-payment" remote="OCA" groups="addons"/>
<project name="account-reconcile.git" path="addons.odoo14.0/OCA_account-reconcile" remote="OCA" groups="addons"/>
<project name="apps-store.git" path="addons.odoo14.0/OCA_apps-store" remote="OCA" groups="addons"/>
<project name="bank-payment.git" path="addons.odoo14.0/OCA_bank-payment" remote="OCA" groups="addons"/>
<project name="bank-statement-import.git" path="addons.odoo14.0/OCA_bank-statement-import" remote="OCA" groups="addons"/>
<project name="brand.git" path="addons.odoo14.0/OCA_brand" remote="OCA" groups="addons"/>
<project name="business-requirement.git" path="addons.odoo14.0/OCA_business-requirement" remote="OCA" groups="addons"/>
<project name="commission.git" path="addons.odoo14.0/OCA_commission" remote="OCA" groups="addons"/>
<project name="community-data-files.git" path="addons.odoo14.0/OCA_community-data-files" remote="OCA" groups="addons"/>
<project name="connector-ecommerce.git" path="addons.odoo14.0/OCA_connector-ecommerce" remote="OCA" groups="addons"/>
<project name="connector-interfaces.git" path="addons.odoo14.0/OCA_connector-interfaces" remote="OCA" groups="addons"/>
<project name="connector-jira.git" path="addons.odoo14.0/OCA_connector-jira" remote="OCA" groups="addons"/>
<project name="connector-telephony.git" path="addons.odoo14.0/OCA_connector-telephony" remote="OCA" groups="addons"/>
<project name="connector.git" path="addons.odoo14.0/OCA_connector" remote="OCA" groups="addons"/>
<project name="contract.git" path="addons.odoo14.0/OCA_contract" remote="OCA" groups="addons"/>
<project name="credit-control.git" path="addons.odoo14.0/OCA_credit-control" remote="OCA" groups="addons"/>
<project name="crm.git" path="addons.odoo14.0/OCA_crm" remote="OCA" groups="addons"/>
<project name="currency.git" path="addons.odoo14.0/OCA_currency" remote="OCA" groups="addons"/>
<project name="data-protection.git" path="addons.odoo14.0/OCA_data-protection" remote="OCA" groups="addons"/>
<project name="ddmrp.git" path="addons.odoo14.0/OCA_ddmrp" remote="OCA" groups="addons"/>
<project name="delivery-carrier.git" path="addons.odoo14.0/OCA_delivery-carrier" remote="OCA" groups="addons"/>
<project name="deltatech.git" path="addons.odoo14.0/dhongu_deltatech" remote="dhongu" groups="addons"/>
<project name="design-themes.git" path="addons.odoo14.0/odoo_design-themes" remote="odoo" groups="addons"/>
<project name="donation.git" path="addons.odoo14.0/OCA_donation" remote="OCA" groups="addons"/>
<project name="e-commerce.git" path="addons.odoo14.0/OCA_e-commerce" remote="OCA" groups="addons"/>
<project name="edi.git" path="addons.odoo14.0/OCA_edi" remote="OCA" groups="addons"/>
<project name="event.git" path="addons.odoo14.0/OCA_event" remote="OCA" groups="addons"/>
<project name="field-service.git" path="addons.odoo14.0/OCA_field-service" remote="OCA" groups="addons"/>
<project name="fleet.git" path="addons.odoo14.0/OCA_fleet" remote="OCA" groups="addons"/>
<project name="geospatial.git" path="addons.odoo14.0/OCA_geospatial" remote="OCA" groups="addons"/>
<project name="helpdesk.git" path="addons.odoo14.0/OCA_helpdesk" remote="ERPLibre" revision="14.0_dev" groups="addons"/>
<project name="hr.git" path="addons.odoo14.0/OCA_hr" remote="OCA" groups="addons"/>
<project name="interface-github.git" path="addons.odoo14.0/OCA_interface-github" remote="OCA" groups="addons"/>
<project name="knowledge.git" path="addons.odoo14.0/OCA_knowledge" remote="OCA" groups="addons"/>
<project name="l10n-canada.git" path="addons.odoo14.0/OCA_l10n-canada" remote="OCA" groups="addons"/>
<project name="maintainer-tools.git" path="script/OCA_maintainer-tools" remote="OCA" revision="master" groups="odoo"/>
<project name="maintenance.git" path="addons.odoo14.0/OCA_maintenance" remote="OCA" groups="addons"/>
<project name="management-system.git" path="addons.odoo14.0/OCA_management-system" remote="OCA" groups="addons"/>
<project name="manufacture.git" path="addons.odoo14.0/OCA_manufacture" remote="OCA" groups="addons"/>
<project name="margin-analysis.git" path="addons.odoo14.0/OCA_margin-analysis" remote="OCA" groups="addons"/>
<project name="medical-fhir.git" path="addons.odoo14.0/tegin_medical-fhir" remote="tegin" groups="addons"/>
<project name="mis-builder.git" path="addons.odoo14.0/OCA_mis-builder" remote="OCA" groups="addons"/>
<project name="multi-company.git" path="addons.odoo14.0/OCA_multi-company" remote="OCA" groups="addons"/>
<project name="muk_web.git" path="addons.odoo14.0/muk-it_muk_web" remote="muk-it" groups="addons"/>
<project name="odoo-addons.git" path="addons.odoo14.0/ajepe_odoo-addons" remote="ajepe" groups="addons"/>
<project name="odoo-base-addons.git" path="addons.odoo14.0/Numigi_odoo-base-addons" remote="Numigi" groups="addons"/>
<project name="odoo-cloud-platform.git" path="addons.odoo14.0/camptocamp_odoo-cloud-platform" remote="camptocamp" groups="addons"/>
<project name="odoo-development.git" path="doc/itpp-labs_odoo-development" remote="itpp-labs" revision="master" groups="odoo"/>
<project name="odoo-entertainment-addons.git" path="addons.odoo14.0/Numigi_odoo-entertainment-addons" remote="Numigi" groups="addons"/>
<project name="odoo-formio.git" path="addons.odoo14.0/novacode-nl_odoo-formio" remote="novacode-nl" groups="addons"/>
<project name="odoo-git-addons.git" path="addons.odoo14.0/Numigi_odoo-git-addons" remote="Numigi" groups="addons"/>
<project name="odoo-hr-addons.git" path="addons.odoo14.0/Numigi_odoo-hr-addons" remote="Numigi" groups="addons"/>
<project name="odoo-module-migrator.git" path="script/OCA_odoo-module-migrator" remote="OCA" revision="master" groups="odoo"/>
<project name="odoo-partner-addons.git" path="addons.odoo14.0/Numigi_odoo-partner-addons" remote="Numigi" groups="addons"/>
<project name="odoo-port-docs.git" path="doc/itpp-labs_odoo-port-docs" remote="itpp-labs" revision="master" groups="odoo"/>
<project name="odoo-product-addons.git" path="addons.odoo14.0/Numigi_odoo-product-addons" remote="Numigi" groups="addons"/>
<project name="odoo-project-addons.git" path="addons.odoo14.0/Numigi_odoo-project-addons" remote="Numigi" groups="addons"/>
<project name="odoo-purchase-addons.git" path="addons.odoo14.0/Numigi_odoo-purchase-addons" remote="Numigi" groups="addons"/>
<project name="odoo-stock-addons.git" path="addons.odoo14.0/Numigi_odoo-stock-addons" remote="Numigi" groups="addons"/>
<project name="odoo-survey-addons.git" path="addons.odoo14.0/Numigi_odoo-survey-addons" remote="Numigi" groups="addons"/>
<project name="odoo-test-docs.git" path="doc/itpp-labs_odoo-test-docs" remote="itpp-labs" revision="master" groups="odoo"/>
<project name="odoo-timesheet-addons.git" path="addons.odoo14.0/Numigi_odoo-timesheet-addons" remote="Numigi" groups="addons"/>
<project name="odoo-web-addons.git" path="addons.odoo14.0/Numigi_odoo-web-addons" remote="Numigi" groups="addons"/>
<project name="odoo.git" path="odoo" remote="odoo" clone-depth="10" revision="ERPLibre/14.0" groups="odoo"/>
<project name="odoo_addons.git" path="addons.odoo14.0/Smile-SA_odoo_addons" remote="Smile-SA" revision="14.0_dev" groups="addons"/>
<project name="odoo_dhtmlxgantt.git" path="addons.odoo14.0/obayit_odoo_dhtmlxgantt" remote="obayit" groups="addons"/>
<project name="odooapps.git" path="addons.odoo14.0/odoomates_odooapps" remote="odoomates" groups="addons"/>
<project name="odooplm.git" path="addons.odoo14.0/OmniaGit_odooplm" remote="OmniaGit" groups="addons"/>
<project name="openeducat_erp.git" path="addons.odoo14.0/openeducat_openeducat_erp" remote="openeducat" groups="addons"/>
<project name="OpenUpgrade.git" path="script/OCA_OpenUpgrade" remote="OCA" clone-depth="10" groups="migration"/>
<project name="operating-unit.git" path="addons.odoo14.0/OCA_operating-unit" remote="OCA" groups="addons"/>
<project name="partner-contact.git" path="addons.odoo14.0/OCA_partner-contact" remote="OCA" groups="addons"/>
<project name="pos-addons.git" path="addons.odoo14.0/itpp-labs_pos-addons" remote="itpp-labs" groups="addons"/>
<project name="pos.git" path="addons.odoo14.0/OCA_pos" remote="OCA" groups="addons"/>
<project name="product-attribute.git" path="addons.odoo14.0/OCA_product-attribute" remote="OCA" groups="addons"/>
<project name="product-configurator.git" path="addons.odoo14.0/OCA_product-configurator" 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="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.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="queue.git" path="addons.odoo14.0/OCA_queue" remote="OCA" groups="addons"/>
<project name="reporting-engine.git" path="addons.odoo14.0/OCA_reporting-engine" remote="OCA" groups="addons"/>
<project name="rma.git" path="addons.odoo14.0/OCA_rma" remote="OCA" groups="addons"/>
<project name="saas-addons.git" path="addons.odoo14.0/it-projects-llc_saas-addons" remote="it-projects-llc" groups="addons"/>
<project name="sale-reporting.git" path="addons.odoo14.0/OCA_sale-reporting" remote="OCA" groups="addons"/>
<project name="sale-workflow.git" path="addons.odoo14.0/OCA_sale-workflow" remote="OCA" groups="addons"/>
<project name="server-auth.git" path="addons.odoo14.0/OCA_server-auth" remote="OCA" groups="addons"/>
<project name="server-backend.git" path="addons.odoo14.0/OCA_server-backend" remote="OCA" groups="addons"/>
<project name="server-brand.git" path="addons.odoo14.0/OCA_server-brand" remote="OCA" groups="addons"/>
<project name="server-env.git" path="addons.odoo14.0/OCA_server-env" remote="OCA" 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="social.git" path="addons.odoo14.0/OCA_social" remote="ERPLibre" revision="14.0_dev" 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="timesheet.git" path="addons.odoo14.0/OCA_timesheet" remote="OCA" groups="addons"/>
<project name="vertical-association.git" path="addons.odoo14.0/OCA_vertical-association" remote="OCA" groups="addons"/>
<project name="vertical-hotel.git" path="addons.odoo14.0/OCA_vertical-hotel" remote="OCA" groups="addons"/>
<project name="vertical-isp.git" path="addons.odoo14.0/OCA_vertical-isp" remote="OCA" groups="addons"/>
<project name="vertical-travel.git" path="addons.odoo14.0/OCA_vertical-travel" remote="OCA" groups="addons"/>
<project name="web.git" path="addons.odoo14.0/OCA_web" remote="OCA" groups="addons"/>
<project name="website-addons.git" path="addons.odoo14.0/itpp-labs_website-addons" remote="itpp-labs" groups="addons"/>
<project name="website-cms.git" path="addons.odoo14.0/OCA_website-cms" remote="OCA" groups="addons"/>
<project name="website.git" path="addons.odoo14.0/OCA_website" remote="OCA" groups="addons"/>
<project name="wms.git" path="addons.odoo14.0/OCA_wms" remote="OCA" groups="addons"/>
</manifest>

View file

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="CybroOdoo" fetch="https://github.com/CybroOdoo/"/>
<remote name="ERPLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="MathBenTech" fetch="https://github.com/MathBenTech/"/>
<remote name="Numigi" fetch="https://github.com/Numigi/"/>
<remote name="OCA" fetch="https://github.com/OCA/"/>
<remote name="OmniaGit" fetch="https://github.com/OmniaGit/"/>
<remote name="Smile-SA" fetch="https://github.com/ERPLibre/"/>
<remote name="TechnoLibre" fetch="https://github.com/TechnoLibre/"/>
<remote name="ajepe" fetch="https://github.com/ajepe/"/>
<remote name="camptocamp" fetch="https://github.com/camptocamp/"/>
<remote name="dhongu" fetch="https://github.com/dhongu/"/>
<remote name="it-projects-llc" fetch="https://github.com/it-projects-llc/"/>
<remote name="itpp-labs" fetch="https://github.com/itpp-labs/"/>
<remote name="kinjal-sorathiya" fetch="https://github.com/kinjal-sorathiya/"/>
<remote name="muk-it" fetch="https://github.com/muk-it/"/>
<remote name="novacode-nl" fetch="https://github.com/novacode-nl/"/>
<remote name="obayit" fetch="https://github.com/obayit/"/>
<remote name="odoo" fetch="https://github.com/ERPLibre/"/>
<remote name="odooaktiv" fetch="https://github.com/odooaktiv/"/>
<remote name="odoomates" fetch="https://github.com/odoomates/"/>
<remote name="openeducat" fetch="https://github.com/openeducat/"/>
<remote name="pledra" fetch="https://github.com/pledra/"/>
<remote name="tegin" fetch="https://github.com/tegin/"/>
<default remote="ERPLibre" revision="16.0" sync-j="4" sync-c="true"/>
<project name="ERPLibre_image_db.git" path="image_db" remote="ERPLibre" clone-depth="1" revision="main" groups="base"/>
<project name="OpenHRMS.git" path="addons.odoo16.0/CybroOdoo_OpenHRMS" remote="CybroOdoo" groups="addons"/>
<project name="CybroAddons.git" path="addons.odoo16.0/CybroOdoo_CybroAddons" remote="ERPLibre" revision="16.0_dev" groups="addons"/>
<project name="account-analytic.git" path="addons.odoo16.0/OCA_account-analytic" remote="OCA" groups="addons"/>
<project name="account-budgeting.git" path="addons.odoo16.0/OCA_account-budgeting" remote="OCA" groups="addons"/>
<project name="account-closing.git" path="addons.odoo16.0/OCA_account-closing" remote="OCA" groups="addons"/>
<project name="account-consolidation.git" path="addons.odoo16.0/OCA_account-consolidation" remote="OCA" groups="addons"/>
<project name="account-financial-reporting.git" path="addons.odoo16.0/OCA_account-financial-reporting" remote="OCA" groups="addons"/>
<project name="account-financial-tools.git" path="addons.odoo16.0/OCA_account-financial-tools" remote="OCA" groups="addons"/>
<project name="account-fiscal-rule.git" path="addons.odoo16.0/OCA_account-fiscal-rule" remote="OCA" groups="addons"/>
<project name="account-invoice-reporting.git" path="addons.odoo16.0/OCA_account-invoice-reporting" remote="OCA" groups="addons"/>
<project name="account-invoicing.git" path="addons.odoo16.0/OCA_account-invoicing" remote="OCA" groups="addons"/>
<project name="account-payment.git" path="addons.odoo16.0/OCA_account-payment" remote="OCA" groups="addons"/>
<project name="account-reconcile.git" path="addons.odoo16.0/OCA_account-reconcile" remote="OCA" groups="addons"/>
<project name="apps-store.git" path="addons.odoo16.0/OCA_apps-store" remote="OCA" groups="addons"/>
<project name="bank-payment.git" path="addons.odoo16.0/OCA_bank-payment" remote="OCA" groups="addons"/>
<project name="bank-statement-import.git" path="addons.odoo16.0/OCA_bank-statement-import" remote="OCA" groups="addons"/>
<project name="brand.git" path="addons.odoo16.0/OCA_brand" remote="OCA" groups="addons"/>
<project name="business-requirement.git" path="addons.odoo16.0/OCA_business-requirement" remote="OCA" groups="addons"/>
<project name="commission.git" path="addons.odoo16.0/OCA_commission" remote="OCA" groups="addons"/>
<project name="community-data-files.git" path="addons.odoo16.0/OCA_community-data-files" remote="OCA" groups="addons"/>
<project name="connector-ecommerce.git" path="addons.odoo16.0/OCA_connector-ecommerce" remote="OCA" groups="addons"/>
<project name="connector-interfaces.git" path="addons.odoo16.0/OCA_connector-interfaces" remote="OCA" groups="addons"/>
<project name="connector-jira.git" path="addons.odoo16.0/OCA_connector-jira" remote="OCA" groups="addons"/>
<project name="connector-telephony.git" path="addons.odoo16.0/OCA_connector-telephony" remote="OCA" groups="addons"/>
<project name="connector.git" path="addons.odoo16.0/OCA_connector" remote="OCA" groups="addons"/>
<project name="contract.git" path="addons.odoo16.0/OCA_contract" remote="OCA" groups="addons"/>
<project name="credit-control.git" path="addons.odoo16.0/OCA_credit-control" remote="OCA" groups="addons"/>
<project name="crm.git" path="addons.odoo16.0/OCA_crm" remote="OCA" groups="addons"/>
<project name="currency.git" path="addons.odoo16.0/OCA_currency" remote="OCA" groups="addons"/>
<project name="data-protection.git" path="addons.odoo16.0/OCA_data-protection" remote="OCA" groups="addons"/>
<project name="ddmrp.git" path="addons.odoo16.0/OCA_ddmrp" remote="OCA" groups="addons"/>
<project name="delivery-carrier.git" path="addons.odoo16.0/OCA_delivery-carrier" remote="OCA" groups="addons"/>
<project name="deltatech.git" path="addons.odoo16.0/dhongu_deltatech" remote="dhongu" groups="addons"/>
<project name="donation.git" path="addons.odoo16.0/OCA_donation" remote="OCA" groups="addons"/>
<project name="e-commerce.git" path="addons.odoo16.0/OCA_e-commerce" remote="OCA" groups="addons"/>
<project name="edi.git" path="addons.odoo16.0/OCA_edi" remote="OCA" groups="addons"/>
<project name="erplibre_addons.git" path="addons.odoo16.0/ERPLibre_erplibre_addons" remote="ERPLibre" groups="addons,base"/>
<project name="event.git" path="addons.odoo16.0/OCA_event" remote="OCA" groups="addons"/>
<project name="field-service.git" path="addons.odoo16.0/OCA_field-service" remote="OCA" groups="addons"/>
<project name="fleet.git" path="addons.odoo16.0/OCA_fleet" remote="OCA" groups="addons"/>
<project name="geospatial.git" path="addons.odoo16.0/OCA_geospatial" remote="OCA" groups="addons"/>
<project name="helpdesk.git" path="addons.odoo16.0/OCA_helpdesk" remote="OCA" groups="addons"/>
<project name="hr.git" path="addons.odoo16.0/OCA_hr" remote="OCA" groups="addons"/>
<project name="interface-github.git" path="addons.odoo16.0/OCA_interface-github" remote="OCA" groups="addons"/>
<project name="knowledge.git" path="addons.odoo16.0/OCA_knowledge" remote="OCA" groups="addons"/>
<project name="l10n-canada.git" path="addons.odoo16.0/OCA_l10n-canada" remote="OCA" groups="addons"/>
<project name="maintainer-tools.git" path="script/OCA_maintainer-tools" remote="OCA" revision="master" groups="odoo"/>
<project name="maintenance.git" path="addons.odoo16.0/OCA_maintenance" remote="OCA" groups="addons"/>
<project name="management-system.git" path="addons.odoo16.0/OCA_management-system" remote="OCA" groups="addons"/>
<project name="manufacture.git" path="addons.odoo16.0/OCA_manufacture" remote="OCA" groups="addons"/>
<project name="margin-analysis.git" path="addons.odoo16.0/OCA_margin-analysis" remote="OCA" groups="addons"/>
<project name="medical-fhir.git" path="addons.odoo16.0/tegin_medical-fhir" remote="tegin" 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="muk_web.git" path="addons.odoo16.0/muk-it_muk_web" remote="muk-it" 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-module-migrator.git" path="script/OCA_odoo-module-migrator" remote="OCA" revision="master" groups="odoo"/>
<project name="odoo.git" path="odoo" remote="odoo" clone-depth="10" revision="ERPLibre/16.0" groups="odoo"/>
<project name="odooapps.git" path="addons.odoo16.0/odoomates_odooapps" remote="odoomates" groups="addons"/>
<project name="odooplm.git" path="addons.odoo16.0/OmniaGit_odooplm" remote="OmniaGit" groups="addons"/>
<project name="openeducat_erp.git" path="addons.odoo16.0/openeducat_openeducat_erp" remote="openeducat" groups="addons"/>
<project name="OpenUpgrade.git" path="script/OCA_OpenUpgrade" remote="OCA" clone-depth="10" groups="migration"/>
<project name="operating-unit.git" path="addons.odoo16.0/OCA_operating-unit" remote="OCA" groups="addons"/>
<project name="partner-contact.git" path="addons.odoo16.0/OCA_partner-contact" remote="OCA" groups="addons"/>
<project name="pos.git" path="addons.odoo16.0/OCA_pos" remote="OCA" groups="addons"/>
<project name="product-attribute.git" path="addons.odoo16.0/OCA_product-attribute" remote="OCA" groups="addons"/>
<project name="product-configurator.git" path="addons.odoo16.0/OCA_product-configurator" remote="OCA" groups="addons"/>
<project name="product-pack.git" path="addons.odoo16.0/OCA_product-pack" remote="OCA" groups="addons"/>
<project name="product-variant.git" path="addons.odoo16.0/OCA_product-variant" remote="OCA" groups="addons"/>
<project name="project-reporting.git" path="addons.odoo16.0/OCA_project-reporting" remote="OCA" groups="addons"/>
<project name="project-agile.git" path="addons.odoo16.0/OCA_project-agile" remote="OCA" groups="addons"/>
<project name="project.git" path="addons.odoo16.0/OCA_project" remote="OCA" groups="addons"/>
<project name="purchase-workflow.git" path="addons.odoo16.0/OCA_purchase-workflow" remote="OCA" groups="addons"/>
<project name="queue.git" path="addons.odoo16.0/OCA_queue" remote="OCA" groups="addons"/>
<project name="reporting-engine.git" path="addons.odoo16.0/OCA_reporting-engine" remote="OCA" groups="addons"/>
<project name="rma.git" path="addons.odoo16.0/OCA_rma" remote="OCA" groups="addons"/>
<project name="saas-addons.git" path="addons.odoo16.0/it-projects-llc_saas-addons" remote="it-projects-llc" groups="addons"/>
<project name="sale-reporting.git" path="addons.odoo16.0/OCA_sale-reporting" remote="OCA" groups="addons"/>
<project name="sale-workflow.git" path="addons.odoo16.0/OCA_sale-workflow" remote="OCA" groups="addons"/>
<project name="server-auth.git" path="addons.odoo16.0/OCA_server-auth" remote="OCA" groups="addons"/>
<project name="server-backend.git" path="addons.odoo16.0/OCA_server-backend" remote="OCA" groups="addons"/>
<project name="server-brand.git" path="addons.odoo16.0/OCA_server-brand" remote="OCA" groups="addons"/>
<project name="server-env.git" path="addons.odoo16.0/OCA_server-env" remote="OCA" 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="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="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="timesheet.git" path="addons.odoo16.0/OCA_timesheet" remote="OCA" groups="addons"/>
<project name="vertical-association.git" path="addons.odoo16.0/OCA_vertical-association" remote="OCA" groups="addons"/>
<project name="vertical-hotel.git" path="addons.odoo16.0/OCA_vertical-hotel" remote="OCA" groups="addons"/>
<project name="vertical-isp.git" path="addons.odoo16.0/OCA_vertical-isp" remote="OCA" groups="addons"/>
<project name="vertical-travel.git" path="addons.odoo16.0/OCA_vertical-travel" remote="OCA" groups="addons"/>
<project name="web.git" path="addons.odoo16.0/OCA_web" remote="OCA" groups="addons"/>
<project name="website-cms.git" path="addons.odoo16.0/OCA_website-cms" remote="OCA" groups="addons"/>
<project name="website.git" path="addons.odoo16.0/OCA_website" remote="OCA" groups="addons"/>
<project name="wms.git" path="addons.odoo16.0/OCA_wms" remote="OCA" groups="addons"/>
</manifest>

View file

@ -1,167 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="CybroOdoo" fetch="https://github.com/ERPLibre/"/>
<remote name="ERPLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="MathBenTech" fetch="https://github.com/ERPLibre/"/>
<remote name="Numigi" fetch="https://github.com/ERPLibre/"/>
<remote name="OCA" fetch="https://github.com/ERPLibre/"/>
<remote name="OmniaGit" fetch="https://github.com/ERPLibre/"/>
<remote name="Smile-SA" fetch="https://github.com/ERPLibre/"/>
<remote name="TechnoLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="ajepe" fetch="https://github.com/ERPLibre/"/>
<remote name="camptocamp" fetch="https://github.com/ERPLibre/"/>
<remote name="dhongu" fetch="https://github.com/ERPLibre/"/>
<remote name="it-projects-llc" fetch="https://github.com/ERPLibre/"/>
<remote name="itpp-labs" fetch="https://github.com/ERPLibre/"/>
<remote name="JayVora-SerpentCS" fetch="https://github.com/ERPLibre/"/>
<remote name="kinjal-sorathiya" fetch="https://github.com/ERPLibre/"/>
<remote name="muk-it" fetch="https://github.com/ERPLibre/"/>
<remote name="novacode-nl" fetch="https://github.com/ERPLibre/"/>
<remote name="obayit" fetch="https://github.com/ERPLibre/"/>
<remote name="odoo" fetch="https://github.com/ERPLibre/"/>
<remote name="odooaktiv" fetch="https://github.com/ERPLibre/"/>
<remote name="odoomates" fetch="https://github.com/ERPLibre/"/>
<remote name="openeducat" fetch="https://github.com/ERPLibre/"/>
<remote name="pledra" fetch="https://github.com/ERPLibre/"/>
<remote name="tegin" fetch="https://github.com/ERPLibre/"/>
<default remote="ERPLibre" revision="12.0" sync-j="4" sync-c="true"/>
<project name="ERPLibre_image_db.git" path="image_db" remote="ERPLibre" clone-depth="1" groups="base"/>
<project name="OpenHRMS.git" path="addons/CybroOdoo_OpenHRMS" remote="CybroOdoo" revision="dev_12.0" groups="addons"/>
<project name="Property-Management_odoo.git" path="addons/kinjal-sorathiya_Property-Management_odoo" remote="kinjal-sorathiya" revision="master" groups="addons"/>
<project name="QuotationRevision.git" path="addons/MathBenTech_QuotationRevision" remote="MathBenTech" groups="addons"/>
<project name="access-addons.git" path="addons/itpp-labs_access-addons" remote="itpp-labs" revision="12.0_dev" groups="addons"/>
<project name="account-analytic.git" path="addons/OCA_account-analytic" remote="OCA" revision="12.0_dev" groups="addons"/>
<project name="account-budgeting.git" path="addons/OCA_account-budgeting" remote="OCA" groups="addons"/>
<project name="account-closing.git" path="addons/OCA_account-closing" remote="OCA" groups="addons"/>
<project name="account-consolidation.git" path="addons/OCA_account-consolidation" remote="OCA" groups="addons"/>
<project name="account-financial-reporting.git" path="addons/OCA_account-financial-reporting" remote="OCA" groups="addons"/>
<project name="account-financial-tools.git" path="addons/OCA_account-financial-tools" remote="OCA" revision="12.0_dev" groups="addons"/>
<project name="account-fiscal-rule.git" path="addons/OCA_account-fiscal-rule" remote="OCA" groups="addons"/>
<project name="account-invoice-reporting.git" path="addons/OCA_account-invoice-reporting" remote="OCA" groups="addons"/>
<project name="account-invoicing.git" path="addons/OCA_account-invoicing" remote="OCA" groups="addons"/>
<project name="account-payment.git" path="addons/OCA_account-payment" remote="OCA" groups="addons"/>
<project name="account-reconcile.git" path="addons/OCA_account-reconcile" remote="OCA" groups="addons"/>
<project name="apps-store.git" path="addons/OCA_apps-store" remote="OCA" groups="addons"/>
<project name="bank-payment.git" path="addons/OCA_bank-payment" remote="OCA" groups="addons"/>
<project name="bank-statement-import.git" path="addons/OCA_bank-statement-import" remote="OCA" groups="addons"/>
<project name="brand.git" path="addons/OCA_brand" remote="OCA" groups="addons"/>
<project name="business-requirement.git" path="addons/OCA_business-requirement" remote="OCA" groups="addons"/>
<project name="commission.git" path="addons/OCA_commission" remote="OCA" groups="addons"/>
<project name="community-data-files.git" path="addons/OCA_community-data-files" remote="OCA" groups="addons"/>
<project name="connector-ecommerce.git" path="addons/OCA_connector-ecommerce" remote="OCA" groups="addons"/>
<project name="connector-interfaces.git" path="addons/OCA_connector-interfaces" remote="OCA" groups="addons"/>
<project name="connector-jira.git" path="addons/OCA_connector-jira" remote="OCA" groups="addons"/>
<project name="connector-telephony.git" path="addons/OCA_connector-telephony" remote="OCA" groups="addons"/>
<project name="connector.git" path="addons/OCA_connector" remote="OCA" groups="addons"/>
<project name="contract.git" path="addons/OCA_contract" remote="OCA" groups="addons,code_generator,image_db"/>
<project name="credit-control.git" path="addons/OCA_credit-control" remote="OCA" groups="addons"/>
<project name="crm.git" path="addons/OCA_crm" remote="OCA" groups="addons"/>
<project name="currency.git" path="addons/OCA_currency" remote="OCA" groups="addons"/>
<project name="data-protection.git" path="addons/OCA_data-protection" remote="OCA" groups="addons"/>
<project name="ddmrp.git" path="addons/OCA_ddmrp" remote="OCA" groups="addons"/>
<project name="delivery-carrier.git" path="addons/OCA_delivery-carrier" remote="OCA" groups="addons"/>
<project name="deltatech.git" path="addons/dhongu_deltatech" remote="dhongu" groups="addons"/>
<project name="design-themes.git" path="addons/odoo_design-themes" remote="odoo" groups="addons,code_generator,image_db"/>
<project name="development.git" path="addons/MathBenTech_development" remote="MathBenTech" groups="addons,base"/>
<project name="documentation-user.git" path="doc/odoo_documentation-user" remote="odoo" groups="odoo"/>
<project name="donation.git" path="addons/OCA_donation" remote="OCA" revision="12.0_module_donation_website" groups="addons"/>
<project name="e-commerce.git" path="addons/OCA_e-commerce" remote="OCA" groups="addons"/>
<project name="edi.git" path="addons/OCA_edi" remote="OCA" groups="addons"/>
<project name="erplibre-3D-printing-addons.git" path="addons/ERPLibre_erplibre-3D-printing-addons" remote="ERPLibre" groups="addons"/>
<project name="erplibre-family-management.git" path="addons/MathBenTech_erplibre-family-management" remote="MathBenTech" groups="addons,code_generator"/>
<project name="erplibre_addons.git" path="addons/ERPLibre_erplibre_addons" remote="ERPLibre" groups="addons,base"/>
<project name="erplibre_theme_addons.git" path="addons/ERPLibre_erplibre_theme_addons" remote="ERPLibre" groups="addons,code_generator,image_db"/>
<project name="event.git" path="addons/OCA_event" remote="OCA" groups="addons"/>
<project name="field-service.git" path="addons/OCA_field-service" remote="OCA" groups="addons"/>
<project name="fleet.git" path="addons/OCA_fleet" remote="OCA" groups="addons"/>
<project name="geospatial.git" path="addons/OCA_geospatial" remote="OCA" groups="addons,code_generator,image_db"/>
<project name="helpdesk.git" path="addons/OCA_helpdesk" remote="OCA" revision="12.0_dev" groups="addons,code_generator,image_db"/>
<project name="hr.git" path="addons/OCA_hr" remote="OCA" groups="addons"/>
<project name="interface-github.git" path="addons/OCA_interface-github" remote="OCA" groups="addons"/>
<project name="knowledge.git" path="addons/OCA_knowledge" remote="OCA" groups="addons"/>
<project name="l10n-canada.git" path="addons/OCA_l10n-canada" remote="OCA" groups="addons"/>
<project name="maintainer-tools.git" path="script/OCA_maintainer-tools" remote="OCA" revision="master" groups="odoo,code_generator"/>
<project name="maintenance.git" path="addons/OCA_maintenance" remote="OCA" groups="addons"/>
<project name="management-system.git" path="addons/OCA_management-system" remote="OCA" groups="addons"/>
<project name="manufacture.git" path="addons/OCA_manufacture" remote="OCA" groups="addons"/>
<project name="margin-analysis.git" path="addons/OCA_margin-analysis" remote="OCA" revision="12.0_sale_margin_editor" groups="addons"/>
<project name="medical-fhir.git" path="addons/tegin_medical-fhir" remote="tegin" groups="addons"/>
<project name="mis-builder.git" path="addons/OCA_mis-builder" remote="OCA" groups="addons"/>
<project name="muk_base.git" path="addons/muk-it_muk_base" remote="muk-it" revision="12.0_dev" groups="addons,base"/>
<project name="muk_dms.git" path="addons/muk-it_muk_dms" remote="muk-it" groups="addons"/>
<project name="muk_docs.git" path="addons/muk-it_muk_docs" remote="muk-it" groups="addons"/>
<project name="muk_misc.git" path="addons/muk-it_muk_misc" remote="muk-it" revision="12.0_dev" groups="addons,base"/>
<project name="muk_quality.git" path="addons/muk-it_muk_quality" remote="muk-it" groups="addons"/>
<project name="muk_web.git" path="addons/muk-it_muk_web" remote="muk-it" revision="12.0_dev" groups="addons,base,code_generator"/>
<project name="muk_website.git" path="addons/muk-it_muk_website" remote="muk-it" revision="12.0_remove_autoinstall" groups="addons,base"/>
<project name="multi-company.git" path="addons/OCA_multi-company" remote="OCA" groups="addons"/>
<project name="odoo-addons.git" path="addons/ajepe_odoo-addons" remote="ajepe" revision="12.0_dev" groups="addons,base"/>
<project name="odoo-base-addons.git" path="addons/Numigi_odoo-base-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-business-spending-management-quebec-canada.git" path="addons/MathBenTech_odoo-business-spending-management-quebec-canada" remote="MathBenTech" groups="addons,base"/>
<project name="odoo-cloud-platform.git" path="addons/camptocamp_odoo-cloud-platform" remote="camptocamp" revision="12.0_dev" groups="addons"/>
<project name="odoo-code-generator-template.git" path="addons/TechnoLibre_odoo-code-generator-template" revision="12.0" remote="TechnoLibre" groups="addons,code_generator,image_db"/>
<project name="odoo-code-generator.git" path="addons/TechnoLibre_odoo-code-generator" remote="TechnoLibre" revision="12.0" groups="addons,code_generator,image_db"/>
<project name="odoo-development.git" path="doc/itpp-labs_odoo-development" remote="itpp-labs" revision="12.0_dev" groups="odoo"/>
<project name="odoo-entertainment-addons.git" path="addons/Numigi_odoo-entertainment-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-git-addons.git" path="addons/Numigi_odoo-git-addons" remote="Numigi" groups="addons"/>
<project name="odoo-formio.git" path="addons/novacode-nl_odoo-formio" remote="novacode-nl" groups="addons"/>
<project name="odoo-hr-addons.git" path="addons/Numigi_odoo-hr-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-module-migrator.git" path="script/OCA_odoo-module-migrator" remote="OCA" revision="master" groups="odoo"/>
<project name="odoo-partner-addons.git" path="addons/Numigi_odoo-partner-addons" remote="Numigi" revision="12.0_dev" groups="addons,base,image_db"/>
<project name="odoo-product-addons.git" path="addons/Numigi_odoo-product-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-port-docs.git" path="doc/itpp-labs_odoo-port-docs" remote="itpp-labs" revision="master" groups="odoo"/>
<project name="odoo-product-configurator.git" path="addons/pledra_odoo-product-configurator" remote="pledra" groups="addons"/>
<project name="odoo-project-addons.git" path="addons/Numigi_odoo-project-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-purchase-addons.git" path="addons/Numigi_odoo-purchase-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-stock-addons.git" path="addons/Numigi_odoo-stock-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-survey-addons.git" path="addons/Numigi_odoo-survey-addons" remote="Numigi" groups="addons"/>
<project name="odoo-test-docs.git" path="doc/itpp-labs_odoo-test-docs" remote="itpp-labs" revision="master" groups="odoo"/>
<project name="odoo-timesheet-addons.git" path="addons/Numigi_odoo-timesheet-addons" remote="Numigi" revision="12.0_dev" groups="addons"/>
<project name="odoo-web-addons.git" path="addons/Numigi_odoo-web-addons" remote="Numigi" groups="addons,base"/>
<project name="odoo.git" path="odoo" remote="odoo" revision="ERPLibre/12.0" clone-depth="10" groups="odoo,base"/>
<project name="odoo_addons.git" path="addons/Smile-SA_odoo_addons" remote="Smile-SA" revision="12.0_remote_autoinstall" groups="addons"/>
<project name="odoo_dhtmlxgantt.git" path="addons/obayit_odoo_dhtmlxgantt" remote="obayit" groups="addons"/>
<project name="odooapps.git" path="addons/odoomates_odooapps" remote="odoomates" groups="addons"/>
<project name="odooplm.git" path="addons/OmniaGit_odooplm" remote="OmniaGit" groups="addons"/>
<project name="openeducat_erp.git" path="addons/openeducat_openeducat_erp" remote="openeducat" groups="addons"/>
<project name="operating-unit.git" path="addons/OCA_operating-unit" remote="OCA" groups="addons"/>
<project name="partner-contact.git" path="addons/OCA_partner-contact" remote="OCA" groups="addons"/>
<project name="pos-addons.git" path="addons/itpp-labs_pos-addons" remote="itpp-labs" groups="addons"/>
<project name="pos.git" path="addons/OCA_pos" remote="OCA" groups="addons"/>
<project name="product-attribute.git" path="addons/OCA_product-attribute" remote="OCA" groups="addons"/>
<project name="product-pack.git" path="addons/OCA_product-pack" remote="OCA" groups="addons"/>
<project name="product-variant.git" path="addons/OCA_product-variant" remote="OCA" groups="addons"/>
<project name="product_rating_app.git" path="addons/odooaktiv_product_rating_app" remote="odooaktiv" groups="addons"/>
<project name="project-reporting.git" path="addons/OCA_project-reporting" remote="OCA" groups="addons"/>
<project name="project.git" path="addons/OCA_project" remote="OCA" revision="12.0_fix_conflict_project_key" groups="addons"/>
<project name="purchase-workflow.git" path="addons/OCA_purchase-workflow" remote="OCA" groups="addons"/>
<project name="queue.git" path="addons/OCA_queue" remote="OCA" groups="addons"/>
<project name="reporting-engine.git" path="addons/OCA_reporting-engine" remote="OCA" groups="addons"/>
<project name="rma.git" path="addons/OCA_rma" remote="OCA" groups="addons"/>
<project name="saas-addons.git" path="addons/it-projects-llc_saas-addons" remote="it-projects-llc" groups="addons"/>
<project name="sale-reporting.git" path="addons/OCA_sale-reporting" remote="OCA" groups="addons"/>
<project name="sale-workflow.git" path="addons/OCA_sale-workflow" remote="OCA" revision="12.0_modules_sale_order_line" groups="addons"/>
<project name="scrummer.git" path="addons/MathBenTech_scrummer" remote="MathBenTech" revision="12.0_dev" groups="addons,base"/>
<project name="SerpentCS_Contributions.git" path="addons/JayVora-SerpentCS_SerpentCS_Contributions" remote="JayVora-SerpentCS" groups="addons,code_generator,base"/>
<project name="server-auth.git" path="addons/OCA_server-auth" remote="OCA" groups="addons,base,image_db"/>
<project name="server-backend.git" path="addons/OCA_server-backend" remote="OCA" revision="12.0_dev" groups="addons"/>
<project name="server-brand.git" path="addons/OCA_server-brand" remote="OCA" groups="addons,base"/>
<project name="server-env.git" path="addons/OCA_server-env" remote="OCA" groups="addons"/>
<project name="server-tools.git" path="addons/OCA_server-tools" remote="OCA" revision="12.0_dev" groups="addons,base"/>
<project name="server-ux.git" path="addons/OCA_server-ux" remote="OCA" groups="addons,base"/>
<project name="social.git" path="addons/OCA_social" remote="OCA" groups="addons,base"/>
<project name="stock-logistics-warehouse.git" path="addons/OCA_stock-logistics-warehouse" remote="OCA" revision="12.0_dev" groups="addons"/>
<project name="storage.git" path="addons/OCA_storage" remote="OCA" groups="addons"/>
<project name="timesheet.git" path="addons/OCA_timesheet" remote="OCA" revision="12.0_support_project_agile_timesheet" groups="addons"/>
<project name="vertical-association.git" path="addons/OCA_vertical-association" remote="OCA" groups="addons"/>
<project name="vertical-hotel.git" path="addons/OCA_vertical-hotel" remote="OCA" groups="addons"/>
<project name="vertical-isp.git" path="addons/OCA_vertical-isp" remote="OCA" groups="addons"/>
<project name="vertical-travel.git" path="addons/OCA_vertical-travel" remote="OCA" groups="addons"/>
<project name="web.git" path="addons/OCA_web" remote="OCA" revision="12.0_dev" groups="addons,base"/>
<project name="website-addons.git" path="addons/itpp-labs_website-addons" remote="itpp-labs" revision="12.0_dev" groups="addons"/>
<project name="website-cms.git" path="addons/OCA_website-cms" remote="OCA" groups="addons"/>
<project name="website.git" path="addons/OCA_website" remote="OCA" revision="12.0_dev" groups="addons,code_generator,image_db"/>
<project name="wms.git" path="addons/OCA_wms" remote="OCA" groups="addons"/>
</manifest>

View file

@ -20,3 +20,4 @@ xlsxwriter
suds-jurko suds-jurko
vatnumber vatnumber
dns dns
pypiwin32

View file

@ -0,0 +1,25 @@
chess
csv
dateutil
facturx
formiodata
git
keystoneclient
ldap
mercurial
MySQLdb
paho
pyrfc
python-alipay-sdk
pythonjsonlogger
stdnum
swiftclient
u2flib_server
voicent
xlsxwriter
suds-jurko
vatnumber
dns
dataclasses
extract_msg
pypiwin32

View file

@ -0,0 +1,25 @@
chess
csv
dateutil
facturx
formiodata
git
keystoneclient
ldap
mercurial
MySQLdb
paho
pyrfc
python-alipay-sdk
pythonjsonlogger
stdnum
swiftclient
u2flib_server
voicent
xlsxwriter
suds-jurko
vatnumber
dns
dataclasses
extract_msg
pypiwin32

View file

@ -0,0 +1,16 @@
dateutil
keystoneclient
ldap
swiftclient
cv2
speech_recognition
PIL
en_core_web_sm
googletrans
infobip-api-python-sdk
pygount
dataclasses
pypiwin32
cadquery

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
[build-system] [build-system]
requires = [ "poetry>=1.1.14",] requires = [ "poetry>=1.5.0",]
build-backend = "poetry.masonry.api" build-backend = "poetry.masonry.api"
[tool.isort] [tool.isort]
@ -36,27 +36,28 @@ cachetools = ">=2.0.1"
cerberus = "^1.3.5" cerberus = "^1.3.5"
chardet = "5.0.0" chardet = "5.0.0"
click = "^8.1.7" click = "^8.1.7"
cloudflare = "^3.0.1" cloudflare = "3.0.1"
code-writer = "1.1.1" code-writer = "1.1.1"
colorama = "^0.4.6" colorama = "^0.4.6"
configparser = "5.0.2" configparser = "5.0.2"
coverage = "7.2.7" coverage = "7.2.7"
cryptography = "39.0.1" cryptography = "39.0.1"
css-html-prettify = "^2.5.5" css-html-prettify = "^2.5.5"
cython = "^3.0.10" cython = "3.0.10"
ddt = "1.2.0" ddt = "1.2.0"
decorator = "4.0.10" decorator = "4.0.10"
dnspython = "2.3.0" dnspython = "2.3.0"
docutils = "0.17.1" docutils = "0.17.1"
ebaysdk = "2.1.5" ebaysdk = "2.1.5"
email-validator = "2.0.0" email-validator = "2.0.0"
emoji = "^2.12.1" emoji = "^2.14.0"
extract-msg = "0.36.1" extract-msg = "0.36.1"
factur-x = "^3.1" factur-x = "^3.1"
feedparser = "6.0.10" feedparser = "6.0.10"
flake8 = "<6.0.0" flake8 = "<6.0.0"
formio-data = "^2.0.3" formio-data = "^2.1.0"
freezegun = "1.2.2" freezegun = "1.2.2"
furo = "2021.2.21b25"
future = "0.18.3" future = "0.18.3"
geojson = "<3.0.0" geojson = "<3.0.0"
gevent = "1.5.0" gevent = "1.5.0"
@ -90,18 +91,19 @@ oauthlib = "2.1.0"
oca-decorators = "^0.0.1" oca-decorators = "^0.0.1"
odoorpc = "^0.10.1" odoorpc = "^0.10.1"
ofxparse = "0.16" ofxparse = "0.16"
olefile = "0.47"
openpyxl = "3.1.3" openpyxl = "3.1.3"
openupgradelib = "^3.6.1" openupgradelib = "^3.7.1"
orjson = "3.6.0" orjson = "3.6.0"
ovh = "^1.1.2" ovh = "1.1.2"
paho-mqtt = "^2.1.0" paho-mqtt = "^2.1.0"
pandas = "1.3.5" pandas = "1.3.5"
paramiko = "^3.4.0" paramiko = "^3.5.0"
passlib = "1.6.5" passlib = "1.6.5"
pdf2image = "^1.17.0" pdf2image = "^1.17.0"
pdfminer = "^20191125" pdfminer = "^20191125"
pexpect = "^4.9.0" pexpect = "^4.9.0"
phonenumbers = "^8.13.40" phonenumbers = "^8.13.47"
pillow = "9.3.0" pillow = "9.3.0"
plotly = "4.1.0" plotly = "4.1.0"
portalocker = "1.7.1" portalocker = "1.7.1"
@ -122,7 +124,7 @@ pyjsparser = "^2.7.1"
pyjwt = "2.5.0" pyjwt = "2.5.0"
pyldap = "2.4.28" pyldap = "2.4.28"
pylint-odoo = "8.0.19" pylint-odoo = "8.0.19"
pymssql = "^2.3.0" pymssql = "2.3.0"
pymysql = "^1.1.1" pymysql = "^1.1.1"
pyotp = "^2.9.0" pyotp = "^2.9.0"
pyparsing = "2.1.10" pyparsing = "2.1.10"
@ -138,7 +140,7 @@ python-jose = "^3.3.0"
python-json-logger = "0.1.5" python-json-logger = "0.1.5"
python-keystoneclient = "3.22.0" python-keystoneclient = "3.22.0"
python-ldap = "^3.4.4" python-ldap = "^3.4.4"
python-pptx = "^0.6.23" python-pptx = "0.6.23"
python-randomword-fr = "^1.0.0" python-randomword-fr = "^1.0.0"
python-slugify = ">=3.0.2" python-slugify = ">=3.0.2"
python-stdnum = "^1.20" python-stdnum = "^1.20"
@ -158,7 +160,8 @@ requests-oauthlib = "1.1.0"
requests-toolbelt = "0.9.1" requests-toolbelt = "0.9.1"
responses = "0.23.1" responses = "0.23.1"
retrying = "^1.3.4" retrying = "^1.3.4"
sentry-sdk = "^2.8.0" selenium = "4.11.2"
sentry-sdk = "^2.17.0"
serial = "^0.0.97" serial = "^0.0.97"
setuptools = "65.5.1" setuptools = "65.5.1"
shapely = "1.8.5" shapely = "1.8.5"
@ -168,12 +171,12 @@ soappy = "^0.12.22"
sphinx = "3.0" sphinx = "3.0"
sphinx-intl = "^2.2.0" sphinx-intl = "^2.2.0"
sphinx-rtd-theme = "1.2.2" sphinx-rtd-theme = "1.2.2"
sqlalchemy = "^2.0.31" sqlalchemy = "^2.0.36"
sqlparse = "0.4.4" sqlparse = "0.4.4"
statsd = "3.2.1" statsd = "3.2.1"
toml = "^0.10.2" toml = "^0.10.2"
tornado = "6.1" tornado = "6.1"
tqdm = "^4.66.4" tqdm = "^4.66.5"
unidecode = "1.0.22" unidecode = "1.0.22"
unidiff = "^0.7.5" unidiff = "^0.7.5"
urllib3 = ">=1.26.13" urllib3 = ">=1.26.13"
@ -193,8 +196,8 @@ xlrd = "1.0.0"
xlsxwriter = "0.9.3" xlsxwriter = "0.9.3"
xlwt = "1.3" xlwt = "1.3"
xmlformatter = "^0.2.6" xmlformatter = "^0.2.6"
xmltodict = "^0.13.0" xmltodict = "^0.14.2"
zeep = "^4.2.1" zeep = "4.2.1"
zipp = ">=3.6.0" zipp = ">=3.6.0"
zxcvbn = "^4.4.28" zxcvbn = "^4.4.28"

View file

@ -0,0 +1,197 @@
[build-system]
requires = [ "poetry>=1.5.0",]
build-backend = "poetry.masonry.api"
[tool.isort]
profile = "black"
py_version = 37
[tool.black]
line-length = 79
target-version = [ "py37",]
[tool.poetry]
name = "ERPLibre"
version = "1.5.0"
description = "Easy way to configure Odoo community"
license = "AGPL-3.0-or-later"
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
[tool.poetry.dependencies]
python = "^3.8.10"
acme = "^2.11.0"
agithub = "^2.2.2"
aiohttp = "^3.10.5"
aioshutil = "<1.2"
argcomplete = "^3.5.0"
astor = "0.8.1"
avalara = "^24.8.2"
azure-identity = "1.13.0"
azure-storage-blob = "12.16.0"
babel = "2.9.1"
beautifulsoup4 = "^4.12.3"
bokeh = "2.3.1"
boto3 = ">=1.20.41"
cachetools = "^5.5.0"
chardet = "5.0.0"
chromedriver-binary = "^130.0.6710.0.0"
click = "^8.1.7"
cloudflare = "2.20.0"
colorama = "^0.4.6"
contextvars = "^2.4"
coverage = "^7.6.1"
cryptography = "39.0.1"
css-html-prettify = "^2.5.5"
cython = "^3.0.11"
dateparser = "^1.2.0"
ddt = "1.2.1"
decorator = "4.3.0"
dicttoxml = "^1.7.16"
dnspython = "^2.6.1"
docutils = "0.16.0"
ebaysdk = "2.1.5"
email-validator = "^2.2.0"
emoji = "^2.12.1"
endesive = "^2.17.2"
extract-msg = "0.36.1"
factur-x = "^3.1"
fdfgen = "^0.16.1"
feedparser = "6.0.10"
flake8 = "<6.0.0"
formio-data = "^2.1.0"
freezegun = "0.3.15"
future = "0.18.3"
geojson = "<3.0.0"
gevent = "20.9.0"
gitpython = "3.1.30"
giturlparse = "^0.12.0"
google-api-python-client = "^2.145.0"
google-auth-httplib2 = "^0.2.0"
google-auth-oauthlib = "^1.2.1"
greenlet = "0.4.17"
gst = "^0.1.0"
html2text = "^2024.2.26"
idna = "2.6"
img2pdf = "^0.5.1"
invoice2data = "^0.4.5"
iscompatible = "^0.1.1"
isort = "<5.12.0"
jinja2 = "2.11.3"
josepy = "^1.14.0"
keystoneauth1 = "3.14.0"
libsass = "0.17.0"
lxml = "4.9.1"
mako = "1.2.2"
markupsafe = "1.1.0"
mmg = "1.0.3"
mpld3 = "^0.5.10"
mysqlclient = "2.1.1"
num2words = "0.5.6"
numpy = "1.21.1"
numpy-financial = "<=1.0.0"
odoo-test-helper = "^2.1.1"
odoorpc = "^0.10.1"
ofxparse = "0.19"
openpyxl = "^3.1.5"
openupgradelib = "^3.7.0"
ovh = "1.1.2"
packaging = "21.3"
pandas = "1.3.5"
paramiko = "^3.4.1"
passlib = "1.7.1"
pathspec = "0.12.1"
pdf2image = "^1.17.0"
phonenumbers = "^8.13.45"
pillow = "9.3.0"
plotly = "5.4.0"
polib = "1.1.0"
premailer = "^3.10.0"
prometheus-client = "0.11.0"
psutil = "5.9.0"
psycopg2 = "2.9.5"
py-asterisk = "^0.5.18"
py3o-formats = "^0.3"
py3o-template = "^0.10.0"
pycountry = "^24.6.1"
pydot = "1.4.1"
pyftpdlib = "^2.0.0"
pygithub = "2.3.0"
pygments = "2.7.4"
pygobject = "3.44.1"
pygount = "1.5.1"
pyjwt = "2.5.0"
pyopenssl = "21.0.0"
pypdf = ">=3.1.0"
pypdf2 = "1.27.9"
pyproj = "3.2.1"
pysaml2 = "7.2.1"
pyserial = "3.4"
pysftp = "^0.2.9"
python-chess = "^1.999"
python-dateutil = "2.7.3"
python-git = "^2018.2.1"
python-jose = "^3.3.0"
python-json-logger = "0.1.5"
python-keystoneclient = "3.22.0"
python-ldap = "3.1.0"
python-magic = "^0.4.27"
python-randomword-fr = "^1.0.0"
python-slugify = "^8.0.4"
python-stdnum = "1.8"
python-swiftclient = "3.9.0"
python-u2flib-server = "^5.0.1"
pytz = ">=2022.7"
pyusb = "1.0.2"
pyyaml = "6.0"
pyzbar = "^0.1.9"
qrcode = "6.1"
redis = "3.2.1"
regex = "2022.3.2"
reportlab = "3.6.5"
requests = "2.28.1"
retrying = "^1.3.4"
roulier = "^1.1.1"
selenium = "^4.24.0"
sentry-sdk = "<=1.9.0"
setuptools = "65.5.1"
shapely = "1.8.5"
simplejson = "3.16.0"
sphinx = "4.3.2"
sphinx-intl = "^2.2.0"
sphinx-rtd-theme = "1.3.0"
statsd = "3.2.1"
toml = "^0.10.2"
tqdm = "^4.66.5"
unicodecsv = "^0.14.1"
unidecode = "1.0.23"
unidiff = "^0.7.5"
urllib3 = ">=1.26.13"
uvloop = "^0.20.0"
validators = "0.24.0"
vobject = "0.9.6.1"
voicent-python = "^1.0"
webcolors = "^24.8.0"
websocket-client = "^1.8.0"
werkzeug = "0.16.1"
wheel = "^0.44.0"
win-unicode-console = "^0.5"
xlrd = "1.2.0"
xlsxwriter = "1.1.2"
xlwt = "1.3"
xmlformatter = "^0.2.6"
xmlrunner = "^1.7.7"
xmlschema = "^3.4.0"
xmltodict = "^0.13.0"
zeep = "3.2.0"
zipp = ">=3.6.0"
zxcvbn = "^4.4.28"
[tool.poetry.dev-dependencies]
websocket_client = "^1.1.0"
[tool.poetry.dependencies.black]
git = "https://github.com/psf/black.git"
rev = "22.3.0"
[tool.poetry.dependencies.pylint-odoo]
git = "https://github.com/oca/pylint-odoo.git"

View file

@ -0,0 +1,197 @@
[build-system]
requires = [ "poetry>=1.5.0",]
build-backend = "poetry.masonry.api"
[tool.isort]
profile = "black"
py_version = 37
[tool.black]
line-length = 79
target-version = [ "py37",]
[tool.poetry]
name = "ERPLibre"
version = "1.5.0"
description = "Easy way to configure Odoo community"
license = "AGPL-3.0-or-later"
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
[tool.poetry.dependencies]
python = "^3.8.20"
acme = "^2.11.0"
agithub = "^2.2.2"
aiohttp = "^3.10.10"
aioshutil = "<1.2"
argcomplete = "^3.5.1"
astor = "0.8.1"
avalara = "^24.10.0"
azure-identity = "1.13.0"
azure-storage-blob = "12.16.0"
babel = "2.9.1"
beautifulsoup4 = "^4.12.3"
bokeh = "2.3.1"
boto3 = ">=1.20.41"
cachetools = "^5.5.0"
chardet = "5.0.0"
chromedriver-binary = "^132.0.6786.0.0"
click = "^8.1.7"
cloudflare = "2.20.0"
colorama = "^0.4.6"
contextvars = "^2.4"
coverage = "7.6.1"
cryptography = "39.0.1"
css-html-prettify = "^2.5.5"
cython = "^3.0.11"
dateparser = "^1.2.0"
ddt = "1.2.1"
decorator = "4.3.0"
dicttoxml = "^1.7.16"
dnspython = "2.6.1"
docutils = "0.16.0"
ebaysdk = "2.1.5"
email-validator = "^2.2.0"
emoji = "^2.14.0"
endesive = "^2.17.3"
extract-msg = "0.36.1"
factur-x = "^3.1"
fdfgen = "^0.16.1"
feedparser = "6.0.10"
flake8 = "<6.0.0"
formio-data = "^2.1.0"
freezegun = "0.3.15"
future = "0.18.3"
geojson = "<3.0.0"
gevent = "20.9.0"
gitpython = "3.1.30"
giturlparse = "^0.12.0"
google-api-python-client = "^2.149.0"
google-auth-httplib2 = "^0.2.0"
google-auth-oauthlib = "^1.2.1"
greenlet = "0.4.17"
gst = "^0.1.0"
html2text = "^2024.2.26"
idna = "2.6"
img2pdf = "^0.5.1"
invoice2data = "^0.4.5"
iscompatible = "^0.1.1"
isort = "<5.12.0"
jinja2 = "2.11.3"
josepy = "^1.14.0"
keystoneauth1 = "3.14.0"
libsass = "0.17.0"
lxml = "4.9.1"
mako = "1.2.2"
markupsafe = "1.1.0"
mmg = "1.0.3"
mpld3 = "^0.5.10"
mysqlclient = "2.1.1"
num2words = "0.5.6"
numpy = "1.21.1"
numpy-financial = "<=1.0.0"
odoo-test-helper = "^2.1.1"
odoorpc = "^0.10.1"
ofxparse = "0.19"
openpyxl = "^3.1.5"
openupgradelib = "^3.7.1"
ovh = "1.1.2"
packaging = "21.3"
pandas = "1.3.5"
paramiko = "^3.5.0"
passlib = "1.7.1"
pathspec = "0.12.1"
pdf2image = "^1.17.0"
phonenumbers = "^8.13.47"
pillow = "9.3.0"
plotly = "5.4.0"
polib = "1.1.0"
premailer = "^3.10.0"
prometheus-client = "0.11.0"
psutil = "5.9.0"
psycopg2 = "2.9.5"
py-asterisk = "^0.5.18"
py3o-formats = "^0.3"
py3o-template = "^0.10.0"
pycountry = "^24.6.1"
pydot = "1.4.1"
pyftpdlib = "^2.0.0"
pygithub = "2.3.0"
pygments = "2.7.4"
pygobject = "3.44.1"
pygount = "1.5.1"
pyjwt = "2.5.0"
pyopenssl = "21.0.0"
pypdf = ">=3.1.0,<5.0"
pypdf2 = "1.27.9"
pyproj = "3.2.1"
pysaml2 = "7.2.1"
pyserial = "3.4"
pysftp = "^0.2.9"
python-chess = "^1.999"
python-dateutil = "2.7.3"
python-git = "^2018.2.1"
python-jose = "^3.3.0"
python-json-logger = "0.1.5"
python-keystoneclient = "3.22.0"
python-ldap = "3.1.0"
python-magic = "^0.4.27"
python-randomword-fr = "^1.0.0"
python-slugify = "^8.0.4"
python-stdnum = "1.8"
python-swiftclient = "3.9.0"
python-u2flib-server = "^5.0.1"
pytz = ">=2022.7"
pyusb = "1.0.2"
pyyaml = "6.0"
pyzbar = "^0.1.9"
qrcode = "6.1"
redis = "3.2.1"
regex = "2022.3.2"
reportlab = "3.6.5"
requests = "2.28.1"
retrying = "^1.3.4"
roulier = "^1.1.1"
selenium = "^4.25.0"
sentry-sdk = "<=1.9.0"
setuptools = "65.5.1"
shapely = "1.8.5"
simplejson = "3.16.0"
sphinx = "4.3.2"
sphinx-intl = "^2.2.0"
sphinx-rtd-theme = "1.3.0"
statsd = "3.2.1"
toml = "^0.10.2"
tqdm = "^4.66.5"
unicodecsv = "^0.14.1"
unidecode = "1.0.23"
unidiff = "^0.7.5"
urllib3 = ">=1.26.13"
uvloop = "^0.21.0"
validators = "0.24.0"
vobject = "0.9.6.1"
voicent-python = "^1.0"
webcolors = "^24.8.0"
websocket-client = "^1.8.0"
werkzeug = "0.16.1"
wheel = "^0.44.0"
win-unicode-console = "^0.5"
xlrd = "1.1.0"
xlsxwriter = "1.1.2"
xlwt = "1.3"
xmlformatter = "^0.2.6"
xmlrunner = "^1.7.7"
xmlschema = "^3.4.2"
xmltodict = "^0.14.2"
zeep = "3.2.0"
zipp = ">=3.6.0"
zxcvbn = "^4.4.28"
[tool.poetry.dev-dependencies]
websocket_client = "^1.1.0"
[tool.poetry.dependencies.black]
git = "https://github.com/psf/black.git"
rev = "22.3.0"
[tool.poetry.dependencies.pylint-odoo]
git = "https://github.com/oca/pylint-odoo.git"

View file

@ -0,0 +1,205 @@
[build-system]
requires = [ "poetry>=1.8.3",]
build-backend = "poetry.masonry.api"
[tool.isort]
profile = "black"
py_version = 37
[tool.black]
line-length = 79
target-version = [ "py37",]
[tool.poetry]
name = "ERPLibre"
version = "1.5.0"
description = "Easy way to configure Odoo community"
license = "AGPL-3.0-or-later"
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
[tool.poetry.dependencies]
python = "^3.10.14"
agithub = "^2.2.2"
argcomplete = "^3.5.1"
asana = "^5.0.10"
asn1crypto = "^1.5.1"
astor = "^0.8.1"
avalara = "^24.10.0"
azure-identity = "1.13.0"
azure-storage-blob = "12.16.0"
babel = "2.9.1"
base64io = "^1.0.3"
beautifulsoup4 = "^4.12.3"
bokeh = "3.1.1"
boto3 = "1.26.7"
bs4 = "^0.0.2"
cachetools = "^5.5.0"
cairosvg = "^2.7.1"
chardet = "4.0.0"
clicksend-client = "^5.0.78"
cloudflare = "^3.1.0"
cmake = "^3.30.5"
colorama = "^0.4.6"
countryinfo = "^0.1.2"
cryptography = "3.4.8"
cybersource-rest-client-python = "0.0.56"
cython = "^3.0.11"
decorator = "4.4.2"
dlib = "^19.24.6"
docutils = "0.16"
dotty-dict = "^1.3.1"
dropbox = "^12.0.2"
ebaysdk = "2.1.5"
email-validator = "^2.2.0"
endesive = "^2.17.3"
extract-msg = "^0.51.1"
ezdxf = "^1.3.4"
face-recognition = "^1.3.0"
factur-x = "^3.1"
filetype = "^1.2.0"
formio-data = "^2.1.0"
freezegun = "0.3.15"
fsspec = ">=2024.5.0"
gdown = "^5.2.0"
geocoder = "^1.38.1"
geojson = "^3.1.0"
geopy = "^2.4.1"
gevent = "21.8.0"
gitpython = "3.1.30"
giturlparse = "^0.12.0"
googletrans-py = "4.0.0"
greenlet = "1.1.2"
gst = "^0.1.0"
httpagentparser = "1.8.1"
hubspot-api-client = "^10.0.0"
idna = "2.10"
iscompatible = "^0.1.1"
jinja2 = "2.11.3"
keystoneauth1 = "5.0.0"
libsass = "0.20.1"
linkedin = "^0.1.5"
lottie = "^0.7.1"
lxml = "4.6.5"
lxml-html-clean = "^0.3.1"
mako = "^1.3.5"
markupsafe = "1.1.1"
matplotlib = "^3.9.2"
mechanize = "^0.4.10"
messagebird = "^2.2.0"
mock = "^5.1.0"
mpld3 = "0.5.9"
mysqlclient = "^2.2.5"
nextcloud-api-wrapper = "^0.2.3"
num2words = "0.5.13"
numpy = ">=1.15"
numpy-financial = "<=1.0.0"
numpy-stl = "^3.1.2"
odoo-test-helper = "^2.1.1"
odoorpc = "^0.10.1"
ofxparse = "0.21"
ofxtools = "^0.9.5"
openai = "^1.52.0"
opencv-python = "^4.10.0.84"
openpyxl = "^3.1.5"
pandas = ">=0.25.3"
paramiko = "^3.5.0"
passlib = "1.7.4"
pathspec = "^0.12.1"
pay-ccavenue = "^1.0.0"
pdf2image = "^1.17.0"
phonenumbers = "^8.13.47"
pillow = "9.0.1"
plotly = "5.13.1"
polib = "1.1.0"
premailer = "^3.10.0"
printnodeapi = "^0.2.0"
prometheus-client = "0.15.0"
psutil = "5.8.0"
psycopg2 = "2.9.2"
py-asterisk = "^0.5.18"
py3dns = "^4.0.2"
py3o-formats = "^0.3"
py3o-template = "^0.10.0"
pyaudio = "^0.2.14"
pycountry = "^24.6.1"
pydifact = "^0.1.7"
pydot = "1.4.2"
pyfcm = "^2.0.7"
pygithub = "^2.4.0"
pygobject = "3.44.1"
pyjwt = "^2.9.0"
pymssql = "<=2.2.5"
pyncclient = "^0.7"
pyopenssl = "20.0.1"
pypdf2 = "1.26.0"
pyrfc6266 = "^1.0.2"
pysaml2 = "^7.5.0"
pyserial = "3.5"
pysftp = "^0.2.9"
pytesseract = "^0.3.13"
python-barcode = "^0.15.1"
python-dateutil = "2.8.1"
python-jose = "^3.3.0"
python-json-logger = "2.0.4"
python-keystoneclient = "5.0.0"
python-ldap = "3.4.0"
python-randomword-fr = "^1.0.0"
python-resize-image = "^1.1.20"
python-slugify = "^8.0.4"
python-stdnum = "1.16"
python-swiftclient = "4.1.0"
python-telegram-bot = "^21.6"
pytz = "^2024.2"
pyusb = "1.0.2"
pyyaml = "6.0"
pyzbar = "^0.1.9"
pyzk = "^0.9"
qrcode = "6.1"
redis = "4.3.4"
reportlab = "3.5.59"
requests = "2.30.0"
requests-toolbelt = "^1.0.0"
responses = "^0.25.3"
retrying = "^1.3.4"
rl-renderpm = "4.0.3"
roulier = "^1.1.1"
schwifty = "2024.4.0"
selenium = "^4.25.0"
sentry-sdk = "<=1.9.0"
shapely = "^2.0.6"
simplejson = "^3.19.3"
spacy = "^3.8.2"
speechrecognition = "3.10.0"
sqlalchemy = "^2.0.36"
statsd = "4.0.1"
telesign = "^2.2.3"
telnyx = "^2.1.3"
todoist-python = "^8.1.4"
toml = "^0.10.2"
tweepy = "^4.14.0"
twilio = "^9.3.4"
unidecode = "^1.3.8"
unidiff = "^0.7.5"
urllib3 = "1.26.5"
uvloop = "^0.21.0"
validate-email = "^1.3"
vobject = "0.9.6.1"
vonage = "^3.17.1"
werkzeug = "2.0.2"
wheel = "^0.44.0"
xlrd = "1.2.0"
xlsxwriter = "1.4.5"
xlwt = "1.3.0"
xmltodict = "0.13.0"
zeep = "4.0.0"
[tool.poetry.dev-dependencies]
websocket_client = "^1.1.0"
[tool.poetry.dependencies.black]
git = "https://github.com/psf/black.git"
rev = "24.8.0"
[tool.poetry.dependencies.openupgradelib]
git = "https://github.com/OCA/openupgradelib"
rev = "master"

View file

@ -24,6 +24,7 @@ factur-x
# For ERPLibre project # For ERPLibre project
RandomWords RandomWords
selenium==4.11.2
# For testing # For testing
websocket-client websocket-client
@ -59,7 +60,11 @@ webcolors==1.13
openpyxl==3.1.3 openpyxl==3.1.3
# For deployment # For deployment
cloudflare cloudflare==3.0.1
# Fix build
pymssql==2.3.0
cython==3.0.10
# For multilang_md.py # For multilang_md.py
click click
@ -71,7 +76,7 @@ shapely==1.8.5
# Code generator # Code generator
mysqlclient==2.1.1 mysqlclient==2.1.1
python-pptx python-pptx==0.6.23
humanize==4.6.0 humanize==4.6.0
# pyproj >=3.3.0 is not compatible with python 3.7 # pyproj >=3.3.0 is not compatible with python 3.7
@ -89,6 +94,9 @@ numpy==1.21.1
feedparser==6.0.10 feedparser==6.0.10
geojson<3.0.0 geojson<3.0.0
# Fix poetry
olefile==0.47
# asyncio # asyncio
aioshutil<1.2 aioshutil<1.2
tqdm tqdm
@ -103,6 +111,11 @@ extract-msg==0.36.1
extract_msg==0.36.1 extract_msg==0.36.1
# Limitation because python3.7 # Limitation because python3.7
furo==2021.2.21b25
ovh==1.1.2
#requests-oauthlib==1.3.1
greenlet==0.4.14
gevent==1.5.0
argcomplete==3.1.1 argcomplete==3.1.1
responses==0.23.1 responses==0.23.1
dnspython==2.3.0 dnspython==2.3.0
@ -129,6 +142,7 @@ azure.identity==1.15.0
azure-storage-blob==12.19.0 azure-storage-blob==12.19.0
azure.storage.blob==12.19.0 azure.storage.blob==12.19.0
sqlparse==0.4.4 sqlparse==0.4.4
zeep==4.2.1
# Force version for security update # Force version for security update
pyyaml==6.0 pyyaml==6.0

View file

@ -0,0 +1,139 @@
# For script
giturlparse
agithub
GitPython==3.1.30
retrying
xmltodict
openupgradelib
unidiff
colorama
wheel
mmg==1.0.3
selenium
# For OSX
cython
# For Odoo
wheel
phonenumbers
# Force update version to latest, no break update
pytz>=2022.7
# For OCA
factur-x
# For smile
xmlrunner
# For testing
websocket-client
python-stdnum
python-u2flib_server
python-chess
python-git
voicent-python
python-swiftclient
python-keystoneclient
coverage
# For logical test
docutils==0.16.0
flake8<6.0.0
git+https://github.com/oca/pylint-odoo.git
# oca-maintainers-tools
# git+https://github.com/OCA/maintainer-tools.git#egg=oca-maintainers-tools
xmlformatter
css-html-prettify
BeautifulSoup4
git+https://github.com/psf/black.git@22.3.0
isort<5.12.0
# For updating poetry
toml
iscompatible
pandas==1.3.5
Jinja2==2.11.3
python-keystoneclient==3.22.0
# For deployment
cloudflare==2.20.0
# For multilang_md.py
click
emoji
# Fix bug geoengine
# https://github.com/OCA/geospatial/issues/318
shapely==1.8.5
# Code generator
mysqlclient==2.1.1
# pyproj >=3.3.0 is not compatible with python 3.7
pyproj==3.2.1
# to fix build
validators==0.24.0
sphinx==4.3.2
# Fix error
greenlet==0.4.17
gevent==20.9.0
# For some module
img2pdf
# fix zipp depend on importlib-metadata
zipp>=3.6.0
# Upgrade psycopg for better support python3
psycopg2==2.9.5
# Force update dependency to fix poetry
# numpy >=1.22 is not compatible with python 3.7
numpy==1.21.1
feedparser==6.0.10
geojson<3.0.0
regex==2022.3.2
pygount==1.5.1
pysaml2==7.2.1
gevent==1.5.0
freezegun==0.3.15
pyopenssl==21.0.0
ovh==1.1.2
sphinx-rtd-theme==1.3.0
sphinx_rtd_theme==1.3.0
dnspython==2.6.1
coverage==7.6.1
# asyncio
aioshutil<1.2
tqdm
uvloop
# Solve pcodedmp, oletools, rtfde and extract-msg
win_unicode_console
# Security issue, depend on extract-msg 0.36.1
chardet==5.0.0
extract-msg==0.36.1
# Force version for security update
pyyaml==6.0
lxml==4.9.1
cryptography==39.0.1
psutil==5.9.0
Pillow==9.3.0
Babel==2.9.1
reportlab==3.6.5
urllib3>=1.26.13
requests==2.28.1
boto3>=1.20.41
PyPDF2==1.27.9
mako==1.2.2
pyjwt==2.5.0
pygments==2.7.4
setuptools==65.5.1
Werkzeug==0.16.1
future==0.18.3

View file

@ -0,0 +1,74 @@
# ERPLibre Poetry requirement
iscompatible
toml
# ERPLibre script
giturlparse
agithub
GitPython==3.1.30
retrying
xmltodict
openupgradelib
unidiff
colorama
wheel
cloudflare
selenium
# mmg # depend on weasyprint 59.0 and depend on old version pillow 9.0.1
uvloop
# For OSX
cython
# Module voice_to_text
SpeechRecognition==3.10.0
# Module detect_unauthorized_login
opencv-python
# Module advanced_payment_cybersource
cybersource-rest-client-python==0.0.56
# Module translation_helper
googletrans-py==4.0.0
#googletrans==4.0.0-rc1
#chardet==3.0.4
#openai==1.20.0
# Module infobip_whatsapp_integration
# Ignore it, need another version of requests
# infobip-api-python-sdk==5.0.0
# Module extra unknown name
filetype
PyPDF2
# For logical test and quality
git+https://github.com/psf/black.git@24.8.0
# For python 3.10 from odoo/requirements.txt, poetry_update.py cannot support python_version
cryptography==3.4.8
freezegun==0.3.15
gevent==21.8.0
greenlet==1.1.2
Jinja2==2.11.3
libsass==0.20.1
lxml==4.6.5
MarkupSafe==1.1.1
ofxparse==0.21
Pillow==9.0.1
psutil==5.8.0
psycopg2==2.9.2
pyopenssl==20.0.1
PyPDF2==1.26.0
python-ldap==3.4.0
pyusb==1.0.2
requests==2.30.0
reportlab==3.5.59
urllib3==1.26.5
Werkzeug==2.0.2
xlrd==1.2.0
# Force python 3.10 over odoo/requirements.txt to remove warning
num2words==0.5.13
xlsxwriter==1.4.5

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import configparser import configparser
import logging import logging

View file

@ -4,7 +4,16 @@ Color_Off='\033[0m' # Text Reset
# $1 BD NAME # $1 BD NAME
# $2 file_path # $2 file_path
./script/addons/install_addons.sh "$1" "$(<$2)"
# If addons is separate by ,
# ./script/addons/install_addons.sh "$1" "$(<$2)"
# If addons is separate by endline
# Read the file, put all line into string separate by ,
resultat=$(grep -v '^$' $2 | tr '\n' ',' | sed 's/,$//')
echo "Install modules ${resultat}"
./script/addons/install_addons.sh "$1" "$resultat"
retVal=$? retVal=$?
if [[ $retVal -ne 0 ]]; then if [[ $retVal -ne 0 ]]; then
echo -e "${Red}Error${Color_Off} ./script/addons/install_addons.sh into install_addons_from_file.sh" echo -e "${Red}Error${Color_Off} ./script/addons/install_addons.sh into install_addons_from_file.sh"

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import configparser import configparser
import logging import logging

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import astor import astor

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import os import os
import subprocess import subprocess

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import uuid import uuid
import subprocess import subprocess

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import json import json
import logging import logging

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import csv import csv
import logging import logging

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import subprocess import subprocess

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import configparser import configparser
import getpass import getpass
@ -36,7 +39,6 @@ SUGGESTION
parser.add_argument("-d", "--database", help="Database to manipulate.") parser.add_argument("-d", "--database", help="Database to manipulate.")
parser.add_argument( parser.add_argument(
"--image", "--image",
default="erplibre_base",
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 erplibre_base to use image"
@ -74,6 +76,11 @@ def main():
arg_base = "./.venv/bin/python3 ./odoo/odoo-bin db" arg_base = "./.venv/bin/python3 ./odoo/odoo-bin db"
if not config.image:
with open(".odoo-version", "r") as f:
odoo_version = f.readline()
config.image = f"odoo{odoo_version}_base"
# check if it needs master password from config file # check if it needs master password from config file
has_config_file = True has_config_file = True
config_path = "./config.conf" config_path = "./config.conf"

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
from collections import defaultdict from collections import defaultdict
import pymysql import pymysql

390
script/database/image_db.py Executable file
View file

@ -0,0 +1,390 @@
#!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse
import logging
import os
from collections import defaultdict
import uuid
import time
import json
import sys
import subprocess
logging.basicConfig(level=os.environ.get("LOGLEVEL", "INFO"))
_logger = logging.getLogger(__name__)
PYTHON_BIN = ".venv/bin/python3"
IMAGE_DB_BIN = f"{PYTHON_BIN} ./script/database/image_db.py"
def get_config():
"""Parse command line arguments, extracting the config file name,
returning the union of config file and command line arguments
:return: dict of config file settings and command line arguments
"""
# TODO update description
parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter,
description="""\
DESCRIPTION
Create image for database restoration to increase speed. Check file
SUGGESTION
./script/database/image_db.py --image erplibre_base --odoo_version 16.0
""",
epilog="""\
""",
)
parser.add_argument(
"--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"
),
)
parser.add_argument(
"--odoo_version",
help=(
"Force Odoo version, example 12.0 or 16.0, if empty, use from"
" .odoo-version file"
),
)
parser.add_argument(
"--generate_list_only",
action="store_true",
help=(
"Generate list command in bash to run all package from"
" odoo_version"
),
)
parser.add_argument(
"--generate_bash_cmd_parallel",
action="store_true",
help=(
"Generate list with parallel command in bash to run all package"
" from odoo_version"
),
)
parser.add_argument(
"--show_list_only",
action="store_true",
help="Show list of all package about Odoo version",
)
parser.add_argument(
"--check_addons_exist",
action="store_true",
help=(
"Will return an error and stop execution if detect a non existing"
" addons from actual odoo version."
),
)
parser.add_argument(
"--keep_database",
action="store_true",
help="Keep temporary database",
)
args = parser.parse_args()
return args
def main():
config = get_config()
if not config.odoo_version:
# Fill it from system
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:
config.odoo_version = f.readline()
# Open configuration file
config_file = os.path.join("conf", f"module_list_image_db_odoo.json")
if not os.path.exists(config_file):
_logger.error(f"Configuration file {config_file} does not exist.")
sys.exit(1)
with open(config_file, "r") as f:
dct_config_all_image = json.load(f)
odoo_prefix_version = f"odoo{config.odoo_version}"
if config.show_list_only:
lst_image_to_show = set()
for image_db_name, dct_image_db in dct_config_all_image.items():
if not image_db_name.startswith(
odoo_prefix_version
) or dct_image_db.get("disable"):
continue
# First always need to be a base
image_list = dct_image_db.get("image_list")
for dct_image in image_list:
pkg_name = dct_image.get("pkg_name")
if pkg_name:
sub_image_db_name = f"{image_db_name}_{pkg_name}"
else:
sub_image_db_name = image_db_name
lst_image_to_show.add(sub_image_db_name)
lst_to_show = sorted(lst_image_to_show)
for image_to_show in lst_to_show:
print(image_to_show)
sys.exit(0)
if config.generate_list_only:
for image_db_name, dct_image_db in dct_config_all_image.items():
if not image_db_name.startswith(
odoo_prefix_version
) or dct_image_db.get("disable"):
continue
# First always need to be a base
print(
f"{IMAGE_DB_BIN} --odoo_version"
f" {config.odoo_version} --image {image_db_name}"
)
sys.exit(0)
if config.check_addons_exist:
lst_module_to_check = set()
for image_db_name, dct_image_db in dct_config_all_image.items():
if not image_db_name.startswith(
odoo_prefix_version
) or dct_image_db.get("disable"):
continue
lst_image_list = dct_image_db.get("image_list")
for dct_image_config in lst_image_list:
lst_module = dct_image_config.get("module")
lst_module_to_check.update(lst_module)
lst_module_missing = []
for module_to_check in lst_module_to_check:
cmd_check = (
f"{PYTHON_BIN} ./script/addons/check_addons_exist.py -m"
f" {module_to_check}"
)
status = run_cmd(cmd_check, quiet=True, sys_exit=False)
if status:
lst_module_missing.append(module_to_check)
if lst_module_missing:
print(f"Missing module :")
print(sorted(lst_module_missing))
sys.exit(1)
else:
print("No module missing")
sys.exit(0)
if config.generate_bash_cmd_parallel:
dct_depend_image = defaultdict(list)
lst_total_image = []
lst_distribute_image = []
lst_queue_parallel = []
dct_image_delay = defaultdict(int)
# Search dependency
for image_db_name, dct_image_db in dct_config_all_image.items():
if not image_db_name.startswith(
odoo_prefix_version
) or dct_image_db.get("disable"):
continue
if image_db_name in lst_total_image:
_logger.error(f"Duplicate image_db_name: {image_db_name}")
sys.exit(1)
base_name = dct_image_db.get("base", "")
dct_depend_image[base_name].append(image_db_name)
lst_total_image.append(image_db_name)
dct_image_delay[image_db_name] = dct_image_db.get("delay", 0)
# Reorder it
max_iter = 1000
i = 0
while dct_depend_image and i < max_iter:
i += 1
if "" in dct_depend_image.keys():
# Get from empty key for root dependency
lst_module = dct_depend_image.get("")
lst_queue_parallel.append(lst_module)
lst_distribute_image = lst_module[:]
del dct_depend_image[""]
else:
# Search if dependency already into list
lst_module = []
lst_key_to_delete = []
lst_distribute_image_to_append = []
for key_to_check, lst_value in dct_depend_image.items():
if key_to_check in lst_distribute_image:
# Dependency find
# Search for delay
has_delay = False
for value_module in lst_value:
delay = dct_image_delay.get(value_module)
if delay:
has_delay = True
dct_image_delay[value_module] = delay - 1
elif value_module not in lst_distribute_image:
lst_distribute_image_to_append.append(
value_module
)
lst_module.append(value_module)
if not has_delay:
lst_key_to_delete.append(key_to_check)
lst_distribute_image.extend(lst_distribute_image_to_append)
if lst_module:
lst_queue_parallel.append(lst_module)
for key_to_delete in lst_key_to_delete:
del dct_depend_image[key_to_delete]
# not finish to empty the queue
if dct_depend_image:
_logger.info("Missing dependencies, auto-run all image generation for last execution")
for depend_image, lst_module in dct_depend_image.items():
lst_queue_parallel.append(lst_module)
# print command to execute
lst_cmd = []
for lst_mod in lst_queue_parallel:
if not lst_mod:
continue
str_module = " ".join(lst_mod)
cmd = f"echo 'Generate imageDB : [{str_module}]'\n"
if len(lst_mod) > 1:
cmd += "parallel ::: " + " ".join(
[
f'"{IMAGE_DB_BIN} --odoo_version'
f' {config.odoo_version} --image {a}"'
for a in lst_mod
]
)
else:
cmd += (
f"{IMAGE_DB_BIN} --odoo_version"
f" {config.odoo_version} --image {lst_mod[0]}"
)
cmd += "\nstatus=$?; [ $status -ne 0 ] && exit $status"
lst_cmd.append(cmd)
print("\n".join(lst_cmd))
sys.exit(0)
image_name_to_generate = (
config.image if config.image else f"{odoo_prefix_version}_base"
)
dct_config_image = dct_config_all_image.get(image_name_to_generate)
if not dct_config_image:
_logger.error(f"Cannot retrieve image name '{image_name_to_generate}'")
sys.exit(1)
if dct_config_image.get("disable"):
_logger.info("Ignore this image DB generation, because it's disabled.")
sys.exit(1)
bd_temp_name = (
f"temp_img_create_{image_name_to_generate}_{uuid.uuid4().hex[:6]}"
)
# Summary
# Step 0, drop and restore
# Step 1, install addons
# Step 2, uninstall if need it
# Step 3, install theme
# Step 4, create image_db by backup
# Step 5, loop to 1 with same bd name
base_image_name = dct_config_image.get("base")
all_temp_bd = []
# Step 0, drop and restore
cmd_drop_db = (
f"{PYTHON_BIN} ./odoo/odoo-bin db --drop --database {bd_temp_name}"
)
all_temp_bd.append(bd_temp_name)
run_cmd(cmd_drop_db)
if not base_image_name or base_image_name == image_name_to_generate:
with_demo = dct_config_image.get("with_demo")
# Create a new one
cmd = (
f"{PYTHON_BIN} ./odoo/odoo-bin db --create --database"
f" {bd_temp_name}"
)
if with_demo:
cmd += " --demo"
else:
cmd = (
"./script/database/db_restore.py --database"
f" {bd_temp_name} --image {base_image_name}"
)
run_cmd(cmd)
for dct_value in dct_config_image.get("image_list"):
pkg_name = dct_value.get("pkg_name", "")
# Step 1, install addons
lst_module = ",".join(dct_value.get("module"))
cmd = f"./script/addons/install_addons.sh {bd_temp_name} {lst_module}"
run_cmd(cmd)
# Step 2, uninstall if need it
# Step 3, install theme
module_theme = dct_value.get("theme")
if module_theme:
cmd = (
"./script/addons/install_addons_theme.sh"
f" {bd_temp_name} {module_theme}"
)
run_cmd(cmd)
# Step 4, create image_db by backup
module_image_name = (
image_name_to_generate
if not pkg_name
else f"{image_name_to_generate}_{pkg_name}"
)
cmd = (
f"{PYTHON_BIN} ./odoo/odoo-bin db --backup --database"
f" {bd_temp_name} --restore_image {module_image_name}"
)
run_cmd(cmd)
# Step 5, loop to 1 with same bd name for next package
# Step 6, clean if ask
if not config.keep_database:
for db_name in all_temp_bd:
cmd_drop_db = (
f"{PYTHON_BIN} ./odoo/odoo-bin db --drop --database {db_name}"
)
run_cmd(cmd_drop_db)
def run_cmd(cmd, quiet=False, sys_exit=True):
# status = os.system(cmd)
# if status != 0:
# _logger.error(f"Command failed : '{cmd}'")
# sys.exit(status)
if not quiet:
_logger.info(f"Run cmd: {cmd}")
debut = time.time()
process = subprocess.Popen(
cmd,
shell=True,
text=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
stdout, stderr = process.communicate()
fin = time.time()
status_code = process.returncode
if stderr and not quiet:
_logger.error(stderr)
execution_time = fin - debut
if not quiet:
_logger.info(f"Time execution: {execution_time:.2f} seconds\n")
if status_code != 0:
if not quiet:
_logger.error(f"Command failed : '{cmd}'")
if sys_exit:
sys.exit(status_code)
return status_code
if __name__ == "__main__":
main()

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import requests import requests
r = requests.get(r"https://api.ipify.org") r = requests.get(r"https://api.ipify.org")

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging

View file

@ -3,6 +3,15 @@
Red='\033[0;31m' # Red Red='\033[0;31m' # Red
Color_Off='\033[0m' # Text Reset Color_Off='\033[0m' # Text Reset
ERPLIBRE_IMAGE_NAME=$(cat .erplibre-semver-version|xargs)
ERPLIBRE_VERSION_MAIN=$(cat .erplibre-version|xargs)
ODOO_VERSION=$(cat .odoo-version|xargs)
PYTHON_VERSION=$(cat .python-version|xargs)
POETRY_VERSION=$(cat .poetry-version|xargs)
IS_DEBIAN_BOOKWORM=true
IS_DEBIAN_BULLSEYE=true
# or IS_DEBIAN_BUSTER
ARGS="" ARGS=""
IS_RELEASE=false IS_RELEASE=false
IS_RELEASE_ALPHA=false IS_RELEASE_ALPHA=false
@ -10,6 +19,8 @@ IS_RELEASE_BETA=false
ERPLIBRE_DOCKER_BASE="technolibre/erplibre-base" ERPLIBRE_DOCKER_BASE="technolibre/erplibre-base"
ERPLIBRE_DOCKER_PROD="technolibre/erplibre" ERPLIBRE_DOCKER_PROD="technolibre/erplibre"
output_version=""
for arg in "$@" for arg in "$@"
do do
if [ "$arg" == "--no-cache" ] if [ "$arg" == "--no-cache" ]
@ -24,9 +35,35 @@ do
elif [ "$arg" == "--release_beta" ] elif [ "$arg" == "--release_beta" ]
then then
IS_RELEASE_BETA=true IS_RELEASE_BETA=true
elif [ "$arg" == "--odoo_16" ]
then
output_version=$(python ./script/version/get_version.py --odoo_version 16.0)
elif [ "$arg" == "--odoo_14" ]
then
IS_DEBIAN_BOOKWORM=false
IS_DEBIAN_BULLSEYE=false
output_version=$(python ./script/version/get_version.py --odoo_version 14.0)
elif [ "$arg" == "--odoo_12" ]
then
IS_DEBIAN_BOOKWORM=false
IS_DEBIAN_BULLSEYE=false
output_version=$(python ./script/version/get_version.py --odoo_version 12.0)
fi fi
done done
if [ "$output_version" != "" ]; then
ODOO_VERSION=$(echo "$output_version" | awk 'NR==1')
POETRY_VERSION=$(echo "$output_version" | awk 'NR==2')
PYTHON_VERSION=$(echo "$output_version" | awk 'NR==3')
ERPLIBRE_VERSION_MAIN=$(echo "$output_version" | awk 'NR==4')
fi
echo "Build with"
echo $ERPLIBRE_VERSION_MAIN
echo $ODOO_VERSION
echo $PYTHON_VERSION
echo $POETRY_VERSION
if [ "$IS_RELEASE_ALPHA" == true ] if [ "$IS_RELEASE_ALPHA" == true ]
then then
# Add commit hash when release alpha # Add commit hash when release alpha
@ -44,11 +81,14 @@ fi
ERPLIBRE_DOCKER_BASE_VERSION="${ERPLIBRE_DOCKER_BASE}:${ERPLIBRE_VERSION}" ERPLIBRE_DOCKER_BASE_VERSION="${ERPLIBRE_DOCKER_BASE}:${ERPLIBRE_VERSION}"
ERPLIBRE_DOCKER_PROD_VERSION="${ERPLIBRE_DOCKER_PROD}:${ERPLIBRE_VERSION}" ERPLIBRE_DOCKER_PROD_VERSION="${ERPLIBRE_DOCKER_PROD}:${ERPLIBRE_VERSION}"
ERPLIBRE_VERSION_MAIN="odoo${ODOO_VERSION}_python${PYTHON_VERSION}"
echo "Create docker ${ERPLIBRE_DOCKER_PROD_VERSION}" echo "Create docker ${ERPLIBRE_DOCKER_PROD_VERSION}"
# Rewrite docker-compose # Rewrite docker-compose
./script/docker/docker_update_version.py --version=${ERPLIBRE_VERSION} --base=${ERPLIBRE_DOCKER_BASE} --prod=${ERPLIBRE_DOCKER_PROD} ./script/docker/docker_update_version.py --version=${ERPLIBRE_VERSION} --base=${ERPLIBRE_DOCKER_BASE} --prod=${ERPLIBRE_DOCKER_PROD} --ignore_edit_docker
ARGS="${ARGS} --build-arg ERPLIBRE_VERSION=${ERPLIBRE_VERSION_MAIN} --build-arg ODOO_VERSION=${ODOO_VERSION} --build-arg POETRY_VERSION=${POETRY_VERSION} --build-arg ERPLIBRE_IMAGE_NAME=${ERPLIBRE_VERSION} --build-arg PYTHON_VERSION=${PYTHON_VERSION}"
retVal=$? retVal=$?
if [[ $retVal -ne 0 ]]; then if [[ $retVal -ne 0 ]]; then
@ -58,8 +98,15 @@ fi
cd docker cd docker
ARGS="${ARGS} --build-arg=WORKING_BRANCH=$(git rev-parse --abbrev-ref HEAD) --build-arg=WORKING_HASH=$(git rev-parse --verify HEAD)" ARGS="${ARGS} --build-arg WORKING_BRANCH=$(git rev-parse --abbrev-ref HEAD) --build-arg WORKING_HASH=$(git rev-parse --verify HEAD)"
if [ "$IS_DEBIAN_BOOKWORM" == true ]; then
ARGS="${ARGS} --build-arg DEBIAN_NAME=bookworm --build-arg URL_WKHTMLTOX=github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb --build-arg SHA1SUM_WKTHMLTOX=e9f95436298c77cc9406bd4bbd242f4771d0a4b2"
elif [ "$IS_DEBIAN_BOOKWORM" != true ]; then
ARGS="${ARGS} --build-arg DEBIAN_NAME=bullseye --build-arg URL_WKHTMLTOX=github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.bullseye_amd64.deb --build-arg SHA1SUM_WKTHMLTOX=cecbf5a6abbd68d324a7cd6c51ec843d71e98951"
elif [ "IS_DEBIAN_BULLSEYE" != true ]; then
ARGS="${ARGS} --build-arg DEBIAN_NAME=buster --build-arg URL_WKHTMLTOX=github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_amd64.deb --build-arg SHA1SUM_WKTHMLTOX=d9f259a67e05e1c221d48b504453645e6c491fab"
fi
set -e set -e
# Build base # Build base

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os
@ -48,6 +51,11 @@ def get_config():
default="./docker/Dockerfile.prod.pkg", default="./docker/Dockerfile.prod.pkg",
help="Docker prod file to update.", help="Docker prod file to update.",
) )
parser.add_argument(
"--ignore_edit_docker",
action="store_true",
help="Will not edit dockerfile.",
)
args = parser.parse_args() args = parser.parse_args()
args.base_version = f"{args.base}:{args.version}" args.base_version = f"{args.base}:{args.version}"
args.prod_version = f"{args.prod}:{args.version}" args.prod_version = f"{args.prod}:{args.version}"
@ -116,6 +124,7 @@ def edit_docker_prod(config):
def main(): def main():
config = get_config() config = get_config()
edit_text(config) edit_text(config)
if not config.ignore_edit_docker:
edit_docker_prod(config) edit_docker_prod(config)

View file

@ -12,8 +12,6 @@ EL_CONFIG_FILE="${EL_HOME}/config.conf"
#EL_MINIMAL_ADDONS="False" #EL_MINIMAL_ADDONS="False"
#EL_INSTALL_NGINX="True" #EL_INSTALL_NGINX="True"
echo -e "* Create server config file"
touch "${EL_CONFIG_FILE}" touch "${EL_CONFIG_FILE}"
echo -e "* Creating server config file" echo -e "* Creating server config file"
printf '[options] \n; This is the password that allows database operations:\n' > "${EL_CONFIG_FILE}" printf '[options] \n; This is the password that allows database operations:\n' > "${EL_CONFIG_FILE}"
@ -25,152 +23,117 @@ printf "db_password = False\n" >> "${EL_CONFIG_FILE}"
printf "xmlrpc_port = ${EL_PORT}\n" >> "${EL_CONFIG_FILE}" printf "xmlrpc_port = ${EL_PORT}\n" >> "${EL_CONFIG_FILE}"
printf "longpolling_port = ${EL_LONGPOLLING_PORT}\n" >> "${EL_CONFIG_FILE}" printf "longpolling_port = ${EL_LONGPOLLING_PORT}\n" >> "${EL_CONFIG_FILE}"
printf "addons_path = ${EL_HOME_ODOO}/addons,${EL_HOME}/addons/addons," >> "${EL_CONFIG_FILE}" printf "addons_path = ${EL_HOME_ODOO}/addons,${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/addons," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_web," >> "${EL_CONFIG_FILE}"
if [[ ${EL_MINIMAL_ADDONS} = "False" ]]; then if [[ ${EL_MINIMAL_ADDONS} = "False" ]]; then
printf "${EL_HOME}/addons/CybroOdoo_OpenHRMS," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/CybroOdoo_CybroAddons," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/ERPLibre_erplibre-3D-printing-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/CybroOdoo_OpenHRMS," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/ERPLibre_erplibre_addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/ERPLibre_erplibre_addons," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/ERPLibre_erplibre_theme_addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_account-analytic," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/JayVora-SerpentCS_SerpentCS_Contributions," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_account-budgeting," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/MathBenTech_QuotationRevision," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_account-closing," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/MathBenTech_development," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_account-consolidation," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/MathBenTech_erplibre-family-management," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_account-financial-reporting," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/MathBenTech_odoo-business-spending-management-quebec-canada," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_account-financial-tools," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/MathBenTech_scrummer," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_account-fiscal-rule," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-base-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_account-invoice-reporting," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-entertainment-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_account-invoicing," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-git-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_account-payment," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-hr-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_account-reconcile," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-partner-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_apps-store," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-product-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_bank-payment," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-project-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_bank-statement-import," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-purchase-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_brand," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-stock-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_business-requirement," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-survey-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_commission," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-timesheet-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_community-data-files," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/Numigi_odoo-web-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_connector," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_account-analytic," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_connector-ecommerce," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_account-budgeting," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_connector-interfaces," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_account-closing," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_connector-jira," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_account-consolidation," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_connector-telephony," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_account-financial-reporting," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_contract," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_account-financial-tools," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_credit-control," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_account-fiscal-rule," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_crm," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_account-invoice-reporting," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_currency," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_account-invoicing," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_data-protection," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_account-payment," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_ddmrp," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_account-reconcile," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_delivery-carrier," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_apps-store," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_donation," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_bank-payment," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_e-commerce," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_bank-statement-import," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_edi," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_brand," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_event," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_business-requirement," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_field-service," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_commission," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_fleet," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_community-data-files," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_geospatial," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_connector," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_helpdesk," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_connector-ecommerce," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_hr," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_connector-interfaces," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_interface-github," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_connector-jira," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_knowledge," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_connector-telephony," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_l10n-canada," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_contract," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_maintenance," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_credit-control," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_management-system," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_crm," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_manufacture," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_currency," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_margin-analysis," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_data-protection," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_mis-builder," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_ddmrp," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_multi-company," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_delivery-carrier," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_operating-unit," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_donation," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_partner-contact," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_e-commerce," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_pos," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_edi," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_product-attribute," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_event," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_product-configurator," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_field-service," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_product-pack," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_fleet," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_product-variant," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_geospatial," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_project," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_helpdesk," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_project-agile," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_hr," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_project-reporting," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_interface-github," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_purchase-workflow," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_knowledge," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_queue," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_l10n-canada," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_reporting-engine," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_maintenance," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_rma," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_management-system," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_sale-reporting," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_manufacture," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_sale-workflow," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_margin-analysis," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_server-auth," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_mis-builder," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_server-backend," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_multi-company," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_server-brand," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_operating-unit," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_server-env," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_partner-contact," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_server-tools," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_pos," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_server-ux," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_product-attribute," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_social," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_product-pack," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_stock-logistics-warehouse," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_product-variant," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_storage," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_project," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_survey," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_project-reporting," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_timesheet," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_purchase-workflow," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_vertical-association," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_queue," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_vertical-hotel," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_reporting-engine," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_vertical-isp," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_rma," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_vertical-travel," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_sale-reporting," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_web," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_sale-workflow," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_website," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_server-auth," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_website-cms," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_server-backend," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OCA_wms," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_server-brand," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/OmniaGit_odooplm," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_server-env," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/camptocamp_odoo-cloud-platform," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_server-tools," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/dhongu_deltatech," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_server-ux," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/it-projects-llc_saas-addons," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_social," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/muk-it_muk_web," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_stock-logistics-warehouse," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/novacode-nl_odoo-formio," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_storage," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/odoomates_odooapps," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_timesheet," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/openeducat_openeducat_erp," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_vertical-association," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons.odoo${EL_ODOO_VERSION}/tegin_medical-fhir," >> "${EL_CONFIG_FILE}"
printf "${EL_HOME}/addons/OCA_vertical-hotel," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_vertical-isp," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_vertical-travel," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_website," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_website-cms," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_wms," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OmniaGit_odooplm," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Smile-SA_odoo_addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/TechnoLibre_odoo-code-generator," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/TechnoLibre_odoo-code-generator-template," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/ajepe_odoo-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/camptocamp_odoo-cloud-platform," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/dhongu_deltatech," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/it-projects-llc_saas-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/itpp-labs_access-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/itpp-labs_pos-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/itpp-labs_website-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/kinjal-sorathiya_Property-Management_odoo," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_base," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_dms," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_docs," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_misc," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_quality," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_web," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_website," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/novacode-nl_odoo-formio," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/obayit_odoo_dhtmlxgantt," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/odoo_design-themes," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/odooaktiv_product_rating_app," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/odoomates_odooapps," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/openeducat_openeducat_erp," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/pledra_odoo-product-configurator," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/tegin_medical-fhir," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/doc/itpp-labs_odoo-development," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/doc/itpp-labs_odoo-port-docs," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/doc/itpp-labs_odoo-test-docs," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/doc/odoo_documentation-user," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/script/OCA_maintainer-tools," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/script/OCA_odoo-module-migrator," >> ${EL_CONFIG_FILE}
fi fi
printf "\n" >> "${EL_CONFIG_FILE}" printf "\n" >> "${EL_CONFIG_FILE}"
printf "max_cron_threads = 2\n" >> "${EL_CONFIG_FILE}" printf "max_cron_threads = 2\n" >> "${EL_CONFIG_FILE}"
if [[ ${EL_INSTALL_NGINX} = "True" ]]; then
printf "workers = 2\n" >> "${EL_CONFIG_FILE}" printf "workers = 2\n" >> "${EL_CONFIG_FILE}"
if [[ ${EL_INSTALL_NGINX} = "True" ]]; then
printf "xmlrpc_interface = 127.0.0.1\n" >> "${EL_CONFIG_FILE}" printf "xmlrpc_interface = 127.0.0.1\n" >> "${EL_CONFIG_FILE}"
printf "proxy_mode = True\n" >> "${EL_CONFIG_FILE}" printf "proxy_mode = True\n" >> "${EL_CONFIG_FILE}"
else fi
printf "workers = 0\n" >> "${EL_CONFIG_FILE}"
# Update and fix the config.conf
# Fix only the configuration if installation is done
if [ -f "./.venv/bin/activate" ] && [ -f "./odoo/odoo-bin" ]; then
make config_update
fi fi

View file

@ -1,5 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
rm -fr ./.repo rm -fr ./.repo
rm -rf ./odoo ./addons/* ./script/OCA* ./image_db ./doc/itpp* ./doc/odoo_* rm -rf ./odoo ./addons*/* ./script/OCA* ./image_db ./doc/itpp* ./doc/odoo_*
mkdir -p addons/addons rm -rf addons*
#mkdir -p addons/addons

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,6 +1,6 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2020 TechnoLibre (http://www.technolibre.ca) # © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# 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 logging

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import copy import copy
import logging import logging

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,6 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2020 TechnoLibre (http://www.technolibre.ca) # © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# 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 os import os
import webbrowser import webbrowser
from collections import OrderedDict from collections import OrderedDict
@ -256,6 +257,10 @@ class GitTool:
""" """
lst_filter_group = filter_group.split(",") if filter_group else [] lst_filter_group = filter_group.split(",") if filter_group else []
manifest_file = self.get_manifest_file(repo_path=repo_path) manifest_file = self.get_manifest_file(repo_path=repo_path)
if manifest_file.startswith("/home/"):
# This is a absolute path
filename = manifest_file
else:
filename = f"{repo_path}{manifest_file}" filename = f"{repo_path}{manifest_file}"
lst_repo = [] lst_repo = []
with open(filename) as xml: with open(filename) as xml:
@ -395,10 +400,17 @@ class GitTool:
# Exception, ignore addons/OCA_web and root # Exception, ignore addons/OCA_web and root
if repo.get("path") in ["addons/OCA_web", "odoo", "image_db"]: if repo.get("path") in ["addons/OCA_web", "odoo", "image_db"]:
continue continue
update_repo = repo.get("path")
# Use variable instead of hardcoded path
if update_repo.startswith("addons.odoo"):
lst_path = update_repo.split("/", 1)
update_repo = f"addons.odoo${{EL_ODOO_VERSION}}/" + lst_path[1]
str_repo = ( str_repo = (
f' printf "${{EL_HOME}}/{repo.get("path")}," >> ' f' printf "${{EL_HOME}}/{update_repo}," >> '
'"${EL_CONFIG_FILE}"\n' '"${EL_CONFIG_FILE}"\n'
) )
# Ignore repo if not starting by addons
if update_repo.startswith("addons"):
lst_result.append(str_repo) lst_result.append(str_repo)
with open(filename_locally) as file: with open(filename_locally) as file:
all_lines = file.readlines() all_lines = file.readlines()

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,6 +1,6 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021 TechnoLibre (http://www.technolibre.ca) # © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# 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 logging

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import logging import logging
import os import os

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import csv import csv
import logging import logging
@ -106,8 +109,8 @@ def main():
break break
die( die(
not project_path, not project_path,
f"Missing .iml file into {IDEA_PATH}, wait after Pycharm analyze file to" f"Missing .iml file into {IDEA_PATH}, wait after Pycharm analyze file"
" create Python environnement.", " to create Python environnement.",
) )
if config.init: if config.init:
@ -412,6 +415,11 @@ def add_exclude_folder(dct_xml, file_name, config):
) )
lst_exclude_folder = dct_content.get("excludeFolder") lst_exclude_folder = dct_content.get("excludeFolder")
# lst_to_exclude = ["./.venv.*", "./addons.*"]
lst_to_exclude = ["./.venv.*", "./addons"]
for s_exclude in lst_to_exclude:
for dir_venv in glob.glob(s_exclude):
LST_EXCLUDE_FOLDER.append(dir_venv[2:])
lst_exclude_item = [f"file://$MODULE_DIR$/{a}" for a in LST_EXCLUDE_FOLDER] lst_exclude_item = [f"file://$MODULE_DIR$/{a}" for a in LST_EXCLUDE_FOLDER]
if lst_exclude_folder: if lst_exclude_folder:

View file

@ -63,7 +63,7 @@ sudo su - postgres -c "createuser -s ${EL_USER}" 2>/dev/null || true
# Install Dependencies # Install Dependencies
#-------------------------------------------------- #--------------------------------------------------
echo -e "\n--- Installing debian dependency --" echo -e "\n--- Installing debian dependency --"
sudo apt-get install git build-essential wget libxslt-dev libzip-dev libldap2-dev libsasl2-dev gdebi-core libffi-dev libbz2-dev parallel pysassc swig -y sudo apt-get install git build-essential wget libxslt-dev libzip-dev libldap2-dev libsasl2-dev gdebi-core libffi-dev libbz2-dev parallel pysassc swig cmake portaudio19-dev -y
retVal=$? retVal=$?
if [[ $retVal -ne 0 ]]; then if [[ $retVal -ne 0 ]]; then
echo "apt-get debian tool installation error." echo "apt-get debian tool installation error."
@ -90,6 +90,13 @@ if [[ $retVal -ne 0 ]]; then
echo "apt-get pyenv dependencies installation error." echo "apt-get pyenv dependencies installation error."
exit 1 exit 1
fi fi
# Dependencies for selenium
sudo apt-get install libcairo2-dev python3-dev pkg-config libxt-dev libgirepository1.0-dev -y
retVal=$?
if [[ $retVal -ne 0 ]]; then
echo "apt-get selenium dependencies installation error."
exit 1
fi
echo -e "\n---- Installing nodeJS NPM and rtlcss for LTR support ----" echo -e "\n---- Installing nodeJS NPM and rtlcss for LTR support ----"
sudo apt-get update sudo apt-get update

View file

@ -4,17 +4,17 @@ if [[ "${OSTYPE}" == "linux-gnu" ]]; then
OS=$(lsb_release -si) OS=$(lsb_release -si)
VERSION=$(cat /etc/issue) VERSION=$(cat /etc/issue)
if [[ "${OS}" == *"Ubuntu"* ]]; then if [[ "${OS}" == *"Ubuntu"* ]]; then
if [[ "${VERSION}" == Ubuntu\ 18.04* || "${VERSION}" == Ubuntu\ 20.04* || "${VERSION}" == Ubuntu\ 22.04* || "${VERSION}" == Ubuntu\ 22.10* || "${VERSION}" == Ubuntu\ 23.04* || "${VERSION}" == Ubuntu\ 23.10* ]]; then if [[ "${VERSION}" == Ubuntu\ 18.04* || "${VERSION}" == Ubuntu\ 20.04* || "${VERSION}" == Ubuntu\ 22.04* || "${VERSION}" == Ubuntu\ 22.10* || "${VERSION}" == Ubuntu\ 23.04* || "${VERSION}" == Ubuntu\ 23.10* || "${VERSION}" == Ubuntu\ 24.04* ]]; then
echo "\n---- linux-gnu installation process started ----" echo "\n---- linux-gnu installation process started ----"
./script/install/install_debian_dependency.sh ./script/install/install_debian_dependency.sh
else else
echo "Your version is not supported, only support 18.04, 20.04 and 22.04 - 23.10 : ${VERSION}" echo "Your version is not supported, only support 18.04, 20.04 and 22.04 - 24.04 : ${VERSION}"
fi fi
elif [[ "${OS}" == *"Debian"* ]]; then elif [[ "${OS}" == *"Debian"* ]]; then
./script/install/install_debian_dependency.sh ./script/install/install_debian_dependency.sh
else else
./script/install/install_debian_dependency.sh ./script/install/install_debian_dependency.sh
echo "Your Linux system is not supported, only support Ubuntu 18.04 or Ubuntu 20.04 or Ubuntu 22.04 - Ubuntu 23.10." echo "Your Linux system is not supported, only support Ubuntu 18.04 or Ubuntu 20.04 or Ubuntu 22.04 - Ubuntu 23.10 - Ubuntu 24.04 ."
fi fi
elif [[ "${OSTYPE}" == "darwin"* ]]; then elif [[ "${OSTYPE}" == "darwin"* ]]; then
echo "\n---- Darwin installation process started ----" echo "\n---- Darwin installation process started ----"

View file

@ -22,13 +22,15 @@ Color_Off='\033[0m' # Text Reset
#git submodule update --init #git submodule update --init
# Generate empty addons if missing # Generate empty addons if missing
if [[ ! -d "./addons/addons" ]]; then path_addons_addons="./addons.odoo${EL_ODOO_VERSION}/addons"
mkdir -p ./addons/addons if [[ ! -d "${path_addons_addons}" ]]; then
mkdir -p "${path_addons_addons}"
fi fi
PYENV_PATH=~/.pyenv PYENV_PATH=~/.pyenv
PYTHON_VERSION=3.7.16 # example, 3.7.8 will be 3.7 into PYTHON_VERSION_MAJOR
PYENV_VERSION_PATH=${PYENV_PATH}/versions/${PYTHON_VERSION} PYTHON_VERSION_MAJOR=$(echo "$EL_PYTHON_VERSION" | sed 's/\.[^\.]*$//')
PYENV_VERSION_PATH=${PYENV_PATH}/versions/${EL_PYTHON_VERSION}
PYTHON_EXEC=${PYENV_VERSION_PATH}/bin/python PYTHON_EXEC=${PYENV_VERSION_PATH}/bin/python
VENV_PATH=./.venv VENV_PATH=./.venv
LOCAL_PYTHON_EXEC=${VENV_PATH}/bin/python LOCAL_PYTHON_EXEC=${VENV_PATH}/bin/python
@ -36,8 +38,8 @@ VENV_REPO_PATH=${VENV_PATH}/repo
VENV_MULTILINGUAL_MARKDOWN_PATH=${VENV_PATH}/multilang_md.py VENV_MULTILINGUAL_MARKDOWN_PATH=${VENV_PATH}/multilang_md.py
#POETRY_PATH=~/.local/bin/poetry #POETRY_PATH=~/.local/bin/poetry
POETRY_PATH=${VENV_PATH}/bin/poetry POETRY_PATH=${VENV_PATH}/bin/poetry
POETRY_VERSION=1.5.1
if [[ ! -n "${DOCKER_BUILD}" ]]; then
echo "Python path version home" echo "Python path version home"
echo ${PYENV_VERSION_PATH} echo ${PYENV_VERSION_PATH}
echo "Python path version local" echo "Python path version local"
@ -82,12 +84,15 @@ if [[ ! -d ${VENV_PATH} ]]; then
fi fi
fi fi
source ./.venv/bin/activate source ./.venv/bin/activate
else
mkdir .venv
fi
#if [[ ! -d "${POETRY_PATH}" ]]; then #if [[ ! -d "${POETRY_PATH}" ]]; then
# # Delete directory ~/.poetry and .venv to force update to new version # # Delete directory ~/.poetry and .venv to force update to new version
# echo -e "\n---- Installing poetry ${LOCAL_PYTHON_EXEC} for reliable python package ----" # echo -e "\n---- Installing poetry ${LOCAL_PYTHON_EXEC} for reliable python package ----"
# # TODO self update poetry with `poetry self update ${POETRY_VERSION}` # # TODO self update poetry with `poetry self update ${POETRY_VERSION}`
# curl -sSL https://install.python-poetry.org | POETRY_VERSION=${POETRY_VERSION} ${LOCAL_PYTHON_EXEC} - -y # curl -sSL https://install.python-poetry.org | POETRY_VERSION=${EL_POETRY_VERSION} ${LOCAL_PYTHON_EXEC} - -y
#fi #fi
# Install git-repo if missing # Install git-repo if missing
@ -113,20 +118,20 @@ ${VENV_PATH}/bin/pip install --upgrade pip
# Delete artifacts created by pip, cause error in next "poetry install" # Delete artifacts created by pip, cause error in next "poetry install"
if [[ ! -f "${POETRY_PATH}" ]]; then if [[ ! -f "${POETRY_PATH}" ]]; then
${VENV_PATH}/bin/pip install poetry==${POETRY_VERSION} ${VENV_PATH}/bin/pip install poetry==${EL_POETRY_VERSION}
${VENV_PATH}/bin/poetry --version ${VENV_PATH}/bin/poetry --version
# Fix broken poetry by installing ignored dependence # Fix broken poetry by installing ignored dependence
# ${VENV_PATH}/bin/pip install vatnumber # ${VENV_PATH}/bin/pip install vatnumber
# ${VENV_PATH}/bin/pip install suds-jurko # ${VENV_PATH}/bin/pip install suds-jurko
# ${VENV_PATH}/bin/poetry lock --no-update # ${VENV_PATH}/bin/poetry lock --no-update
${VENV_PATH}/bin/poetry install # To fix keyring problem when installation is blocked, use
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
${VENV_PATH}/bin/poetry install --no-root -vvv
retVal=$? retVal=$?
if [[ $retVal -ne 0 ]]; then if [[ $retVal -ne 0 ]]; then
echo "Poetry installation error." echo "Poetry installation error with status ${retVal}"
exit 1 exit 1
fi fi
# Fix pip installation missing package
${VENV_PATH}/bin/pip install selenium
fi fi
# Delete artifacts created by pip, cause error in next "poetry install" # Delete artifacts created by pip, cause error in next "poetry install"
@ -134,4 +139,4 @@ rm -rf artifacts
# Link for dev # Link for dev
echo -e "\n---- Add link dependency in site-packages of Python ----" echo -e "\n---- Add link dependency in site-packages of Python ----"
ln -fs ${EL_HOME_ODOO}/odoo ${EL_HOME}/.venv/lib/python3.7/site-packages/ ln -fs "${EL_HOME_ODOO}/odoo" "${EL_HOME}/.venv/lib/python${PYTHON_VERSION_MAJOR}/site-packages/"

View file

@ -5,6 +5,9 @@
Red='\033[0;31m' # Red Red='\033[0;31m' # Red
Color_Off='\033[0m' # Text Reset Color_Off='\033[0m' # Text Reset
echo ""
echo "RUN ./script/install/install_locally.sh"
echo ""
./script/install/install_locally.sh ./script/install/install_locally.sh
retVal=$? retVal=$?
if [[ $retVal -ne 0 ]]; then if [[ $retVal -ne 0 ]]; then
@ -13,6 +16,9 @@ if [[ $retVal -ne 0 ]]; then
fi fi
# Update git-repo # Update git-repo
echo ""
echo "RUN ./script/manifest/update_manifest_local_dev.sh"
echo ""
./script/manifest/update_manifest_local_dev.sh ./script/manifest/update_manifest_local_dev.sh
retVal=$? retVal=$?
if [[ $retVal -ne 0 ]]; then if [[ $retVal -ne 0 ]]; then

View file

@ -1,5 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) # © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import asyncio import asyncio
from collections import deque from collections import deque

View file

@ -7,5 +7,4 @@
# Update git-repo # Update git-repo
./.venv/repo init -u https://github.com/ERPLibre/ERPLibre -b $(git rev-parse --verify HEAD) -m ${EL_MANIFEST_DEV} ./.venv/repo init -u https://github.com/ERPLibre/ERPLibre -b $(git rev-parse --verify HEAD) -m ${EL_MANIFEST_DEV}
#./.venv/repo sync --force-sync ./.venv/repo sync -v
./.venv/repo sync --force-sync -v

View file

@ -8,7 +8,13 @@
git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose & git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose &
DAEMON_PID=$! DAEMON_PID=$!
./.venv/repo init -u git://127.0.0.1:9418/ -b $(git rev-parse --verify HEAD) -m ${EL_MANIFEST_DEV} "$@" if [ -L "$EL_MANIFEST_DEV" ]; then
./.venv/repo sync -v --force-sync -m ${EL_MANIFEST_DEV} MANIFEST_TARGET=$(readlink -f "$EL_MANIFEST_DEV")
else
MANIFEST_TARGET="$EL_MANIFEST_DEV"
fi
./.venv/repo init -u git://127.0.0.1:9418/ -b $(git rev-parse --verify HEAD) -m ${MANIFEST_TARGET} "$@"
./.venv/repo sync -v -m ${MANIFEST_TARGET}
kill ${DAEMON_PID} kill ${DAEMON_PID}

View file

@ -9,7 +9,13 @@
git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose & git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose &
DAEMON_PID=$! DAEMON_PID=$!
./.venv/repo init -u git://127.0.0.1:9418/ -b $(git rev-parse --verify HEAD) -m ${EL_MANIFEST_DEV} -g base,code_generator if [ -L "$EL_MANIFEST_DEV" ]; then
./.venv/repo sync -v --force-sync -m ${EL_MANIFEST_DEV} MANIFEST_TARGET=$(readlink -f "$EL_MANIFEST_DEV")
else
MANIFEST_TARGET="$EL_MANIFEST_DEV"
fi
./.venv/repo init -u git://127.0.0.1:9418/ -b $(git rev-parse --verify HEAD) -m ${MANIFEST_TARGET} -g base,code_generator
./.venv/repo sync -v -m ${MANIFEST_TARGET}
kill ${DAEMON_PID} kill ${DAEMON_PID}

View file

@ -9,7 +9,13 @@
git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose & git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose &
DAEMON_PID=$! DAEMON_PID=$!
./.venv/repo init -u git://127.0.0.1:9418/ -b $(git rev-parse --verify HEAD) -m ${EL_MANIFEST_PROD} if [ -L "$EL_MANIFEST_DEV" ]; then
./.venv/repo sync -v -m ${EL_MANIFEST_PROD} MANIFEST_TARGET=$(readlink -f "EL_MANIFEST_PROD")
else
MANIFEST_TARGET="$EL_MANIFEST_DEV"
fi
./.venv/repo init -u git://127.0.0.1:9418/ -b $(git rev-parse --verify HEAD) -m ${MANIFEST_TARGET}
./.venv/repo sync -v -m ${MANIFEST_TARGET}
kill ${DAEMON_PID} kill ${DAEMON_PID}

View file

@ -7,5 +7,4 @@
# Update git-repo # Update git-repo
./.venv/repo init -u https://github.com/ERPLibre/ERPLibre -b $(git rev-parse --verify HEAD) ./.venv/repo init -u https://github.com/ERPLibre/ERPLibre -b $(git rev-parse --verify HEAD)
#./.venv/repo sync --force-sync
./.venv/repo sync -v ./.venv/repo sync -v

View file

@ -19,6 +19,9 @@ if [[ "${OSTYPE}" == "linux-gnu" ]]; then
cmd_after=";gnome-terminal --tab -- bash -c 'git status;bash';" cmd_after=";gnome-terminal --tab -- bash -c 'git status;bash';"
LONGCMD="" LONGCMD=""
for t in "${paths[@]}"; do for t in "${paths[@]}"; do
if [[ ! -e "${t}" ]]; then
continue
fi
if $first_iteration; then if $first_iteration; then
LONGCMD+="${cmd_before}${t}${cmd_after_first}" LONGCMD+="${cmd_before}${t}${cmd_after_first}"
first_iteration=false first_iteration=false

View file

@ -8,6 +8,6 @@ Color_Off='\033[0m' # Text Reset
retVal=$? retVal=$?
if [[ $retVal -ne 0 ]]; then if [[ $retVal -ne 0 ]]; then
echo -e "${Red}Error${Color_Off} ./script/poetry/poetry_add_build_dependency.sh" echo -e "${Red}Error${Color_Off} ./script/poetry/poetry_add_build_dependency.sh"
cat ./.venv/build_dependency.txt # cat ./.venv/build_dependency.txt
exit 1 exit 1
fi fi

View file

@ -1,4 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse import argparse
import ast import ast
import logging import logging
@ -58,18 +61,26 @@ def get_config():
def get_lst_requirements_txt(): def get_lst_requirements_txt():
# Ignore some item in list return get_file_from_glob("requirements.[tT][xX][tT]")
lst = [
a
for a in Path(".").rglob("requirements.[tT][xX][tT]")
if not os.path.dirname(a).startswith(".repo/")
and not os.path.dirname(a).startswith(".venv/")
]
return lst
def get_lst_manifest_py(): def get_lst_manifest_py():
return list(Path(".").rglob("__manifest__.py")) return get_file_from_glob("__manifest__.py")
def get_file_from_glob(glob_txt):
with open(".odoo-version") as txt:
odoo_version = txt.read()
# with open(".erplibre-version") as txt:
# erplibre_version = txt.read()
lst_v = []
for a in Path(".").rglob(glob_txt):
a_dirname = os.path.dirname(a)
if a_dirname.startswith(".repo/") or a_dirname.startswith(".venv"):
continue
if a_dirname.startswith("addons") and not a_dirname.startswith(f"addons.odoo{odoo_version}"):
continue
lst_v.append(a)
return lst_v
def combine_requirements(config): def combine_requirements(config):
@ -399,7 +410,7 @@ def call_poetry_add_build_dependency():
def get_list_ignored(): def get_list_ignored():
with open("./ignore_requirements.txt", "r") as f: with open("./requirement/ignore_requirements.txt", "r") as f:
lst_ignore_requirements = [a.strip() for a in f.readlines()] lst_ignore_requirements = [a.strip() for a in f.readlines()]
return lst_ignore_requirements return lst_ignore_requirements

View file

@ -1,5 +1,7 @@
#!./.venv/bin/python #!/usr/bin/env python3
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). # © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import json import json
import requests import requests

View file

@ -1,4 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import sys import sys
import argparse import argparse
import web_login import web_login

Some files were not shown because too many files have changed in this diff Show more