Enable bash strict mode in all shell scripts to catch errors early: - set -e: Exit immediately if a command exits with non-zero status - set -u: Treat unset variables as an error - set -o pipefail: Return value of a pipeline is the status of the last command to exit with non-zero status This prevents silent failures and makes debugging easier by failing fast when something goes wrong instead of continuing with potentially corrupted state.
53 lines
1.6 KiB
Bash
Executable File
53 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
DB_NAME="$1"
|
|
ODOO_SERVICE="$2"
|
|
|
|
FINALE_SQL=$(cat <<'EOF'
|
|
/*Delete sequences that prevent Odoo to start*/
|
|
drop sequence base_registry_signaling;
|
|
drop sequence base_cache_signaling;
|
|
EOF
|
|
)
|
|
query_postgres_container "$FINALE_SQL" "$DB_NAME" || exit 1
|
|
|
|
# Fix duplicated views
|
|
PYTHON_SCRIPT=post_migration_fix_duplicated_views.py
|
|
echo "Remove duplicated views with script $PYTHON_SCRIPT ..."
|
|
exec_python_script_in_odoo_shell "$DB_NAME" "$DB_NAME" "$PYTHON_SCRIPT" || exit 1
|
|
|
|
# Reset all website templates with custom content
|
|
FINALE_SQL_2=$(cat <<'EOF'
|
|
UPDATE ir_ui_view
|
|
SET arch_db = NULL
|
|
WHERE arch_fs IS NOT NULL
|
|
AND arch_fs LIKE 'website/%'
|
|
AND arch_db IS NOT NULL
|
|
AND id NOT IN (SELECT view_id FROM website_page);
|
|
EOF
|
|
)
|
|
query_postgres_container "$FINALE_SQL_2" "$DB_NAME" || exit 1
|
|
|
|
# Purge QWeb cache from compiled assets
|
|
FINALE_SQL_3=$(cat <<'EOF'
|
|
DELETE FROM ir_attachment
|
|
WHERE name LIKE '/web/assets/%'
|
|
OR name LIKE '%.assets_%'
|
|
OR (res_model = 'ir.ui.view' AND mimetype = 'text/css');
|
|
EOF
|
|
)
|
|
query_postgres_container "$FINALE_SQL_3" "$DB_NAME" || exit 1
|
|
|
|
# Uninstall obsolette add-ons
|
|
PYTHON_SCRIPT=post_migration_cleanup_obsolete_modules.py
|
|
echo "Uninstall obsolete add-ons with script $PYTHON_SCRIPT ..."
|
|
exec_python_script_in_odoo_shell "$DB_NAME" "$DB_NAME" "$PYTHON_SCRIPT" || exit 1
|
|
|
|
# Give back the right to user to access to the tables
|
|
# docker exec -u 70 "$DB_CONTAINER_NAME" pgm chown "$FINALE_SERVICE_NAME" "$DB_NAME"
|
|
|
|
|
|
# Launch Odoo with database in finale version to run all updates
|
|
compose --debug run "$ODOO_SERVICE" -u all --log-level=debug --stop-after-init --no-http
|