diff --git a/Makefile b/Makefile index f4b4a4e..c479603 100644 --- a/Makefile +++ b/Makefile @@ -87,25 +87,53 @@ db_version: db_drop_db_test: ./.venv/bin/python3 ./odoo/odoo-bin db --drop --database test +.PHONY: db_drop_db_test2 +db_drop_db_test2: + ./.venv/bin/python3 ./odoo/odoo-bin db --drop --database test2 + +.PHONY: db_drop_db_test3 +db_drop_db_test3: + ./.venv/bin/python3 ./odoo/odoo-bin db --drop --database test3 + .PHONY: db_drop_db_code_generator db_drop_db_code_generator: ./.venv/bin/python3 ./odoo/odoo-bin db --drop --database code_generator +.PHONY: db_drop_db_template +db_drop_db_template: + ./.venv/bin/python3 ./odoo/odoo-bin db --drop --database template + .PHONY: db_restore_erplibre_base_db_test -db_restore_erplibre_base_db_test: db_drop_db_test - ./.venv/bin/python3 ./odoo/odoo-bin db --restore --restore_image erplibre_base --database test +db_restore_erplibre_base_db_test: + ./script/db_restore.py --database test + +.PHONY: db_restore_erplibre_base_db_test2 +db_restore_erplibre_base_db_test2: + ./script/db_restore.py --database test2 + +.PHONY: db_restore_erplibre_base_db_test3 +db_restore_erplibre_base_db_test3: + ./script/db_restore.py --database test3 .PHONY: db_restore_erplibre_website_db_test -db_restore_erplibre_website_db_test: db_drop_db_test - ./.venv/bin/python3 ./odoo/odoo-bin db --restore --restore_image erplibre_website --database test +db_restore_erplibre_website_db_test: + ./script/db_restore.py --database test --image erplibre_website .PHONY: db_restore_erplibre_website_chat_crm_db_test -db_restore_erplibre_website_chat_crm_db_test: db_drop_db_test - ./.venv/bin/python3 ./odoo/odoo-bin db --restore --restore_image erplibre_website_chat_crm --database test +db_restore_erplibre_website_chat_crm_db_test: + ./script/db_restore.py --database test --image erplibre_website_chat_crm + +.PHONY: db_restore_erplibre_ecommerce_base_db_test +db_restore_erplibre_ecommerce_base_db_test: + ./script/db_restore.py --database test --image erplibre_ecommerce_base .PHONY: db_restore_erplibre_base_db_code_generator -db_restore_erplibre_base_db_code_generator: db_drop_db_code_generator - ./.venv/bin/python3 ./odoo/odoo-bin db --restore --restore_image erplibre_base --database code_generator +db_restore_erplibre_base_db_code_generator: + ./script/db_restore.py --database code_generator + +.PHONY: db_restore_erplibre_base_db_template +db_restore_erplibre_base_db_template: + ./script/db_restore.py --database template ######################### # Addons installation # @@ -121,72 +149,6 @@ addons_uninstall_code_generator_demo: .PHONY: addons_reinstall_code_generator_demo addons_reinstall_code_generator_demo: addons_uninstall_code_generator_demo addons_install_code_generator_demo -.PHONY: addons_install_code_generator_demo_website_snippet -addons_install_code_generator_demo_website_snippet: - ./install_addon.sh code_generator code_generator_demo_website_snippet_content - ./install_addon.sh code_generator code_generator_demo_website_snippet_effect - ./install_addon.sh code_generator code_generator_demo_website_snippet_feature - ./install_addon.sh code_generator code_generator_demo_website_snippet_structure - -.PHONY: addons_uninstall_code_generator_demo_website_snippet -addons_uninstall_code_generator_demo_website_snippet: - ./uninstall_addon.sh code_generator code_generator_demo_website_snippet_content - ./uninstall_addon.sh code_generator code_generator_demo_website_snippet_effect - ./uninstall_addon.sh code_generator code_generator_demo_website_snippet_feature - ./uninstall_addon.sh code_generator code_generator_demo_website_snippet_structure - -.PHONY: addons_reinstall_code_generator_demo_website_snippet -addons_reinstall_code_generator_demo_website_snippet: addons_uninstall_code_generator_demo_website_snippet addons_install_code_generator_demo_website_snippet - -.PHONY: addons_install_code_generator_template_demo_portal -addons_install_code_generator_template_demo_portal: - ./install_addon.sh code_generator code_generator_template_demo_portal - -.PHONY: addons_uninstall_code_generator_template_demo_portal -addons_uninstall_code_generator_template_demo_portal: - ./uninstall_addon.sh code_generator code_generator_template_demo_portal - -.PHONY: addons_reinstall_code_generator_template_demo_portal -addons_reinstall_code_generator_template_demo_portal: addons_uninstall_code_generator_template_demo_portal addons_install_code_generator_template_demo_portal - -.PHONY: addons_install_code_generator_demo_portal -addons_install_code_generator_demo_portal: - ./install_addon.sh code_generator code_generator_demo_portal - -.PHONY: addons_uninstall_code_generator_demo_portal -addons_uninstall_code_generator_demo_portal: - ./uninstall_addon.sh code_generator code_generator_demo_portal - ./uninstall_addon.sh code_generator code_generator_demo - -.PHONY: addons_reinstall_code_generator_demo_portal -addons_reinstall_code_generator_demo_portal: addons_uninstall_code_generator_demo_portal addons_install_code_generator_demo_portal - -.PHONY: addons_install_demo_portal_on_code_generator -addons_install_demo_portal_on_code_generator: - ./install_addon.sh code_generator demo_portal - -.PHONY: addons_uninstall_demo_portal_on_code_generator -addons_uninstall_demo_portal_on_code_generator: - ./uninstall_addon.sh code_generator demo_portal - -.PHONY: addons_reinstall_demo_portal_on_code_generator -addons_reinstall_demo_portal_on_code_generator: addons_uninstall_demo_portal_on_code_generator addons_install_demo_portal_on_code_generator - -.PHONY: addons_install_demo_portal_on_test -addons_install_demo_portal_on_test: - ./install_addon.sh test demo_portal - -.PHONY: addons_uninstall_demo_portal_on_test -addons_uninstall_demo_portal_on_test: - ./uninstall_addon.sh test demo_portal - -.PHONY: addons_reinstall_demo_portal_on_test -addons_reinstall_demo_portal_on_test: addons_uninstall_demo_portal_on_test addons_install_demo_portal_on_test - -.PHONY: addons_install_demo_website_snippet_on_test -addons_install_demo_website_snippet_on_test: - ./install_addon.sh test demo_website_snippet_content,demo_website_snippet_effect,demo_website_snippet_feature,demo_website_snippet_structure - .PHONY: addons_install_all_code_generator_demo addons_install_all_code_generator_demo: ./install_addon.sh code_generator code_generator_demo diff --git a/script/db_restore.py b/script/db_restore.py new file mode 100755 index 0000000..67e69ce --- /dev/null +++ b/script/db_restore.py @@ -0,0 +1,83 @@ +#!./.venv/bin/python +import os +import sys +import argparse +import logging +from subprocess import check_output + +new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), '..')) +sys.path.append(new_path) + +logging.basicConfig(level=os.environ.get("LOGLEVEL", "INFO")) + +_logger = logging.getLogger(__name__) + + +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='''\ + Restore database, use cache to clone to improve speed. +''', + epilog='''\ +''' + ) + # parser.add_argument('-d', '--dir', dest="dir", default="./", + # help="Path of repo to change remote, including submodule.") + parser.add_argument('--database', help="Database to manipulate.") + parser.add_argument('--image', default="erplibre_base", + help="Image name to restore, from directory image_db, filename without '.zip'. " + "Example, use erplibre_base to use image erplibre_base.zip.") + parser.add_argument('--clean_cache', action="store_true", help="Delete all database cache to clone, " + "begin by _cache_.") + args = parser.parse_args() + return args + + +def main(): + config = get_config() + + # Get list of database + arg = "./.venv/bin/python3 ./odoo/odoo-bin db --list" + out = check_output(arg.split(" ")).decode() + lst_db = out.strip().split("\n") + lst_db_cache = [a for a in lst_db if a.startswith("_cache_")] + + if config.clean_cache: + for db in lst_db_cache: + _logger.info(f"## Delete {db} ##") + arg = f"./.venv/bin/python3 ./odoo/odoo-bin db --drop --database {db}" + out = check_output(arg.split(" ")).decode() + print(out) + + if config.database: + cache_database = f"_cache_{config.image}" + # Drop db + if config.database in lst_db: + _logger.info(f"## Drop {config.database} ##") + arg = f"./.venv/bin/python3 ./odoo/odoo-bin db --drop --database {config.database}" + out = check_output(arg.split(" ")).decode() + print(out) + # Check cache exist + if cache_database not in lst_db_cache: + _logger.info(f"## Create cache {cache_database} from image {config.image} ##") + arg = f"./.venv/bin/python3 ./odoo/odoo-bin db --restore --restore_image {config.image} " \ + f"--database {cache_database}" + out = check_output(arg.split(" ")).decode() + print(out) + # Clone database + _logger.info(f"## Clone cache {cache_database} to database {config.database} ##") + arg = f"./.venv/bin/python3 ./odoo/odoo-bin db --clone --from_database {cache_database} " \ + f"--database {config.database}" + out = check_output(arg.split(" ")).decode() + print(out) + + +if __name__ == '__main__': + main()