From dbe43345c8838fdee7b855778728eff58bd8f647 Mon Sep 17 00:00:00 2001 From: Janik von Rotz Date: Mon, 12 May 2025 17:50:25 +0200 Subject: [PATCH] feat(odoo-mailgate): add support for custom mail thread model and thread id --- images/odoo-mailgate/README.md | 20 ++++++++++++-------- images/odoo-mailgate/entrypoint.sh | 14 +++++++++++++- images/odoo-mailgate/odoo-mailgate.py | 4 +++- images/odoo/bin/auto-envsubst | 7 +++++++ task | 3 +++ 5 files changed, 38 insertions(+), 10 deletions(-) diff --git a/images/odoo-mailgate/README.md b/images/odoo-mailgate/README.md index 3f4faca8..5f9d39ad 100644 --- a/images/odoo-mailgate/README.md +++ b/images/odoo-mailgate/README.md @@ -9,15 +9,17 @@ Source: > /etc/postfix/master.cf fi + +# Set optional parameters +if [ $MAIL_MODEL != "" ];then + MAIL_MODEL_PARAM=" -m $MAIL_MODEL" +fi + +if [ $MAIL_THREAD_ID != "" ];then + MAIL_THREAD_ID_PARAM=" -i $MAIL_THREAD_ID" +fi + # Setup aliases for MAIL_ALIAS in $MAIL_ALIASES; do - echo "$MAIL_ALIAS: \"|/usr/local/bin/odoo-mailgate.py -l ${ODOO_URL} -d ${ODOO_DATABASE} -u ${ODOO_USERNAME} -p ${ODOO_PASSWORD}\"" >> /etc/aliases + echo "$MAIL_ALIAS: \"|/usr/local/bin/odoo-mailgate.py -l ${ODOO_URL} -d ${ODOO_DATABASE} -u ${ODOO_USERNAME} -p ${ODOO_PASSWORD}${MAIL_MODEL_PARAM}${MAIL_THREAD_ID_PARAM}\"" >> /etc/aliases newaliases entrypoint-log "Forward alias $MAIL_ALIAS to Odoo database $ODOO_DATABASE at ${ODOO_HOST}:${ODOO_PORT}." done diff --git a/images/odoo-mailgate/odoo-mailgate.py b/images/odoo-mailgate/odoo-mailgate.py index 5f52197b..967cd101 100755 --- a/images/odoo-mailgate/odoo-mailgate.py +++ b/images/odoo-mailgate/odoo-mailgate.py @@ -11,6 +11,8 @@ def main(): op.add_option("-d", "--database", dest="database", help="Odoo database name (default: %default)", default='odoo') op.add_option("-u", "--username", dest="username", help="Odoo user id to connect with (default: %default)", default='admin') op.add_option("-p", "--password", dest="password", help="Odoo user password (default: %default)", default='admin') + op.add_option("-m", "--model", dest="model", help="Odoo mail thread model (default: %default)", default=False) + op.add_option("-i", "--thread-id", dest="thread_id", help="Odoo mail thread id (default: %default)", default=None) (o, args) = op.parse_args() try: @@ -18,7 +20,7 @@ def main(): common = xmlrpclib.ServerProxy(f"{o.url}/xmlrpc/2/common") uid = common.authenticate(o.database, o.username, o.password, {}) models = xmlrpclib.ServerProxy(f"{o.url}/xmlrpc/2/object", allow_none=True) - models.execute_kw(o.database, uid, o.password, "mail.thread", "message_process", [False, xmlrpclib.Binary(msg)], {}) + models.execute_kw(o.database, uid, o.password, "mail.thread", "message_process", [o.model, xmlrpclib.Binary(msg), None, False, False, o.thread_id], {}) except xmlrpclib.Fault as e: print(f"XML-RPC Fault: {e.faultCode} - {e.faultString}") sys.exit(1) diff --git a/images/odoo/bin/auto-envsubst b/images/odoo/bin/auto-envsubst index 542ef174..b6ef111d 100755 --- a/images/odoo/bin/auto-envsubst +++ b/images/odoo/bin/auto-envsubst @@ -11,6 +11,13 @@ export WORKERS=${WORKERS:=0} export LIMIT_REQUEST=${LIMIT_REQUEST:=8192} export LIMIT_TIME_CPU=${LIMIT_TIME_CPU:=60} export LIMIT_TIME_REAL=${LIMIT_TIME_REAL:=120} +export MODULE_AUTO_INSTALL_DISABLED=${MODULE_AUTO_INSTALL_DISABLED:=""} +export SMTP_SERVER=${SMTP_SERVER:=""} +export SMTP_PORT=${SMTP_PORT:=""} +export SMTP_SSL=${SMTP_SSL:=""} +export SMTP_USER=${SMTP_USER:=""} +export SMTP_PASSWORD=${SMTP_PASSWORD:=""} +export EMAIL_FROM=${EMAIL_FROM:=""} TEMPLATE_FILE="${ODOO_ENVSUBST_TEMPLATE_FILE:-/etc/odoo/odoo.conf.template}" OUTPUT_FILE="${ODOO_ENVSUBST_OUTPUT_FILE:-/etc/odoo/odoo.conf}" diff --git a/task b/task index dc55a882..0c09501b 100755 --- a/task +++ b/task @@ -569,6 +569,9 @@ function list-modules() { function template-compose() { echo "Template compose.yml" + + SMTP_SERVER="mailpit" + # Extract variables and export them # grep -oP '\$\{([^}]+)\}' compose.yml.template | sed 's/${\([^}]\+\)}/export \1/' export CONTAINER_REGISTRY