From 812bb9277940046cedfa926e2d4e0b22ff04e9f9 Mon Sep 17 00:00:00 2001 From: KaySar12 Date: Thu, 3 Apr 2025 09:48:51 +0700 Subject: [PATCH] update --- Makefile | 14 +++---- extra-addons | 2 +- scripts | 2 +- setup/upgrade_module.py | 92 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 101 insertions(+), 9 deletions(-) create mode 100644 setup/upgrade_module.py diff --git a/Makefile b/Makefile index 14a22a566..ba0a61731 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ DOCKER_PUSH=$(DOCKERCMD) push DOCKER_IMAGE=$(DOCKERCMD) image DOCKER_EXEC=$(DOCKERCMD) exec DEPLOY_PATH=${PWD}/deployment -SETUP_PATH=${PWD}/setup +SCRIPT_PATH=${PWD}/scripts CONFIG=odoo.conf HUB=hub.nextzenos.com CDN=https://cdn.nextzenos.com/CDN/NextERP @@ -60,10 +60,10 @@ download_backup: fi; \ Filename=$$(basename $$LinkDB); \ echo "Downloading $$Filename from: $$LinkDB"; \ - ${PWD}/setup/download_backup.sh $$LinkDB backup.zip + ${SCRIPT_PATH}/download_backup.sh $$LinkDB backup.zip #$(MAKE) download_backup LINKDB=${BACKUP} gen_config: - ${PWD}/setup/init_config.sh --native ${ADDONS} ${DB_USER} ${DB_PASSWORD} ${DB_SERVER} ${DB_PORT} + ${SCRIPT_PATH}/init_config.sh --native ${ADDONS} ${DB_USER} ${DB_PASSWORD} ${DB_SERVER} ${DB_PORT} run_server: ${PYTHON} odoo-bin --config=${CONFIG} run_test: @@ -81,13 +81,13 @@ scaffold_module: ${PYTHON} odoo-bin scaffold $$ModuleName && \ mv $$ModuleName ${PWD}/$$ModulePath; cleanup_addons: - @bash ${PWD}/setup/clean_up_addons.sh $(shell echo $(ADDONS) | tr ',' ' ') + @bash ${SCRIPT_PATH}/clean_up_addons.sh $(shell echo $(ADDONS) | tr ',' ' ') install_modules: ${PYTHON} odoo-bin --config=${CONFIG} -d ${DATABASE} -i ${MODULES} --xmlrpc-port=${PORT} upgrade_modules: ${PYTHON} odoo-bin upgrade_code --script ${SCRIPTS} --addons-path=${UPGRADE_DIR} || true delete_records: - ${PYTHON} ${PWD}/setup/delete_records.py ${DATABASE} ${BASE_MODEL} --force + ${PYTHON} ${SCRIPT_PATH}/delete_records.py ${DATABASE} ${BASE_MODEL} --force drop_database: ${PYTHON} odoo-bin db --config=${CONFIG} drop ${DATABASE} ##### Docker Deployment ######### @@ -96,7 +96,7 @@ run_test_docker: sudo ${DOCKER_EXEC} ${CONTAINER_ID} odoo db --config=/etc/odoo/${CONFIG} drop testdb-${TAG} # $(MAKE) download_backup LINKDB=${BACKUP} gen_config_docker: - ${PWD}/setup/init_config.sh --docker ${ODOO_IMAGE} ${TAG} ${CONTAINER_ID} + ${SCRIPT_PATH}/init_config.sh --docker ${ODOO_IMAGE} ${TAG} ${CONTAINER_ID} build_image: (cd ${DEPLOY_PATH} && \ DOCKER_BUILDKIT=1 ${DOCKER_BUILD} . --progress=plain --no-cache --tag $$(echo ${ODOO_IMAGE} | tr A-Z a-z):${TAG}\ @@ -116,7 +116,7 @@ run_server_docker: cd ${DEPLOY_PATH} &&\ ${DOCKER_COMPOSE_CMD} up -d update_tag: - ${SETUP_PATH}/update_tag.sh $(CURR_BRANCH) + ${SCRIPT_PATH}/update_tag.sh $(CURR_BRANCH) restore_database_docker: sudo ${DOCKER_EXEC} ${CONTAINER_ID} odoo db -c /etc/odoo/odoo.conf load backup /var/lib/odoo/backup/backup.zip stop_server_docker: diff --git a/extra-addons b/extra-addons index 68e631e4e..a9b051c96 160000 --- a/extra-addons +++ b/extra-addons @@ -1 +1 @@ -Subproject commit 68e631e4e12b9fbd45b2c0daadba5ac394072b19 +Subproject commit a9b051c961ccf14569480036d725eea68b755a06 diff --git a/scripts b/scripts index 20dd9cf79..9a1c76e1a 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 20dd9cf79177a1bebf5cff523815bf9499c1b3d2 +Subproject commit 9a1c76e1af73a832f1d44e5c1c41624a8385bdcc diff --git a/setup/upgrade_module.py b/setup/upgrade_module.py new file mode 100644 index 000000000..1a6d2acf2 --- /dev/null +++ b/setup/upgrade_module.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python +"""Install/update/uninstall specified odoo module.""" + +import odoorpc +import argparse + +USER = "admin" +PASSWORD = "admin" +HOST = "localhost" +PORT = "8069" +DB = "odoodb" + + +def prepare_args(): + """Prepare arguments for module action RPC call.""" + parser = argparse.ArgumentParser( + description="Run modules install, upgrade or uninstall." + ) + parser.add_argument( + "-i", + "--install", + help="Comma separated list of modules to install", + ) + parser.add_argument( + "-u", + "--upgrade", + help="Comma separated list of modules to upgrade", + ) + parser.add_argument( + "-del", + "--delete", + help="Comma separated list of modules to uninstall", + ) + parser.add_argument( + "--user", + help="User to log in with", + default=USER, + ) + parser.add_argument( + "--password", + help="Password to log in with", + default=PASSWORD, + ) + parser.add_argument( + "--host", + help="Host to log in to", + default=HOST, + ) + parser.add_argument( + "--port", + help="Odoo port", + default=PORT, + ) + parser.add_argument( + "-d", + "--database", + help="Database name to log in to", + default=DB, + ) + return parser.parse_args() + + +def login(user, password, host, port, database): + """Login to Odoo database and return connection object.""" + odoo = odoorpc.ODOO(host, port=port) + odoo.login(database, user, password) + return odoo + + +def _find_modules(env, module_names): + IrModuleModule = env["ir.module.module"] + modules = module_names.replace(" ", "").split(",") + module_ids = IrModuleModule.search([("name", "in", modules)]) + return IrModuleModule.browse(module_ids) + + +def trigger_action(env, module_names, action): + modules = _find_modules(env, module_names) + method = getattr(modules, f"button_immediate_{action}") + return method() + + +if __name__ == "__main__": + args = prepare_args() + odoo = login(args.user, args.password, args.host, args.port, args.database) + env = odoo.env + if args.install: + trigger_action(env, args.install, "install") + if args.upgrade: + trigger_action(env, args.upgrade, "upgrade") + if args.delete: + trigger_action(env, args.delete, "uninstall")