commit 453cae17248f45c45c66da65277dca5d9533c6a4 Author: Yann Autissier Date: Mon Mar 7 04:02:24 2022 +0100 Initial commit - odoo dockerfile - myos makefile - librezo odoo addon diff --git a/.env.dist b/.env.dist new file mode 100644 index 0000000..f3bf7d9 --- /dev/null +++ b/.env.dist @@ -0,0 +1,20 @@ +APP=odoo +APP_DOMAIN=${ENV}.${DOMAIN} +APP_HOST=${APP}.${APP_DOMAIN} +APP_PATH=${ENV_SUFFIX} +APP_SCHEME=http +APP_URI=${APP_HOST}/${APP_PATH} +APP_URL=${APP_SCHEME}://${APP_URI} +DOCKER=false +ENV=dist +ODOO14_ADDITIONAL_ODOO_RC=encryption_key=${APP_DOMAIN} +ODOO14_ADMIN_PASSWD=admin +ODOO14_DB_HOST=postgres +ODOO14_DB_NAME=odoo14 +ODOO14_DB_PASSWORD=odoo +ODOO14_DB_USER=odoo +ODOO14_ODOO_BASE_URL=${APP_URL} +ODOO14_ODOO_REPORT_URL=${APP_URL} +ODOO14_SERVER_WIDE_MODULES=web +ODOO14_SERVICE_8069_TAGS=urlprefix-${APP_URI} +ODOO14_SERVICE_8072_TAGS=urlprefix-${APP_URI}longpolling/ diff --git a/.env.local b/.env.local new file mode 100644 index 0000000..418da51 --- /dev/null +++ b/.env.local @@ -0,0 +1 @@ +ENV=local diff --git a/.env.prod b/.env.prod new file mode 100644 index 0000000..c2e9f17 --- /dev/null +++ b/.env.prod @@ -0,0 +1,9 @@ +APP_DOMAIN=${DOMAIN} +ENV=prod +MARABUNTA_ALLOW_SERIE=False +MARABUNTA_MODE=full +ODOO14_LOG_HANDLER=:WARN +ODOO14_LOG_LEVEL=warn +ODOO14_MAX_CRON_THREADS=2 +ODOO14_RUNNING_ENV=prod +ODOO14_WORKERS=16 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c49bd7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.env diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..72b789c --- /dev/null +++ b/Makefile @@ -0,0 +1,6 @@ +MYOS ?= ../myos + +$(MYOS): + git clone https://git.p2p.legal/aya/myos $(MYOS) + +-include $(MYOS)/make/include.mk diff --git a/docker/docker-compose.app.yml b/docker/docker-compose.app.yml new file mode 100644 index 0000000..1f8540b --- /dev/null +++ b/docker/docker-compose.app.yml @@ -0,0 +1,7 @@ +version: "3.6" + +services: + odoo14: + ports: + - 8169:8069 + - 8172:8072 diff --git a/docker/docker-compose.db.yml b/docker/docker-compose.db.yml new file mode 100644 index 0000000..3007f1b --- /dev/null +++ b/docker/docker-compose.db.yml @@ -0,0 +1,23 @@ +version: "3.6" + +services: + db: + environment: + - POSTGRES_USER=odoo + - POSTGRES_DB=odoo14 + image: quay.io/akretion/postgresql:10 + networks: + private: + volumes: + - db:/var/lib/postgresql/data + ports: + - 5432 + restart: always + +networks: + private: + external: true + name: ${DOCKER_NETWORK_PRIVATE} + +volumes: + db: diff --git a/docker/docker-compose.debug.yml b/docker/docker-compose.debug.yml new file mode 100644 index 0000000..cbab007 --- /dev/null +++ b/docker/docker-compose.debug.yml @@ -0,0 +1,6 @@ +version: "3.6" + +services: + odoo14: + ports: + - 9999:9999 diff --git a/docker/docker-compose.local.yml b/docker/docker-compose.local.yml new file mode 100644 index 0000000..74c1bbe --- /dev/null +++ b/docker/docker-compose.local.yml @@ -0,0 +1,14 @@ +version: "3.6" + +services: + odoo14: + environment: + ADDITIONAL_ODOO_RC: |- + encryption_key=local.localhost + [ir.config_parameter] + report.url=http://odoo.local.localhost + web.base.url=http://odoo.local.localhost + depends_on: + - kwkhtmltopdf + kwkhtmltopdf: + image: acsone/kwkhtmltopdf diff --git a/docker/docker-compose.mail.yml b/docker/docker-compose.mail.yml new file mode 100644 index 0000000..8af51c0 --- /dev/null +++ b/docker/docker-compose.mail.yml @@ -0,0 +1,16 @@ +version: "3.6" + +services: + mail: + image: sj26/mailcatcher:latest + networks: + - private + ports: + - 1025 + - 1080:1080 + restart: always + +networks: + private: + external: true + name: ${DOCKER_NETWORK_PRIVATE} diff --git a/docker/docker-compose.subrepo.yml b/docker/docker-compose.subrepo.yml new file mode 100644 index 0000000..c09410d --- /dev/null +++ b/docker/docker-compose.subrepo.yml @@ -0,0 +1,16 @@ +version: "3.6" + +networks: + public: + external: true + name: ${DOCKER_NETWORK_PUBLIC} + +services: + odoo14: + labels: + - SERVICE_8069_NAME=${COMPOSE_SERVICE_NAME}-odoo14-8069 + - SERVICE_8069_CHECK_TCP=true + - SERVICE_8069_CHECK_INITITAL_STATUS=passing + - SERVICE_8069_TAGS=${ODOO14_SERVICE_8069_TAGS} + networks: + public: diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..686f340 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,51 @@ +version: "3.6" + +networks: + private: + external: true + name: ${DOCKER_NETWORK_PRIVATE} + +services: + odoo14: + tty: true + stdin_open: true + build: + args: + - DOCKER_BUILD_DIR=docker/odoo14 + - TARGET=${DOCKER_BUILD_TARGET} + context: .. + dockerfile: docker/odoo14/Dockerfile + target: ${DOCKER_BUILD_TARGET} + environment: + - ADDITIONAL_ODOO_RC=${ODOO14_ADDITIONAL_ODOO_RC} + - ADDONS_PATH=${ODOO14_ADDONS_PATH:-\$ADDONS_PATH} + - ADMIN_PASSWD=${ODOO14_ADMIN_PASSWD} + - DB_HOST=${ODOO14_DB_HOST} + - DB_NAME=${ODOO14_DB_NAME} + - DB_PASSWORD=${ODOO14_DB_PASSWORD} + - DB_USER=${ODOO14_DB_USER} + - LOG_DB=${ODOO14_LOG_DB:-False} + - LOG_HANDLER=${ODOO14_LOG_HANDLER:-:INFO} + - LOG_LEVEL=${ODOO14_LOG_LEVEL:-info} + - MARABUNTA_ALLOW_SERIE=${ODOO14_MARABUNTA_ALLOW_SERIE:-True} + - MARABUNTA_FORCE_VERSION=${ODOO14_MARABUNTA_FORCE_VERSION} + - MARABUNTA_MODE=${ODOO14_MARABUNTA_MODE:-demo} + - MAX_CRON_THREADS=${ODOO14_MAX_CRON_THREADS} + - ODOO_BASE_URL=${ODOO14_ODOO_BASE_URL} + - ODOO_QUEUE_JOB_CHANNELS=${ODOO14_ODOO_QUEUE_JOB_CHANNELS} + - ODOO_REPORT_URL=${ODOO14_ODOO_REPORT_URL} + - RUNNING_ENV=${ODOO14_RUNNING_ENV:-dev} + - SERVER_WIDE_MODULES=${ODOO14_SERVER_WIDE_MODULES} + - WORKERS=${ODOO14_WORKERS:-0} + networks: + private: + ports: + - 8069 + - 8072 + volumes: + - odoo14:/data/odoo + - odoo14-cache:/odoo/.cache + +volumes: + odoo14: + odoo14-cache: diff --git a/docker/odoo14/Dockerfile b/docker/odoo14/Dockerfile new file mode 100644 index 0000000..beb61e7 --- /dev/null +++ b/docker/odoo14/Dockerfile @@ -0,0 +1,160 @@ +FROM python:3.8-alpine as dist +LABEL maintainer aynic.os + +ARG DOCKER_BUILD_DIR=. +ARG ODOO_REMOTE=https://github.com/odoo/odoo +ARG ODOO_VERSION=14.0 + +RUN apk add --no-cache --virtual .build-deps \ + g++ \ + git \ + jpeg-dev \ + libev-dev \ + libffi-dev \ + libpq-dev \ + libxml2-dev \ + libxslt-dev \ + make \ + musl-dev \ + openldap-dev \ + && ln -s /usr/lib/libldap.so /usr/lib/libldap_r.so \ + && /usr/local/bin/python3.8 -m venv /opt/odoo \ + && /opt/odoo/bin/pip3.8 install -U pip wheel \ + && wget -qO - ${ODOO_REMOTE}/archive/refs/heads/${ODOO_VERSION}.tar.gz |tar --strip-components 1 -C /opt/odoo -xzf - \ + && /opt/odoo/bin/pip3.8 install -r /opt/odoo/requirements.txt /opt/odoo \ + && rm -rf /root/.cache /opt/odoo/build/* /opt/odoo/odoo/* \ + && apk del --no-network .build-deps \ + && find /opt/odoo/lib -type f -executable \ + -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' \ + | tr ',' '\n' \ + | sort -u \ + | awk 'system("[ -e /lib/"$1" -o -e /usr/lib/"$1" -o -e /opt/odoo/lib/python3.8/site-packages/*/"$1" ]") == 0 { next } { print "so:" $1 }' \ + | xargs -rt apk add --no-cache + +RUN wget -qO /usr/local/bin/wkhtmltopdf https://raw.githubusercontent.com/acsone/kwkhtmltopdf/master/client/python/kwkhtmltopdf_client.py \ + && chmod +x /usr/local/bin/wkhtmltopdf + +RUN apk add --repository https://dl-cdn.alpinelinux.org/alpine/edge/testing \ + envsubst \ + gosu \ + && apk add --no-cache \ + bash \ + expect \ + postgresql-client + +COPY ${DOCKER_BUILD_DIR}/odoo.conf.tpl /opt/odoo/ +COPY ${DOCKER_BUILD_DIR}/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh +RUN chmod +x /usr/local/bin/docker-entrypoint.sh + +RUN mkdir -p /data/odoo +VOLUME ["/data/odoo"] + +ENV \ + ADDONS_PATH=/opt/odoo/lib/python3.8/site-packages/odoo/addons,/opt/odoo/addons \ + ADMIN_PASSWD=admin \ + AUTO_RELOAD=False \ + CSV_INTERNAL_SEP=, \ + DATA_DIR=/data/odoo \ + DB_HOST=db \ + DB_MAXCONN=64 \ + DB_NAME=odoo14 \ + DB_PASSWORD=odoo \ + DB_PORT=5432 \ + DB_SSLMODE=prefer \ + DB_TEMPLATE=template1 \ + DB_USER=odoo \ + DBFILTER=^.*$ \ + DEBUG_MODE=False \ + EMAIL_FROM=False \ + HTTP_PORT=8069 \ + HTTP_ENABLE=True \ + KWKHTMLTOPDF_SERVER_URL=http://kwkhtmltopdf \ + LANG=C.UTF-8 \ + LC_ALL=C.UTF-8 \ + LIMIT_MEMORY_HARD=2684354560 \ + LIMIT_MEMORY_SOFT=2147483648 \ + LIMIT_REQUEST=8192 \ + LIMIT_TIME_CPU=60 \ + LIMIT_TIME_REAL=120 \ + LIMIT_TIME_REAL_CRON=120 \ + LIST_DB=False \ + LOG_DB=False \ + LOG_HANDLER=:INFO \ + LOG_LEVEL=info \ + LOGFILE=/dev/stdout \ + LOGROTATE=False \ + LONGPOLLING_PORT=8072 \ + MAX_CRON_THREADS=2 \ + ODOO_RC=/opt/odoo/etc/odoo.conf \ + OSV_MEMORY_AGE_LIMIT=1.0 \ + OSV_MEMORY_COUNT_LIMIT=False \ + PATH=/opt/odoo/bin:$PATH \ + PROXY_MODE=True \ + RUNNING_ENV=dev \ + SERVER_WIDE_MODULES=web \ + SMTP_PASSWORD=False \ + SMTP_PORT=25 \ + SMTP_SERVER=False \ + SMTP_SSL=False \ + SMTP_USER=False \ + SYSLOG=False \ + UNACCENT=False \ + WITHOUT_DEMO=True \ + WORKERS=0 \ + XMLRPC=True \ + XMLRPC_PORT=8069 \ + XMLRPCS=True \ + XMLRPCS_PORT=8071 + +EXPOSE 8069 8071 8072 + +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] +CMD ["odoo"] + +FROM dist as master +ARG UID +ARG USER +ENV UID=${UID:-999} +ENV GID=${UID} +ENV USER=odoo + +# If we provide a specific UID +RUN let $UID >/dev/null 2>&1 \ +# Remove user with $UID if it is not our $USER + && if [ "$(getent passwd $UID |awk 'BEGIN {FS=":"} {print $1}')" != "$USER" ]; then \ + sed -i '/^'$(getent passwd $UID |awk 'BEGIN {FS=":"} {print $1}')':x:'$UID':/d' /etc/passwd; \ + sed -i '/^'$(getent group $GID |awk 'BEGIN {FS=":"} {print $1}')':x:'$GID':/d' /etc/group; \ + fi \ +# Force $UID if our $USER already exists + && sed -i 's/^'$USER':x:[0-9]\+:[0-9]\+:/'$USER':x:'$UID':'$GID':/' /etc/passwd \ + && sed -i 's/^'$USER':x:[0-9]\+:/'$USER':x:'$GID':/' /etc/group \ +# Create $USER if it does not exist + && if [ "$(getent passwd $UID)" = "" ]; then \ + echo "$USER:x:$UID:$GID::/home/$USER:/bin/false" >> /etc/passwd; \ + echo "$USER:!:$(($(date +%s) / 60 / 60 / 24)):0:99999:7:::" >> /etc/shadow; \ + echo "$USER:x:$GID:" >> /etc/group; \ + fi \ + && mkdir -p /home/$USER \ + && chown $UID:$GID /home/$USER \ + || true + +COPY librezo-addons/ /opt/odoo/librezo-addons/ +ENV ADDONS_PATH=${ADDONS_PATH},/opt/odoo/librezo-addons + +RUN apk add --no-cache --virtual .build-deps \ + g++ \ + git \ + libffi-dev \ + make \ + && /opt/odoo/bin/pip3.8 install -r /opt/odoo/librezo-addons/requirements.txt \ + && rm -rf /root/.cache \ + && apk del --no-network .build-deps \ + && find /opt/odoo/lib -type f -executable \ + -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' \ + | tr ',' '\n' \ + | sort -u \ + | awk 'system("[ -e /lib/"$1" -o -e /usr/lib/"$1" -o -e /opt/odoo/lib/python3.8/site-packages/*/"$1" ]") == 0 { next } { print "so:" $1 }' \ + | xargs -rt apk add --no-cache + +COPY entrypoint.d/ /opt/odoo/entrypoint.d/ +COPY migration.yml /opt/odoo/ diff --git a/docker/odoo14/docker-entrypoint.sh b/docker/odoo14/docker-entrypoint.sh new file mode 100644 index 0000000..fc135ba --- /dev/null +++ b/docker/odoo14/docker-entrypoint.sh @@ -0,0 +1,50 @@ +#!/bin/sh +set -eu + +mkdir -p /opt/odoo/etc +envsubst < /opt/odoo/odoo.conf.tpl > /opt/odoo/etc/odoo.conf + +export PGHOST=${DB_HOST} +export PGPORT=${DB_PORT:-5432} +export PGUSER=${DB_USER} +export PGPASSWORD=${DB_PASSWORD} +export PGDATABASE=${DB_NAME} + +mkdir -p /data/odoo/{addons,filestore,sessions} +if [ ! "$(stat -c '%U' /data/odoo)" = "odoo" ]; then + chown -R odoo: /data/odoo +fi + +BASE_CMD=$(basename $1) +if [ "$BASE_CMD" = "odoo" ] || [ "$BASE_CMD" = "odoo.py" ] || [ "$BASE_CMD" = "odoo-bin" ] || [ "$BASE_CMD" = "openerp-server" ] ; then + + # create db + if ! psql -lqtA -h $DB_HOST -U $DB_USER | grep -q "^$DB_NAME|"; then + createdb -h $DB_HOST -U $DB_USER -O $DB_USER $DB_NAME + fi + + # update db + MARABUNTA_DB_HOST=$DB_HOST \ + MARABUNTA_DATABASE=$DB_NAME \ + MARABUNTA_DB_USER=$DB_USER \ + MARABUNTA_DB_PASSWORD=$DB_PASSWORD \ + MARABUNTA_DB_PORT=$DB_PORT \ + unbuffer marabunta --migration-file /opt/odoo/migration.yml + + ENTRYPOINT_DIR=/opt/odoo/entrypoint.d + if [ -d "$ENTRYPOINT_DIR" ]; then + if [ -z "${NOGOSU:-}" ] ; then + gosu odoo run-parts --verbose "$ENTRYPOINT_DIR" + else + run-parts --verbose "$ENTRYPOINT_DIR" + fi + fi +fi + +if [ -z "${NOGOSU:-}" ] ; then + echo "Running $@ with UID $USER_ID" + exec gosu odoo "$@" +else + echo "Running $@" + exec "$@" +fi diff --git a/docker/odoo14/odoo.conf.tpl b/docker/odoo14/odoo.conf.tpl new file mode 100644 index 0000000..e191e47 --- /dev/null +++ b/docker/odoo14/odoo.conf.tpl @@ -0,0 +1,49 @@ +[options] +addons_path = ${ADDONS_PATH} +admin_passwd = ${ADMIN_PASSWD} +auto_reload = ${AUTO_RELOAD} +csv_internal_sep = ${CSV_INTERNAL_SEP} +data_dir = ${DATA_DIR} +db_host = ${DB_HOST} +db_maxconn = ${DB_MAXCONN} +db_name = ${DB_NAME} +db_password = ${DB_PASSWORD} +db_port = ${DB_PORT} +db_sslmode = ${DB_SSLMODE} +db_template = ${DB_TEMPLATE} +db_user = ${DB_USER} +dbfilter = ${DBFILTER} +debug_mode = ${DEBUG_MODE} +email_from = ${EMAIL_FROM} +http_port = ${HTTP_PORT} +http_enable = ${HTTP_ENABLE} +http_interface = ${HTTP_INTERFACE} +limit_memory_soft = ${LIMIT_MEMORY_SOFT} +limit_memory_hard = ${LIMIT_MEMORY_HARD} +limit_request = ${LIMIT_REQUEST} +limit_time_cpu = ${LIMIT_TIME_CPU} +limit_time_real = ${LIMIT_TIME_REAL} +limit_time_real_cron = ${LIMIT_TIME_REAL_CRON} +list_db = ${LIST_DB} +log_db = ${LOG_DB} +log_handler = ${LOG_HANDLER} +log_level = ${LOG_LEVEL} +logfile = ${LOGFILE} +logrotate = ${LOGROTATE} +longpolling_port = ${LONGPOLLING_PORT} +max_cron_threads = ${MAX_CRON_THREADS} +osv_memory_age_limit = ${OSV_MEMORY_AGE_LIMIT} +osv_memory_count_limit = ${OSV_MEMORY_COUNT_LIMIT} +proxy_mode = ${PROXY_MODE} +running_env = ${RUNNING_ENV} +server_wide_modules = ${SERVER_WIDE_MODULES} +smtp_password = ${SMTP_PASSWORD} +smtp_port = ${SMTP_PORT} +smtp_server = ${SMTP_SERVER} +smtp_ssl = ${SMTP_SSL} +smtp_user = ${SMTP_USER} +syslog = ${SYSLOG} +unaccent = ${UNACCENT} +without_demo = ${WITHOUT_DEMO} +workers = ${WORKERS} +${ADDITIONAL_ODOO_RC} diff --git a/entrypoint.d/000_set_base_url b/entrypoint.d/000_set_base_url new file mode 100755 index 0000000..e220d05 --- /dev/null +++ b/entrypoint.d/000_set_base_url @@ -0,0 +1,38 @@ +#!/bin/sh +# link: https://github.com/camptocamp/docker-odoo-project + +if [ -n "${ODOO_BASE_URL}" ]; then + + if [ "$( psql -tAc "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'" )" != '1' ] + then + echo "Database does not exist, ignoring script" + exit 0 + fi + + echo "Setting Base URL to domain ${ODOO_BASE_URL}" + psql --quiet << EOF + + WITH update_param AS ( + UPDATE ir_config_parameter + SET value = '${ODOO_BASE_URL}' + WHERE key = 'web.base.url' + RETURNING * + ) + INSERT INTO ir_config_parameter + (value, key, create_uid, write_uid, create_date, write_date) + SELECT '${ODOO_BASE_URL}', 'web.base.url', 1, 1, now(), now() + WHERE NOT EXISTS (SELECT * FROM update_param); + + WITH update_param AS ( + UPDATE ir_config_parameter + SET value = 'True' + WHERE key = 'web.base.url.freeze' + RETURNING * + ) + INSERT INTO ir_config_parameter + (value, key, create_uid, write_uid, create_date, write_date) + SELECT 'True', 'web.base.url.freeze', 1, 1, now(), now() + WHERE NOT EXISTS (SELECT * FROM update_param); + +EOF +fi diff --git a/entrypoint.d/001_set_report_url b/entrypoint.d/001_set_report_url new file mode 100755 index 0000000..dcf903f --- /dev/null +++ b/entrypoint.d/001_set_report_url @@ -0,0 +1,27 @@ +#!/bin/sh +# link: https://github.com/camptocamp/docker-odoo-project + +if [ -n "${ODOO_REPORT_URL}" ]; then + + if [ "$( psql -tAc "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'" )" != '1' ] + then + echo "Database does not exist, ignoring script" + exit 0 + fi + + echo "Setting Report URL to domain ${ODOO_REPORT_URL}" + psql --quiet << EOF + + WITH update_param AS ( + UPDATE ir_config_parameter + SET value = '${ODOO_REPORT_URL}' + WHERE key = 'report.url' + RETURNING * + ) + INSERT INTO ir_config_parameter + (value, key, create_uid, write_uid, create_date, write_date) + SELECT '${ODOO_REPORT_URL}', 'report.url', 1, 1, now(), now() + WHERE NOT EXISTS (SELECT * FROM update_param); + +EOF +fi diff --git a/librezo-addons/base_librezo/__init__.py b/librezo-addons/base_librezo/__init__.py new file mode 100644 index 0000000..11a6af8 --- /dev/null +++ b/librezo-addons/base_librezo/__init__.py @@ -0,0 +1,2 @@ +# from . import models +# from . import tests diff --git a/librezo-addons/base_librezo/__manifest__.py b/librezo-addons/base_librezo/__manifest__.py new file mode 100644 index 0000000..931a12b --- /dev/null +++ b/librezo-addons/base_librezo/__manifest__.py @@ -0,0 +1,23 @@ +{ + "name": "Librezo", + "summary": "Librezo base settings", + "author": "aya", + "license": "AGPL-3", + "website": "http://www.librezo.com", + "category": "hidden", + "version": "14.0.1.0.0", + "depends": [ + "base", + "l10n_fr", + "account_financial_report", + "contacts", + "products", + "sale", + "server_environment_ir_config_parameter", + "server_environment_data_encryption", + "pattern_import_export_xlsx", + "pattern_import_export_csv", + ], + "data": [], + "demo": [], +} diff --git a/librezo-addons/requirements.txt b/librezo-addons/requirements.txt new file mode 100644 index 0000000..8ea4e3a --- /dev/null +++ b/librezo-addons/requirements.txt @@ -0,0 +1,22 @@ +--find-links https://wheelhouse.acsone.eu/manylinux1 +--extra-index https://wheelhouse.acsone.eu/shopinvader-simple +--extra-index-url https://wheelhouse.odoo-community.org/oca-simple +click-odoo==1.4.3 +click-odoo-contrib==1.12.0 +marabunta==0.10.6 +odoo14-addon-auth-api-key==14.0.1.0.1.dev4 +odoo14-addon-base-exception==14.0.1.0.1.dev2 +odoo14-addon-base-export-manager @ git+https://github.com/OCA/server-ux@73502f8c86fcda8e28e8dabe2711347cececda9e#subdirectory=setup/base_export_manager +odoo14-addon-base-jsonify==14.0.1.1.0 +odoo14-addon-component==14.0.1.0.2 +odoo14-addon-data-encryption @ git+https://github.com/OCA/server-env@5815237d403bb7d7527fd6f8b6b6c4a08a4acbeb#subdirectory=setup/data_encryption +odoo14-addon-onchange-helper==14.0.1.0.1.dev2 +odoo14-addon-partner-address-version @ git+https://github.com/oca/partner-contact.git@dff3343f930a4b7451db305611e6a060f2aa37cc#subdirectory=setup/partner_address_version +odoo14-addon-pattern-import-export @ git+https://github.com/shopinvader/pattern-import-export.git@efc838258c8a750eb6542d4081dd4cbf939c41b1#subdirectory=setup/pattern_import_export +odoo14-addon-pattern-import-export-csv @ git+https://github.com/shopinvader/pattern-import-export.git@efc838258c8a750eb6542d4081dd4cbf939c41b1#subdirectory=setup/pattern_import_export_csv +odoo14-addon-pattern-import-export-xlsx @ git+https://github.com/shopinvader/pattern-import-export.git@efc838258c8a750eb6542d4081dd4cbf939c41b1#subdirectory=setup/pattern_import_export_xlsx +odoo14-addon-queue-job==14.0.1.0.2 +odoo14-addon-server-environment==14.0.1.0.1.dev5 +odoo14-addon-server-environment-data-encryption @ git+https://github.com/OCA/server-env@5815237d403bb7d7527fd6f8b6b6c4a08a4acbeb#subdirectory=setup/server_environment_data_encryption +odoo14-addon-server-environment-ir-config-parameter==14.0.1.0.1.dev2 +odoo14-addon-web-notify @ git+https://github.com/OCA/web@21b8349413916fb7be4b78d97b67a7bf65f9a18d#subdirectory=setup/web_notify diff --git a/migration.yml b/migration.yml new file mode 100644 index 0000000..1fafdda --- /dev/null +++ b/migration.yml @@ -0,0 +1,8 @@ +migration: + options: + install_command: odoo --without-demo=${WITHOUT_DEMO:-True} -d odoo14 -i web,base_librezo --stop-after-init + versions: + - version: setup + operations: + pre: + - 'sh -c ''psql -c "CREATE EXTENSION pg_trgm;"'''