diff --git a/.gitmodules b/.gitmodules index e69de29bb2d1d..46a3bc37bd98d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "prescrypto/campos_clientes_vittal"] + path = prescrypto/campos_clientes_vittal + url = https://github.com/Prescrypto/campos-clientes-vittal diff --git a/DEmo_Dockerfile_v13.txt b/DEmo_Dockerfile_v13.txt new file mode 100644 index 0000000000000..640e83975a1b2 --- /dev/null +++ b/DEmo_Dockerfile_v13.txt @@ -0,0 +1,87 @@ +FROM debian:buster-slim +MAINTAINER Odoo S.A. + +SHELL ["/bin/bash", "-xo", "pipefail", "-c"] + +# Generate locale C.UTF-8 for postgres and general locale data +ENV LANG C.UTF-8 + +# Install some deps, lessc and less-plugin-clean-css, and wkhtmltopdf +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + dirmngr \ + fonts-noto-cjk \ + gnupg \ + libssl-dev \ + node-less \ + npm \ + python3-num2words \ + python3-pip \ + python3-phonenumbers \ + python3-pyldap \ + python3-qrcode \ + python3-renderpm \ + python3-setuptools \ + python3-slugify \ + python3-vobject \ + python3-watchdog \ + python3-xlrd \ + python3-xlwt \ + xz-utils \ + && curl -o wkhtmltox.deb -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.buster_amd64.deb \ + && echo 'ea8277df4297afc507c61122f3c349af142f31e5 wkhtmltox.deb' | sha1sum -c - \ + && apt-get install -y --no-install-recommends ./wkhtmltox.deb \ + && rm -rf /var/lib/apt/lists/* wkhtmltox.deb + +# install latest postgresql-client +RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main' > /etc/apt/sources.list.d/pgdg.list \ + && GNUPGHOME="$(mktemp -d)" \ + && export GNUPGHOME \ + && repokey='B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8' \ + && gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "${repokey}" \ + && gpg --batch --armor --export "${repokey}" > /etc/apt/trusted.gpg.d/pgdg.gpg.asc \ + && gpgconf --kill all \ + && rm -rf "$GNUPGHOME" \ + && apt-get update \ + && apt-get install --no-install-recommends -y postgresql-client \ + && rm -f /etc/apt/sources.list.d/pgdg.list \ + && rm -rf /var/lib/apt/lists/* + +# Install rtlcss (on Debian buster) +RUN npm install -g rtlcss + +# Install Odoo +ENV ODOO_VERSION 13.0 +ARG ODOO_RELEASE=20220401 +ARG ODOO_SHA=2af3333f6048663e921ea49d7dc836d4dcf31cb4 +RUN curl -o odoo.deb -sSL http://nightly.odoo.com/${ODOO_VERSION}/nightly/deb/odoo_${ODOO_VERSION}.${ODOO_RELEASE}_all.deb \ + && echo "${ODOO_SHA} odoo.deb" | sha1sum -c - \ + && apt-get update \ + && apt-get -y install --no-install-recommends ./odoo.deb \ + && rm -rf /var/lib/apt/lists/* odoo.deb + +# Copy entrypoint script and Odoo configuration file +COPY ./entrypoint.sh / +COPY ./odoo.conf /etc/odoo/ + +# Set permissions and Mount /var/lib/odoo to allow restoring filestore and /mnt/extra-addons for users addons +RUN chown odoo /etc/odoo/odoo.conf \ + && mkdir -p /mnt/extra-addons \ + && chown -R odoo /mnt/extra-addons +VOLUME ["/var/lib/odoo", "/mnt/extra-addons"] + +# Expose Odoo services +EXPOSE 8069 8071 8072 + +# Set the default config file +ENV ODOO_RC /etc/odoo/odoo.conf + +COPY wait-for-psql.py /usr/local/bin/wait-for-psql.py + +# Set default user when running the container +USER odoo + +ENTRYPOINT ["/entrypoint.sh"] +CMD ["odoo"] \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 72d21088e1f23..259d97dfe3833 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,7 @@ -FROM debian:jessie +#FROM debian:jessie +#FROM scratch +#ADD ubuntu-bionic-oci-amd64-root.tar.gz / +FROM ubuntu:18.04 MAINTAINER Prescrypto # Install python build dependencies @@ -6,15 +9,18 @@ MAINTAINER Prescrypto RUN set -x; \ apt-get update \ && apt-get install -y --no-install-recommends \ + bash \ + openssh-server \ + iproute2 \ ca-certificates \ curl \ node-less \ python-gevent \ python-pip \ python-renderpm \ - python-support \ python-watchdog \ python-dev \ + python-setuptools \ libpq-dev \ build-essential \ libxml2-dev \ @@ -24,12 +30,26 @@ RUN set -x; \ libldap2-dev \ libjpeg-dev \ libz-dev \ - && curl -o wkhtmltox.deb -SL http://nightly.odoo.com/extra/wkhtmltox-0.12.1.2_linux-jessie-amd64.deb \ - && echo '40e8b906de658a2221b15e4e8cd82565a47d7ee8 wkhtmltox.deb' | sha1sum -c - \ - && dpkg --force-depends -i wkhtmltox.deb \ + wget \ + fontconfig \ + fontconfig-config \ + fonts-dejavu-core \ + libfontconfig1 \ + libfontenc1 \ + libjpeg-turbo8 \ + libxrender1 \ + x11-common \ + xfonts-75dpi \ + xfonts-base \ + xfonts-encodings \ + xfonts-utils \ + libxext6 \ + nano \ + && wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb \ + && dpkg -i wkhtmltox_0.12.6-1.bionic_amd64.deb \ + && apt --fix-broken install \ && apt-get -y install -f --no-install-recommends \ && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false -o APT::AutoRemove::SuggestsImportant=false npm \ - && rm -rf /var/lib/apt/lists/* wkhtmltox.deb \ && pip install psycogreen==1.0 # Add group @@ -46,6 +66,12 @@ COPY ./odoo.conf /etc/odoo/ COPY ./requirements.txt / RUN chown odoo /etc/odoo/odoo.conf +# Copy entrypoint script +COPY ./entrypoint.sh / +RUN chown odoo entrypoint.sh +COPY wait-for-psql.py /usr/local/bin/wait-for-psql.py +RUN chown odoo /usr/local/bin/wait-for-psql.py + # Add python dependencies RUN pip install -r requirements.txt # Mount /mnt/prescrypto-odoo for our fork and /mnt/custom-addons for Prescrypto addons RUN mkdir -p /mnt/prescrypto-odoo \ @@ -57,7 +83,11 @@ RUN mkdir -p /mnt/custom-addons \ RUN mkdir -p /mnt/extra-addons \ && chown -R odoo /mnt/extra-addons -VOLUME ["/var/lib/odoo", "/mnt/prescrypto-odoo", "/mnt/extra-addons", "/mnt/custom-addons"] +RUN mkdir /odoo \ + && chown -R odoo /odoo +#COPY . /odoo + +VOLUME ["/var/lib/odoo", "/mnt/prescrypto-odoo", "/mnt/extra-addons", "/mnt/custom-addons", "/odoo"] # Expose Odoo services EXPOSE 8069 8071 @@ -68,4 +98,12 @@ ENV ODOO_RC /etc/odoo/odoo.conf # Set default user when running the container USER odoo -ENTRYPOINT ["/bin/bash"] +ADD ./.profile.d /app/.profile.d +#RUN rm /bin/sh && ln -s /bin/bash /bin/sh +#RUN rm /bin/sh \ +# && ln -s /bin/bash /bin/sh + +#ENTRYPOINT ["/entrypoint.sh"] +#ENTRYPOINT ["/bin/sh"] +#CMD ["odoo"] + diff --git a/docker-compose.yml b/docker-compose.yml index d50e25a3541b2..2d74769be5b76 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,8 @@ services: - ./addons:/mnt/extra-addons - ./prescrypto:/mnt/custom-addons - ./output:/var/lib/odoo + - ./:/odoo + env_file: ./.env_variables db: image: postgres:9.4 environment: @@ -20,6 +22,8 @@ services: - POSTGRES_USER=odoo - POSTGRES_DB=postgres - PGDATA=/var/lib/postgresql/data/pgdata + ports: + - '5432:5432' volumes: - pgdata:/var/lib/postgresql/data/pgdata pgadmin: diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000000000..9d7cea479d601 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +set -e + +if [ -v PASSWORD_FILE ]; then + PASSWORD="$(< $PASSWORD_FILE)" +fi + +# set the postgres database host, port, user and password according to the environment +# and pass them as arguments to the odoo process if not present in the config file +: ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} +: ${DB_PORT:=${DB_PORT_5432_TCP_PORT:=5432}} +: ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} +: ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} +: ${DB_NAME:=${DB_ENV_DB_NAME:='postgres'}} +#: ${DB_SSLMODE:=${DB_ENV_DB_SSLMODE:='allow'}} + +DB_ARGS=() +function check_config() { + param="$1" + value="$2" + if grep -q -E "^\s*\b${param}\b\s*=" "$ODOO_RC" ; then + value=$(grep -E "^\s*\b${param}\b\s*=" "$ODOO_RC" |cut -d " " -f3|sed 's/["\n\r]//g') + fi; + DB_ARGS+=("--${param}") + DB_ARGS+=("${value}") +} +check_config "db_host" "$HOST" +check_config "db_port" "$DB_PORT" +check_config "db_user" "$USER" +check_config "db_password" "$PASSWORD" +check_config "database" "$DB_NAME" +#check_config "db_sslmode" "$DB_SSLMODE" + + +case "$1" in + -- | odoo) + shift + if [[ "$1" == "scaffold" ]] ; then + exec /odoo/oodoo-bin "$@" + else + wait-for-psql.py ${DB_ARGS[@]} --timeout=30 + #exec ./odoo/odoo-bin --database='$DB_ENV_DB_NAME' --db_user='$DB_ENV_POSTGRES_USER' --db_password='$DB_ENV_POSTGRES_PASSWORD' --db_host='$DB_PORT_5432_TCP_ADDR' --db_port='$DB_PORT_5432_TCP_ADDR' + #exec ./odoo/odoo-bin "$@" "${DB_ARGS[@]}" + exec /odoo/odoo-bin --database=${DB_ENV_DB_NAME} --db_user=${DB_ENV_POSTGRES_USER} --db_password=${DB_ENV_POSTGRES_PASSWORD} --db_host=${DB_PORT_5432_TCP_ADDR} --db_port=${DB_PORT_5432_TCP_PORT} --dev='all' + fi + ;; + -*) + wait-for-psql.py ${DB_ARGS[@]} --timeout=30 + exec /odoo/odoo-bin "$@" "${DB_ARGS[@]}" + ;; + *) + exec "$@" +esac + +exit 1 \ No newline at end of file diff --git a/entrypoint_test.sh b/entrypoint_test.sh new file mode 100755 index 0000000000000..fa22d6ad95f51 --- /dev/null +++ b/entrypoint_test.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +set -e + +if [ -v PASSWORD_FILE ]; then + PASSWORD="$(< $PASSWORD_FILE)" +fi + +# set the postgres database host, port, user and password according to the environment +# and pass them as arguments to the odoo process if not present in the config file +: ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} +: ${DB_PORT:=${DB_PORT_5432_TCP_PORT:=5432}} +: ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} +: ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} +: ${DB_NAME:=${DB_ENV_DB_NAME:='d6bt7m2idt805l'}} +#: ${DB_SSLMODE:=${DB_ENV_DB_SSLMODE:='allow'}} + +DB_ARGS=() +function check_config() { + param="$1" + value="$2" + if grep -q -E "^\s*\b${param}\b\s*=" "$ODOO_RC" ; then + value=$(grep -E "^\s*\b${param}\b\s*=" "$ODOO_RC" |cut -d " " -f3|sed 's/["\n\r]//g') + fi; + DB_ARGS+=("--${param}") + DB_ARGS+=("${value}") +} +check_config "db_host" "$HOST" +check_config "db_port" "$DB_PORT" +check_config "db_user" "$USER" +check_config "db_password" "$PASSWORD" +check_config "database" "$DB_NAME" +#check_config "db_sslmode" "$DB_SSLMODE" + +echo ${DB_ARGS[@]} + +case "$1" in + -- | odoo) + shift + if [[ "$1" == "scaffold" ]] ; then + exec ./odoo/oodoo-bin "$@" + echo "SCAFFOLD" + else + #wait-for-psql.py ${DB_ARGS[@]} --timeout=30 + #exec ./odoo/odoo-bin "$@" "${DB_ARGS[@]}" + exec /odoo/odoo-bin --database=${DB_ENV_DB_NAME} --db_user=${DB_ENV_POSTGRES_USER} --db_password=${DB_ENV_POSTGRES_PASSWORD} --db_host=${DB_PORT_5432_TCP_ADDR} --db_port=${DB_PORT_5432_TCP_PORT} --dev='all' + fi + ;; + -*) + wait-for-psql.py ${DB_ARGS[@]} --timeout=30 + exec /odoo/odoo-bin "$@" "${DB_ARGS[@]}" + ;; + *) + exec "$@" +esac + +exit 1 \ No newline at end of file diff --git a/full_cfdi_request.xml b/full_cfdi_request.xml new file mode 100644 index 0000000000000..ee6ba39d6b275 --- /dev/null +++ b/full_cfdi_request.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/odoo.conf b/odoo.conf index edb4bd2b230e0..bf43a4f1f5ebf 100644 --- a/odoo.conf +++ b/odoo.conf @@ -1,6 +1,10 @@ [options] -addons_path = /mnt/extra-addons,/mnt/custom-addons +addons_path = /mnt/extra-addons,/mnt/custom-addons,/mnt/prescrypto-odoo/prescrypto/campos_clientes_vittal data_dir = /var/lib/odoo +; db_sslmode = require +; db_name = d6bt7m2idt805l +; log_level = debug +; dbfilter = d6bt7m2idt805l ; admin_passwd = admin ; csv_internal_sep = , ; db_maxconn = 64 diff --git a/odoo/sql_db.py b/odoo/sql_db.py index 307ad8be3c944..63dd160d2f9cc 100644 --- a/odoo/sql_db.py +++ b/odoo/sql_db.py @@ -581,6 +581,7 @@ def borrow(self, connection_info): raise PoolError('The Connection Pool Is Full') try: + print("JMRM connection info: {}".format(connection_info)) result = psycopg2.connect( connection_factory=PsycoConnection, **connection_info) diff --git a/prescrypto/README.md b/prescrypto/README.md deleted file mode 100644 index 1fb6017ac397c..0000000000000 --- a/prescrypto/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# For Development Purposes - - -This file directory is necessary to put our custom mudules or third party modules to get a local enviroment working well! - -### The following list has the custom modules we have - -#### Custom Modules - -* campos-clientes-vittal -* vittal_odoo_modules - -#### Third Party - -* rest_api - diff --git a/prescrypto/campos_clientes_vittal b/prescrypto/campos_clientes_vittal index 15e3be6254cfa..54987a743cb56 160000 --- a/prescrypto/campos_clientes_vittal +++ b/prescrypto/campos_clientes_vittal @@ -1 +1 @@ -Subproject commit 15e3be6254cfa14416a9b21268d0fcf6371d707e +Subproject commit 54987a743cb56fbe5ed0df31342000bc4f7850ed diff --git a/request_2020_06_30.xml b/request_2020_06_30.xml new file mode 100644 index 0000000000000..530d9df0dcf66 --- /dev/null +++ b/request_2020_06_30.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/requirements.txt b/requirements.txt index 50ed0c308ab47..5c1b7b3641484 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +beautifulsoup4==4.9.3 Babel==2.3.4 decorator==4.0.10 docutils==0.12 @@ -16,7 +17,7 @@ passlib==1.6.5 Pillow==3.4.1 psutil==4.3.1 psycogreen==1.0 -psycopg2==2.7.1 +psycopg2==2.7.5 pydot==1.2.3 pyparsing==2.1.10 pyPdf==1.13 diff --git a/wait-for-psql.py b/wait-for-psql.py new file mode 100755 index 0000000000000..3c2272d626d4e --- /dev/null +++ b/wait-for-psql.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +from __future__ import print_function +import argparse +import psycopg2 +import sys +import time + + +if __name__ == '__main__': + arg_parser = argparse.ArgumentParser() + arg_parser.add_argument('--db_host', required=True) + arg_parser.add_argument('--db_port', required=True) + arg_parser.add_argument('--db_user', required=True) + arg_parser.add_argument('--db_password', required=True) + arg_parser.add_argument('--timeout', type=int, default=5) + arg_parser.add_argument('--database', required=True) + #arg_parser.add_argument('--db_sslmode', required=False) + + args = arg_parser.parse_args() + + start_time = time.time() + while (time.time() - start_time) < args.timeout: + try: + print("**************************************************************************") + print("Database try") + print("user: {} ".format(args.db_user)) + print("host: {}".format(args.db_host)) + print("port: {}".format(args.db_port)) + print("pwd: {}".format(args.db_password)) + print("database: {}".format(args.database)) + #print("sslmode: {}".format(args.db_sslmode)) + print("**************************************************************************") + conn = psycopg2.connect(user=args.db_user, host=args.db_host, port=args.db_port, password=args.db_password, dbname=args.database) + error = '' + print("CONNECTION SUCCESS!!!!") + break + except psycopg2.OperationalError as e: + error = e + else: + conn.close() + time.sleep(1) + + if error: + print("**************************************************************************") + print("Database connection failure: %s" % error, file=sys.stderr) + print("**************************************************************************") + sys.exit(1) \ No newline at end of file