Compare commits

..

No commits in common. "master" and "layers-refactor" have entirely different histories.

67 changed files with 1237 additions and 895 deletions

View File

@ -2,6 +2,9 @@ version: '2.2'
services:
rsyncvolumes:
build: ./rsyncvolumes
image: registry.yaltik.net/rsyncvolumes:base
rsyncvolumesc7:
build:
context: ./rsyncvolumes

View File

@ -3,10 +3,7 @@ LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
ENV SOURCE="/var/lib/docker/volumes" DEST="/var/backups/"
RUN yum -y install gettext rsync ssh cronie && \
yum -y install oracle-epel-release-el7 && \
yum -y install sshpass && \
yum clean all
RUN yum -y install gettext rsync ssh sshpass cronie && yum clean all
# Avoid overlayfs bug with tail
VOLUME /var/log

View File

@ -2,7 +2,8 @@ FROM caddy:2-builder AS builder
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
RUN xcaddy build \
--with github.com/caddyserver/transform-encoder
--with github.com/caddyserver/format-encoder \
--with github.com/caddy-dns/lego-deprecated
FROM caddy:2
COPY --from=builder /usr/bin/caddy /usr/bin/caddy

View File

@ -12,20 +12,8 @@
}
}
(dev) {
auto_https off
}
(odoo) {
reverse_proxy {args.0}:8069
reverse_proxy /longpolling/* {args.0}:8072
encode zstd gzip
}
(odoo16) {
reverse_proxy {args.0}:8069
handle_path /websocket {
reverse_proxy {args.0}:8072
}
encode zstd gzip
}

View File

@ -1,5 +1,5 @@
# daily odoo backup
# m h dom mon dow user command
0 2 * * * /bin/su - odoo -c "/bin/bash /home/odoo/backup.sh" >> /var/log/cron.log 2>&1
30 2 * * * /bin/su - odoo -c "/usr/bin/python /home/odoo/plan.py" >> /var/log/cron.log 2>&1
10 2 * * * /bin/su - odoo -c "/usr/bin/python /home/odoo/plan.py" >> /var/log/cron.log 2>&1
# empty line required at the end of this file for a valid cron file.

View File

@ -1,8 +1,5 @@
#!/bin/bash
# Needed for cron and OBPLAN usage
printenv >> /etc/environment
set -f
echo '#!/bin/bash' > /home/odoo/backup.sh
index=0

View File

@ -12,12 +12,9 @@ Keep :
"""
from datetime import datetime
from os import unlink, environ
from os import unlink
from glob import glob
OBPLAN = environ.get('OBPLAN', u'365,31,7')
OBPLAN = map(int, OBPLAN.split(u','))
DT = datetime.now()
def notkeep(fname):
@ -29,12 +26,12 @@ def notkeep(fname):
save_date = fname[0]
save_date = datetime.strptime(save_date, '%Y-%m-%d')
delta = DT - save_date
if delta.days > OBPLAN[0]:
if delta.days > 365:
return True
elif delta.days > OBPLAN[1]:
elif delta.days > 31:
if save_date.day != 1:
return True
elif delta.days > OBPLAN[2]:
elif delta.days > 7:
if (save_date.weekday() != 0) and (save_date.day != 1):
return True
else:

View File

@ -37,13 +37,6 @@ services:
dockerfile: Dockerfile.10.centos7
image: registry.yaltik.net/odoo:yaltikbase10c7
odoobase10c8:
init: true
build:
context: ./odoo
dockerfile: Dockerfile.10.centos8
image: registry.yaltik.net/odoo:yaltikbase10c8
odoo10c7:
init: true
build:
@ -51,54 +44,26 @@ services:
dockerfile: Dockerfile.ext.10.centos7
image: registry.yaltik.net/odoo:yaltik10c7
odoo10c8:
odoo11:
init: true
build:
context: ./odoo
dockerfile: Dockerfile.ext.10.centos8
image: registry.yaltik.net/odoo:yaltik10c8
dockerfile: Dockerfile.11
image: registry.yaltik.net/odoo:yaltik11
# odoo11:
# init: true
# build:
# context: ./odoo
# dockerfile: Dockerfile.11
# image: registry.yaltik.net/odoo:yaltik11
# odoobase12:
# init: true
# build:
# context: ./odoo
# dockerfile: Dockerfile.12
# image: registry.yaltik.net/odoo:yaltikbase12
odoobase12ol8:
odoobase12:
init: true
build:
context: ./odoo
dockerfile: Dockerfile.12.ol8
image: registry.yaltik.net/odoo:yaltikbase12ol8
dockerfile: Dockerfile.12
image: registry.yaltik.net/odoo:yaltikbase12
# odoo12:
# init: true
# build:
# context: ./odoo
# dockerfile: Dockerfile.ext.12
# image: registry.yaltik.net/odoo:yaltik12
odoo12ol8:
odoo12:
init: true
build:
context: ./odoo
dockerfile: Dockerfile.ext.12.ol8
image: registry.yaltik.net/odoo:yaltik12ol8
odoobase13:
init: true
build:
context: ./odoo
dockerfile: Dockerfile.13
image: registry.yaltik.net/odoo:yaltikbase13
dockerfile: Dockerfile.ext.12
image: registry.yaltik.net/odoo:yaltik12
odoobase14:
init: true
@ -107,13 +72,6 @@ services:
dockerfile: Dockerfile.14
image: registry.yaltik.net/odoo:yaltikbase14
odoobase14ol8:
init: true
build:
context: ./odoo
dockerfile: Dockerfile.14.ol8
image: registry.yaltik.net/odoo:yaltikbase14ol8
odoo14:
init: true
build:
@ -121,13 +79,6 @@ services:
dockerfile: Dockerfile.ext.14
image: registry.yaltik.net/odoo:yaltik14
odoo14ol8:
init: true
build:
context: ./odoo
dockerfile: Dockerfile.ext.14.ol8
image: registry.yaltik.net/odoo:yaltik14ol8
odoobase15:
init: true
build:
@ -142,33 +93,24 @@ services:
dockerfile: Dockerfile.ext.15
image: registry.yaltik.net/odoo:yaltik15
odoobase16:
flectra:
init: true
build:
context: ./odoo
dockerfile: Dockerfile.16
image: registry.yaltik.net/odoo:yaltikbase16
context: ./flectra
dockerfile: Dockerfile
image: registry.yaltik.net/flectra:yaltik1pg96
odoo16:
flectrapg10:
init: true
build:
context: ./odoo
dockerfile: Dockerfile.ext.16
image: registry.yaltik.net/odoo:yaltik16
context: ./flectra
dockerfile: Dockerfile.pg10
image: registry.yaltik.net/flectra:yaltik1pg10
# flectra:
# init: true
# build:
# context: ./flectra
# dockerfile: Dockerfile
# image: registry.yaltik.net/flectra:yaltik1pg96
# flectrapg10:
# init: true
# build:
# context: ./flectra
# dockerfile: Dockerfile.pg10
# image: registry.yaltik.net/flectra:yaltik1pg10
odoocmd:
build:
context: ./scripts
image: registry.yaltik.net/odoocmd:yaltik
odoocmdc7:
build:
@ -176,6 +118,11 @@ services:
dockerfile: Dockerfile.c7
image: registry.yaltik.net/odoocmd:yaltikc7
odoobackup:
build:
context: ./backups
image: registry.yaltik.net/odoobackup:yaltik
odoobackupc7:
build:
context: ./backups

View File

@ -2,5 +2,4 @@ import /caddycommon
{$ODOO_SERVER_NAMES} {
import odoo {$ODOO_SERVICE}
tls internal
}

View File

@ -1,6 +0,0 @@
import /caddycommon
{$ODOO_SERVER_NAMES} {
import odoo16 {$ODOO_SERVICE}
tls internal
}

View File

@ -1,8 +0,0 @@
FROM registry.yaltik.net/caddy:yaltik
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Default variables
ENV ODOO_SERVICE="odoo" ODOO_SERVER_NAMES="odoo"
# Configuration
COPY Caddyfile.16 /etc/caddy/Caddyfile

View File

@ -13,12 +13,6 @@ services:
dockerfile: Dockerfile.dev
image: registry.yaltik.net/caddy:odoodev
caddy16:
build:
context: ./caddy
dockerfile: Dockerfile.16.dev
image: registry.yaltik.net/caddy:odoodev16
odoo8c7dev:
build:
context: ./odoo
@ -31,23 +25,11 @@ services:
dockerfile: Dockerfile.10.centos7.dev
image: registry.yaltik.net/odoodev:yaltik10c7
odoodev10c8:
odoodev12:
build:
context: ./odoo
dockerfile: Dockerfile.10.centos8.dev
image: registry.yaltik.net/odoodev:yaltik10c8
# odoodev12:
# build:
# context: ./odoo
# dockerfile: Dockerfile.12.dev
# image: registry.yaltik.net/odoodev:yaltik12
odoodev12ol8:
build:
context: ./odoo
dockerfile: Dockerfile.12.ol8.dev
image: registry.yaltik.net/odoodev:yaltik12ol8
dockerfile: Dockerfile.12.dev
image: registry.yaltik.net/odoodev:yaltik12
odoodev14:
build:
@ -55,32 +37,20 @@ services:
dockerfile: Dockerfile.14.dev
image: registry.yaltik.net/odoodev:yaltik14
odoodev14ol8:
build:
context: ./odoo
dockerfile: Dockerfile.14.ol8.dev
image: registry.yaltik.net/odoodev:yaltik14ol8
odoodev15:
build:
context: ./odoo
dockerfile: Dockerfile.15.dev
image: registry.yaltik.net/odoodev:yaltik15
odoodev16:
flectradev:
build:
context: ./odoo
dockerfile: Dockerfile.16.dev
image: registry.yaltik.net/odoodev:yaltik16
context: ./flectra
dockerfile: Dockerfile.dev
image: registry.yaltik.net/flectradev:yaltik1pg96
# flectradev:
# build:
# context: ./flectra
# dockerfile: Dockerfile.dev
# image: registry.yaltik.net/flectradev:yaltik1pg96
# flectradevpg10:
# build:
# context: ./flectra
# dockerfile: Dockerfile.dev.pg10
# image: registry.yaltik.net/flectradev:yaltik1pg10
flectradevpg10:
build:
context: ./flectra
dockerfile: Dockerfile.dev.pg10
image: registry.yaltik.net/flectradev:yaltik1pg10

View File

@ -1,4 +1,4 @@
#!/bin/bash
cd "custom-addons/$CODE_FOLDER/$1/i18n/" && /opt/flectra/flectra/flectra-bin -c /opt/flectra/flectra.conf -d "$2" --i18n-export="$1".po --modules="$1" && mv "$1".po "$1".pot && cd /opt/flectra
cd "custom-addons/$CODE_FOLDER/$1/i18n/" && /opt/flectra/flectra/flectra-bin -c /opt/flectra/flectra.conf -d "$2" --i18n-export=fr.po --modules="$1" --language=fr_FR && cd /opt/flectra
cd "custom-addons/$CODE_FOLDER/$2/i18n/" && /opt/flectra/flectra/flectra-bin -c /opt/flectra/flectra.conf -d "$1" --i18n-export="$2".po --modules="$2" && mv "$2".po "$2".pot && cd /opt/flectra
cd "custom-addons/$CODE_FOLDER/$2/i18n/" && /opt/flectra/flectra/flectra-bin -c /opt/flectra/flectra.conf -d "$1" --i18n-export=fr.po --modules="$2" --language=fr_FR && cd /opt/flectra

View File

@ -2,7 +2,7 @@ FROM registry.yaltik.net/odoo:yaltik8c7
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Extra dependency
RUN pip install --user --no-cache-dir --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org unidecode==1.2.0
RUN pip install --user --no-cache-dir unidecode==1.2.0
# External dependencies
WORKDIR /opt/odoo/extra-addons

View File

@ -2,7 +2,7 @@ FROM registry.yaltik.net/odoodev:yaltik8c7
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Extra dependency
RUN pip install --user --no-cache-dir --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org unidecode==1.2.0
RUN pip install --user --no-cache-dir unidecode==1.2.0
# External dependencies
WORKDIR /opt/odoo/extra-addons

View File

@ -1,4 +1,4 @@
FROM registry.yaltik.net/odoo:yaltik10c8
FROM registry.yaltik.net/odoo:yaltik10c7
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Extra addons

View File

@ -1,4 +1,4 @@
FROM registry.yaltik.net/odoo:yaltik10c8
FROM registry.yaltik.net/odoo:yaltik10c7
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Extra addons

View File

@ -1,4 +1,4 @@
#!/bin/bash
cd "custom-addons/$CODE_FOLDER/$1/i18n/" && /opt/odoo/OCB/odoo-bin -c /opt/odoo/odoo.conf -d "$2" --i18n-export="$1".po --modules="$1" && mv "$1".po "$1".pot && cd /opt/odoo
cd "custom-addons/$CODE_FOLDER/$1/i18n/" && /opt/odoo/OCB/odoo-bin -c /opt/odoo/odoo.conf -d "$2" --i18n-export=fr.po --modules="$1" --language=fr_FR && cd /opt/odoo
cd "custom-addons/$CODE_FOLDER/$2/i18n/" && /opt/odoo/OCB/odoo-bin -c /opt/odoo/odoo.conf -d "$1" --i18n-export="$2".po --modules="$2" && mv "$2".po "$2".pot && cd /opt/odoo
cd "custom-addons/$CODE_FOLDER/$2/i18n/" && /opt/odoo/OCB/odoo-bin -c /opt/odoo/odoo.conf -d "$1" --i18n-export=fr.po --modules="$2" --language=fr_FR && cd /opt/odoo

View File

@ -1,8 +1,580 @@
# Configuration file for ipython.
#------------------------------------------------------------------------------
# InteractiveShellApp(Configurable) configuration
#------------------------------------------------------------------------------
## A Mixin for applications that start InteractiveShell instances.
#
# Provides configurables for loading extensions and executing files as part of
# configuring a Shell environment.
#
# The following methods should be called by the :meth:`initialize` method of the
# subclass:
#
# - :meth:`init_path`
# - :meth:`init_shell` (to be implemented by the subclass)
# - :meth:`init_gui_pylab`
# - :meth:`init_extensions`
# - :meth:`init_code`
## Execute the given command string.
#c.InteractiveShellApp.code_to_run = ''
## Run the file referenced by the PYTHONSTARTUP environment variable at IPython
# startup.
#c.InteractiveShellApp.exec_PYTHONSTARTUP = True
## List of files to run at IPython startup.
#c.InteractiveShellApp.exec_files = []
## lines of code to run at IPython startup.
#c.InteractiveShellApp.exec_lines = []
## A list of dotted module names of IPython extensions to load.
#c.InteractiveShellApp.extensions = []
## dotted module name of an IPython extension to load.
#c.InteractiveShellApp.extra_extension = ''
## A file to be run
#c.InteractiveShellApp.file_to_run = ''
## Enable GUI event loop integration with any of ('glut', 'gtk', 'gtk2', 'gtk3',
# 'osx', 'pyglet', 'qt', 'qt4', 'qt5', 'tk', 'wx', 'gtk2', 'qt4').
#c.InteractiveShellApp.gui = None
## Should variables loaded at startup (by startup files, exec_lines, etc.) be
# hidden from tools like %who?
#c.InteractiveShellApp.hide_initial_ns = True
## Configure matplotlib for interactive use with the default matplotlib backend.
#c.InteractiveShellApp.matplotlib = None
## Run the module as a script.
#c.InteractiveShellApp.module_to_run = ''
## Pre-load matplotlib and numpy for interactive use, selecting a particular
# matplotlib backend and loop integration.
#c.InteractiveShellApp.pylab = None
## If true, IPython will populate the user namespace with numpy, pylab, etc. and
# an ``import *`` is done from numpy and pylab, when using pylab mode.
#
# When False, pylab mode should not import any names into the user namespace.
#c.InteractiveShellApp.pylab_import_all = True
## Reraise exceptions encountered loading IPython extensions?
#c.InteractiveShellApp.reraise_ipython_extension_failures = False
#------------------------------------------------------------------------------
# Application(SingletonConfigurable) configuration
#------------------------------------------------------------------------------
## This is an application.
## The date format used by logging formatters for %(asctime)s
#c.Application.log_datefmt = '%Y-%m-%d %H:%M:%S'
## The Logging format template
#c.Application.log_format = '[%(name)s]%(highlevel)s %(message)s'
## Set the log level by value or name.
#c.Application.log_level = 30
#------------------------------------------------------------------------------
# BaseIPythonApplication(Application) configuration
#------------------------------------------------------------------------------
## IPython: an enhanced interactive Python shell.
## Whether to create profile dir if it doesn't exist
#c.BaseIPythonApplication.auto_create = False
## Whether to install the default config files into the profile dir. If a new
# profile is being created, and IPython contains config files for that profile,
# then they will be staged into the new directory. Otherwise, default config
# files will be automatically generated.
#c.BaseIPythonApplication.copy_config_files = False
## Path to an extra config file to load.
#
# If specified, load this config file in addition to any other IPython config.
#c.BaseIPythonApplication.extra_config_file = u''
## The name of the IPython directory. This directory is used for logging
# configuration (through profiles), history storage, etc. The default is usually
# $HOME/.ipython. This option can also be specified through the environment
# variable IPYTHONDIR.
#c.BaseIPythonApplication.ipython_dir = u''
## Whether to overwrite existing config files when copying
#c.BaseIPythonApplication.overwrite = False
## The IPython profile to use.
#c.BaseIPythonApplication.profile = u'default'
## Create a massive crash report when IPython encounters what may be an internal
# error. The default is to append a short message to the usual traceback
#c.BaseIPythonApplication.verbose_crash = False
#------------------------------------------------------------------------------
# TerminalIPythonApp(BaseIPythonApplication,InteractiveShellApp) configuration
#------------------------------------------------------------------------------
## Whether to display a banner upon starting IPython.
#c.TerminalIPythonApp.display_banner = True
## If a command or file is given via the command-line, e.g. 'ipython foo.py',
# start an interactive shell after executing the file or command.
#c.TerminalIPythonApp.force_interact = False
## Class to use to instantiate the TerminalInteractiveShell object. Useful for
# custom Frontends
#c.TerminalIPythonApp.interactive_shell_class = 'IPython.terminal.interactiveshell.TerminalInteractiveShell'
## Start IPython quickly by skipping the loading of config files.
#c.TerminalIPythonApp.quick = False
#------------------------------------------------------------------------------
# InteractiveShell(SingletonConfigurable) configuration
#------------------------------------------------------------------------------
## An enhanced, interactive shell for Python.
## 'all', 'last', 'last_expr' or 'none', specifying which nodes should be run
# interactively (displaying output from expressions).
#c.InteractiveShell.ast_node_interactivity = 'last_expr'
## A list of ast.NodeTransformer subclass instances, which will be applied to
# user input before code is run.
#c.InteractiveShell.ast_transformers = []
## Make IPython automatically call any callable object even if you didn't type
# explicit parentheses. For example, 'str 43' becomes 'str(43)' automatically.
# The value can be '0' to disable the feature, '1' for 'smart' autocall, where
# it is not applied if there are no more arguments on the line, and '2' for
# 'full' autocall, where all callable objects are automatically called (even if
# no arguments are present).
#c.InteractiveShell.autocall = 0
## Autoindent IPython code entered interactively.
#c.InteractiveShell.autoindent = True
## Enable magic commands to be called without the leading %.
#c.InteractiveShell.automagic = True
## The part of the banner to be printed before the profile
#c.InteractiveShell.banner1 = 'Python 2.7.5 (default, Apr 2 2020, 13:16:51) \nType "copyright", "credits" or "license" for more information.\n\nIPython 5.10.0 -- An enhanced Interactive Python.\n? -> Introduction and overview of IPython\'s features.\n%quickref -> Quick reference.\nhelp -> Python\'s own help system.\nobject? -> Details about \'object\', use \'object??\' for extra details.\n'
## The part of the banner to be printed after the profile
#c.InteractiveShell.banner2 = ''
## Set the size of the output cache. The default is 1000, you can change it
# permanently in your config file. Setting it to 0 completely disables the
# caching system, and the minimum value accepted is 20 (if you provide a value
# less than 20, it is reset to 0 and a warning is issued). This limit is
# defined because otherwise you'll spend more time re-flushing a too small cache
# than working
#c.InteractiveShell.cache_size = 1000
## Use colors for displaying information about objects. Because this information
# is passed through a pager (like 'less'), and some pagers get confused with
# color codes, this capability can be turned off.
#c.InteractiveShell.color_info = True
## Set the color scheme (NoColor, Neutral, Linux, or LightBG).
#c.InteractiveShell.colors = 'Neutral'
c.InteractiveShell.colors = 'Neutral'
c.InteractiveShell.colors = 'Linux'
##
#c.InteractiveShell.debug = False
## **Deprecated**
#
# Will be removed in IPython 6.0
#
# Enable deep (recursive) reloading by default. IPython can use the deep_reload
# module which reloads changes in modules recursively (it replaces the reload()
# function, so you don't need to change anything to use it). `deep_reload`
# forces a full reload of modules whose code may have changed, which the default
# reload() function does not. When deep_reload is off, IPython will use the
# normal reload(), but deep_reload will still be available as dreload().
#c.InteractiveShell.deep_reload = False
## Don't call post-execute functions that have failed in the past.
#c.InteractiveShell.disable_failing_post_execute = False
## If True, anything that would be passed to the pager will be displayed as
# regular output instead.
#c.InteractiveShell.display_page = False
## (Provisional API) enables html representation in mime bundles sent to pagers.
#c.InteractiveShell.enable_html_pager = False
## Total length of command history
#c.InteractiveShell.history_length = 10000
## The number of saved history entries to be loaded into the history buffer at
# startup.
#c.InteractiveShell.history_load_length = 1000
##
#c.InteractiveShell.ipython_dir = ''
## Start logging to the given file in append mode. Use `logfile` to specify a log
# file to **overwrite** logs to.
#c.InteractiveShell.logappend = ''
## The name of the logfile to use.
#c.InteractiveShell.logfile = ''
## Start logging to the default log file in overwrite mode. Use `logappend` to
# specify a log file to **append** logs to.
#c.InteractiveShell.logstart = False
##
#c.InteractiveShell.object_info_string_level = 0
## Automatically call the pdb debugger after every exception.
#c.InteractiveShell.pdb = False
## Deprecated since IPython 4.0 and ignored since 5.0, set
# TerminalInteractiveShell.prompts object directly.
#c.InteractiveShell.prompt_in1 = 'In [\\#]: '
## Deprecated since IPython 4.0 and ignored since 5.0, set
# TerminalInteractiveShell.prompts object directly.
#c.InteractiveShell.prompt_in2 = ' .\\D.: '
## Deprecated since IPython 4.0 and ignored since 5.0, set
# TerminalInteractiveShell.prompts object directly.
#c.InteractiveShell.prompt_out = 'Out[\\#]: '
## Deprecated since IPython 4.0 and ignored since 5.0, set
# TerminalInteractiveShell.prompts object directly.
#c.InteractiveShell.prompts_pad_left = True
##
#c.InteractiveShell.quiet = False
##
#c.InteractiveShell.separate_in = '\n'
##
#c.InteractiveShell.separate_out = ''
##
#c.InteractiveShell.separate_out2 = ''
## Show rewritten input, e.g. for autocall.
#c.InteractiveShell.show_rewritten_input = True
## Enables rich html representation of docstrings. (This requires the docrepr
# module).
#c.InteractiveShell.sphinxify_docstring = False
##
#c.InteractiveShell.wildcards_case_sensitive = True
##
#c.InteractiveShell.xmode = 'Context'
#------------------------------------------------------------------------------
# TerminalInteractiveShell(InteractiveShell) configuration
#------------------------------------------------------------------------------
## Set to confirm when you try to exit IPython with an EOF (Control-D in Unix,
# Control-Z/Enter in Windows). By typing 'exit' or 'quit', you can force a
# direct exit without any confirmation.
#c.TerminalInteractiveShell.confirm_exit = True
## Options for displaying tab completions, 'column', 'multicolumn', and
# 'readlinelike'. These options are for `prompt_toolkit`, see `prompt_toolkit`
# documentation for more information.
#c.TerminalInteractiveShell.display_completions = 'multicolumn'
## Shortcut style to use at the prompt. 'vi' or 'emacs'.
#c.TerminalInteractiveShell.editing_mode = 'emacs'
c.TerminalInteractiveShell.editing_mode = 'vi'
## Set the editor used by IPython (default to $EDITOR/vi/notepad).
#c.TerminalInteractiveShell.editor = 'vi'
## Enable vi (v) or Emacs (C-X C-E) shortcuts to open an external editor. This is
# in addition to the F2 binding, which is always enabled.
#c.TerminalInteractiveShell.extra_open_editor_shortcuts = False
## Highlight matching brackets.
#c.TerminalInteractiveShell.highlight_matching_brackets = True
## The name or class of a Pygments style to use for syntax highlighting. To see
# available styles, run `pygmentize -L styles`.
#c.TerminalInteractiveShell.highlighting_style = traitlets.Undefined
## Override highlighting format for specific tokens
#c.TerminalInteractiveShell.highlighting_style_overrides = {}
## Enable mouse support in the prompt
#c.TerminalInteractiveShell.mouse_support = False
## Class used to generate Prompt token for prompt_toolkit
#c.TerminalInteractiveShell.prompts_class = 'IPython.terminal.prompts.Prompts'
## Use `raw_input` for the REPL, without completion and prompt colors.
#
# Useful when controlling IPython as a subprocess, and piping STDIN/OUT/ERR.
# Known usage are: IPython own testing machinery, and emacs inferior-shell
# integration through elpy.
#
# This mode default to `True` if the `IPY_TEST_SIMPLE_PROMPT` environment
# variable is set, or the current terminal is not a tty.
#c.TerminalInteractiveShell.simple_prompt = False
## Number of line at the bottom of the screen to reserve for the completion menu
#c.TerminalInteractiveShell.space_for_menu = 6
## Automatically set the terminal title
#c.TerminalInteractiveShell.term_title = True
## Use 24bit colors instead of 256 colors in prompt highlighting. If your
# terminal supports true color, the following command should print 'TRUECOLOR'
# in orange: printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"
#c.TerminalInteractiveShell.true_color = False
#------------------------------------------------------------------------------
# HistoryAccessor(HistoryAccessorBase) configuration
#------------------------------------------------------------------------------
## Access the history database without adding to it.
#
# This is intended for use by standalone history tools. IPython shells use
# HistoryManager, below, which is a subclass of this.
## Options for configuring the SQLite connection
#
# These options are passed as keyword args to sqlite3.connect when establishing
# database conenctions.
#c.HistoryAccessor.connection_options = {}
## enable the SQLite history
#
# set enabled=False to disable the SQLite history, in which case there will be
# no stored history, no SQLite connection, and no background saving thread.
# This may be necessary in some threaded environments where IPython is embedded.
#c.HistoryAccessor.enabled = True
## Path to file to use for SQLite history database.
#
# By default, IPython will put the history database in the IPython profile
# directory. If you would rather share one history among profiles, you can set
# this value in each, so that they are consistent.
#
# Due to an issue with fcntl, SQLite is known to misbehave on some NFS mounts.
# If you see IPython hanging, try setting this to something on a local disk,
# e.g::
#
# ipython --HistoryManager.hist_file=/tmp/ipython_hist.sqlite
#
# you can also use the specific value `:memory:` (including the colon at both
# end but not the back ticks), to avoid creating an history file.
#c.HistoryAccessor.hist_file = u''
#------------------------------------------------------------------------------
# HistoryManager(HistoryAccessor) configuration
#------------------------------------------------------------------------------
## A class to organize all history-related functionality in one place.
## Write to database every x commands (higher values save disk access & power).
# Values of 1 or less effectively disable caching.
#c.HistoryManager.db_cache_size = 0
## Should the history database include output? (default: no)
#c.HistoryManager.db_log_output = False
#------------------------------------------------------------------------------
# ProfileDir(LoggingConfigurable) configuration
#------------------------------------------------------------------------------
## An object to manage the profile directory and its resources.
#
# The profile directory is used by all IPython applications, to manage
# configuration, logging and security.
#
# This object knows how to find, create and manage these directories. This
# should be used by any code that wants to handle profiles.
## Set the profile location directly. This overrides the logic used by the
# `profile` option.
#c.ProfileDir.location = u''
#------------------------------------------------------------------------------
# BaseFormatter(Configurable) configuration
#------------------------------------------------------------------------------
## A base formatter class that is configurable.
#
# This formatter should usually be used as the base class of all formatters. It
# is a traited :class:`Configurable` class and includes an extensible API for
# users to determine how their objects are formatted. The following logic is
# used to find a function to format an given object.
#
# 1. The object is introspected to see if it has a method with the name
# :attr:`print_method`. If is does, that object is passed to that method
# for formatting.
# 2. If no print method is found, three internal dictionaries are consulted
# to find print method: :attr:`singleton_printers`, :attr:`type_printers`
# and :attr:`deferred_printers`.
#
# Users should use these dictionaries to register functions that will be used to
# compute the format data for their objects (if those objects don't have the
# special print methods). The easiest way of using these dictionaries is through
# the :meth:`for_type` and :meth:`for_type_by_name` methods.
#
# If no function/callable is found to compute the format data, ``None`` is
# returned and this format type is not used.
##
#c.BaseFormatter.deferred_printers = {}
##
#c.BaseFormatter.enabled = True
##
#c.BaseFormatter.singleton_printers = {}
##
#c.BaseFormatter.type_printers = {}
#------------------------------------------------------------------------------
# PlainTextFormatter(BaseFormatter) configuration
#------------------------------------------------------------------------------
## The default pretty-printer.
#
# This uses :mod:`IPython.lib.pretty` to compute the format data of the object.
# If the object cannot be pretty printed, :func:`repr` is used. See the
# documentation of :mod:`IPython.lib.pretty` for details on how to write pretty
# printers. Here is a simple example::
#
# def dtype_pprinter(obj, p, cycle):
# if cycle:
# return p.text('dtype(...)')
# if hasattr(obj, 'fields'):
# if obj.fields is None:
# p.text(repr(obj))
# else:
# p.begin_group(7, 'dtype([')
# for i, field in enumerate(obj.descr):
# if i > 0:
# p.text(',')
# p.breakable()
# p.pretty(field)
# p.end_group(7, '])')
##
#c.PlainTextFormatter.float_precision = ''
## Truncate large collections (lists, dicts, tuples, sets) to this size.
#
# Set to 0 to disable truncation.
#c.PlainTextFormatter.max_seq_length = 1000
##
#c.PlainTextFormatter.max_width = 79
##
#c.PlainTextFormatter.newline = '\n'
##
#c.PlainTextFormatter.pprint = True
##
#c.PlainTextFormatter.verbose = False
#------------------------------------------------------------------------------
# Completer(Configurable) configuration
#------------------------------------------------------------------------------
## Enable unicode completions, e.g. \alpha<tab> . Includes completion of latex
# commands, unicode names, and expanding unicode characters back to latex
# commands.
#c.Completer.backslash_combining_completions = True
## Activate greedy completion PENDING DEPRECTION. this is now mostly taken care
# of with Jedi.
#
# This will enable completion on elements of lists, results of function calls,
# etc., but can be unsafe because the code is actually evaluated on TAB.
#c.Completer.greedy = False
#------------------------------------------------------------------------------
# IPCompleter(Completer) configuration
#------------------------------------------------------------------------------
## Extension of the completer class with IPython-specific features
## DEPRECATED as of version 5.0.
#
# Instruct the completer to use __all__ for the completion
#
# Specifically, when completing on ``object.<tab>``.
#
# When True: only those names in obj.__all__ will be included.
#
# When False [default]: the __all__ attribute is ignored
#c.IPCompleter.limit_to__all__ = False
## Whether to merge completion results into a single list
#
# If False, only the completion results from the first non-empty completer will
# be returned.
#c.IPCompleter.merge_completions = True
## Instruct the completer to omit private method names
#
# Specifically, when completing on ``object.<tab>``.
#
# When 2 [default]: all names that start with '_' will be excluded.
#
# When 1: all 'magic' names (``__foo__``) will be excluded.
#
# When 0: nothing will be excluded.
#c.IPCompleter.omit__names = 2
#------------------------------------------------------------------------------
# ScriptMagics(Magics) configuration
#------------------------------------------------------------------------------
## Magics for talking to scripts
#
# This defines a base `%%script` cell magic for running a cell with a program in
# a subprocess, and registers a few top-level magics that call %%script with
# common interpreters.
## Extra script cell magics to define
#
# This generates simple wrappers of `%%script foo` as `%%foo`.
#
# If you want to add script magics that aren't on your path, specify them in
# script_paths
#c.ScriptMagics.script_magics = []
## Dict mapping short 'ruby' names to full paths, such as '/opt/secret/bin/ruby'
#
# Only necessary for items in script_magics where the default path will not find
# the right interpreter.
#c.ScriptMagics.script_paths = {}
#------------------------------------------------------------------------------
# StoreMagics(Magics) configuration
#------------------------------------------------------------------------------
## Lightweight persistence for python variables.
#
# Provides the %store magic.
## If True, any %store-d variables will be automatically restored when IPython
# starts.
#c.StoreMagics.autorestore = False

View File

@ -3,16 +3,12 @@ LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Odoo dependencies from OL repository and from EPEL, WKHTML
# Then PG96 and fonts
COPY pkgs/odoo10c7/*.tgz ./
RUN yum -y groupinstall "Development Tools" && \
yum -y install zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel git mercurial libpng libjpeg libXext curl xorg-x11-font-utils fontconfig python-virtualenv libevent-devel libxml2-devel libxslt-devel openldap-devel openjpeg-devel freetype-devel libjpeg-turbo-devel libtiff-devel kernel-devel mailcap && \
yum -y install oracle-epel-release-el7 && \
yum -y install nodejs npm python2-pip && \
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && \
yum --enablerepo=epel -y install nodejs npm python-pip && \
yum -y install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm && \
tar -zxf ./libpqxx-5.0.1-2.rhel7.x86_64.tgz && \
tar -zxf ./postgresql96-9.6.24-1PGDG.rhel7.x86_64.tgz && \
tar -zxf ./postgresql96-libs-9.6.24-1PGDG.rhel7.x86_64.tgz && \
ln -s /usr/pgsql-9.6/bin/* /usr/local/bin/ && \
yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm && \
yum -y install postgresql96 libpqxx && \
yum -y install liberation-fonts && \
yum clean all
@ -20,7 +16,7 @@ RUN yum -y groupinstall "Development Tools" && \
# Install NPM dependencies and Python ones
RUN npm install -g less@2 less-plugin-clean-css@1.5.1 && \
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --no-cache-dir -U pip==20.3.4 setuptools==44.1.1
pip install --no-cache-dir -U pip==20.3.4 setuptools==44.1.1
# Create odoo user
RUN useradd odoo -md /opt/odoo
@ -34,6 +30,12 @@ RUN mkdir pipcache data backups extra-addons custom-addons && \
git clone -b ${ODOO_BRANCH} --depth 1 https://github.com/OCA/OCB.git && \
pip install --user --no-cache-dir -r OCB/requirements.txt
# Fix bad commit
WORKDIR /opt/odoo/OCB
RUN git config user.email "fabien@yaltik.com" && \
git config user.name "Fabien BOURGEOIS" && \
git fetch origin pull/1113/head:10.0-binary-widget-fix && \
git cherry-pick 0eb02e12619cdd52f6a37accfb58c1b35a165fbe
WORKDIR /opt/odoo
# Launch scripts

View File

@ -1,57 +0,0 @@
FROM oraclelinux:8
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Odoo dependencies from OL repository and from EPEL, WKHTML
# Then PG96 and fonts
# COPY pkgs/odoo10c7/*.tgz ./
COPY postgres96-ol8.repo /etc/yum.repos.d/postgres96.repo
RUN yum -y groupinstall "Development Tools" && \
yum -y install zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libpcap xz-devel git mercurial libpng libjpeg libXext curl xorg-x11-font-utils fontconfig libevent-devel libxml2-devel libxslt-devel openldap-devel openjpeg2 freetype-devel libjpeg-turbo-devel libtiff-devel kernel-devel mailcap liberation-fonts nodejs npm python2-pip python2-devel && \
yum --enablerepo=pgdg96-archive -y install libpqxx postgresql96-libs && \
yum -y install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm && \
yum clean all && \
/usr/sbin/update-alternatives --set python /usr/bin/python2 && \
ln -s /usr/bin/pip2 /usr/local/bin/pip
# Install NPM dependencies and Python ones
RUN npm install -g less@2 less-plugin-clean-css@1.5.1 && \
pip install --no-cache-dir -U pip==20.3.4 setuptools==44.1.1
# Postgres 96 needs to be compiled
# bison-devel, wget, ccache...
# RUN git clone --depth 1 --branch REL9_6_24 git://git.postgresql.org/git/postgresql.git /tmp/postgresql
WORKDIR /tmp/
RUN curl -LO https://ftp.postgresql.org/pub/source/v9.6.24/postgresql-9.6.24.tar.gz && \
tar xzf postgresql-9.6.24.tar.gz
WORKDIR /tmp/postgresql-9.6.24
RUN ./configure && make && make install && ln -s /usr/local/pgsql/bin/* /usr/local/bin/
# Create odoo user
RUN useradd odoo -md /opt/odoo
# Install OCB 10.0 latest
ENV ODOO_BRANCH 10.0
WORKDIR /opt/odoo
# Default user : odoo
USER odoo
RUN mkdir pipcache data backups extra-addons custom-addons && \
git clone -b ${ODOO_BRANCH} --depth 1 https://github.com/OCA/OCB.git && \
pip install --user --no-cache-dir -r OCB/requirements.txt
WORKDIR /opt/odoo
# Launch scripts
COPY ./launch10.sh ./
COPY ./genconf.sh ./
# Post-install tasks
RUN touch odoo.conf
# Odoo default ports
EXPOSE 8069 8072
# Volumes : data dir for filestore and addons
VOLUME /opt/odoo/data
CMD [ "bash", "launch10.sh" ]

View File

@ -1,16 +0,0 @@
FROM registry.yaltik.net/odoo:yaltik10c8
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# PostgreSQL CLI
# Mandatory for pyhton2
# RUN pip install --user pgcli==2.2.0 --only-binary psycopg2
# COPY pgcli.sh ./
# Odoo specific
RUN pip install --user --no-cache-dir watchdog==0.10.7 ipython==5.10.0 && \
mkdir -p /opt/odoo/.ipython/profile_default
COPY ipython_config.py /opt/odoo/.ipython/profile_default/
COPY shell_helpers.py /opt/odoo/
COPY shell10.sh /opt/odoo/shell.sh
COPY i18n.sh /opt/odoo/
COPY launch10.dev.sh /opt/odoo/launch10.sh
ENV DEV 1

View File

@ -5,8 +5,7 @@ LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# RUN .local/bin/pip3 install --user pgcli
# COPY pgcli.sh ./
# Odoo specific
# Gevent : last py 3.5, fixe local dev problem with CPU 100% on Fedora (kernel problem ?)
RUN .local/bin/pip3 install --user --no-cache-dir watchdog==0.10.7 gevent==20.9.0
RUN .local/bin/pip3 install --user --no-cache-dir watchdog==0.10.7
COPY shell12.sh /opt/odoo/shell.sh
COPY i18n.sh /opt/odoo/i18n.sh
COPY launch12.dev.sh /opt/odoo/launch.sh

View File

@ -1,43 +0,0 @@
FROM oraclelinux:8
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Odoo dependencies from OL repository and from EPEL, WKHTML
# Then PG10 and fonts
RUN yum -y groupinstall "Development Tools" && \
yum -y install zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libpcap xz-devel git mercurial libpng libjpeg libXext curl xorg-x11-font-utils fontconfig python3-virtualenv libevent-devel libxml2-devel libxslt-devel openldap-devel openjpeg2 freetype-devel libjpeg-turbo-devel libtiff-devel kernel-devel mailcap nodejs npm python3-pip postgresql libpq liberation-fonts && \
yum -y install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm && \
yum clean all
# Install NPM dependencies
RUN npm install -g less@3 less-plugin-clean-css@1.5.1
# Create odoo user
RUN useradd odoo -md /opt/odoo
# Install OCB 12.0 latest
ENV ODOO_BRANCH 12.0
WORKDIR /opt/odoo
# Default user : odoo
USER odoo
RUN mkdir pipcache data backups extra-addons custom-addons && \
git clone -b ${ODOO_BRANCH} --depth 1 https://github.com/OCA/OCB.git && \
pip3 install --user --no-cache-dir -r OCB/requirements.txt && \
pip3 install --no-cache-dir --user phonenumbers==8.12.44
WORKDIR /opt/odoo
# Launch scripts
COPY ./launch12.sh ./launch.sh
COPY ./genconf.sh ./
# Post-install tasks
RUN touch odoo.conf
# Odoo default ports
EXPOSE 8069 8072
# Volumes : data dir for filestore and addons
VOLUME /opt/odoo/data
CMD [ "bash", "launch.sh" ]

View File

@ -1,13 +0,0 @@
FROM registry.yaltik.net/odoo:yaltik12ol8
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# PostgreSQL CLI
# RUN pip3 install --user pgcli
# COPY pgcli.sh ./
# Odoo specific
# Gevent : last py 3.6, fix local dev problem with CPU 100% on Fedora (kernel problem ?)
RUN pip3 install --user --no-cache-dir watchdog==2.1.7 gevent==21.12.0
COPY shell12.sh /opt/odoo/shell.sh
COPY i18n.sh /opt/odoo/i18n.sh
COPY launch12.dev.sh /opt/odoo/launch.sh
ENV DEV 1

View File

@ -1,67 +0,0 @@
FROM debian:buster-slim
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Generate locale C.UTF-8 for postgres and general locale data
# http://bugs.python.org/issue19846
# > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK.
ENV LANG C.UTF-8
# Odoo dependencies from Debian APT repository
# Install some deps, lessc and less-plugin-clean-css, and wkhtmltopdf
# WKHTMLTOPDF
# PostgreSQL-client
# Needed to build
# NPM rtlcss
SHELL ["/bin/bash", "-xo", "pipefail", "-c"]
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-pdfminer 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 && \
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 libpq-dev postgresql-client && \
apt-get install -y --no-install-recommends build-essential git mercurial curl \
python3-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev \
libjpeg-dev libfreetype6-dev libssl-dev && \
apt-get clean && rm -rf /var/lib/apt/lists/* wkhtmltox.deb && \
npm install -g rtlcss@2.6.2
# Create odoo user
RUN useradd odoo -md /opt/odoo
# Install OCB 13.0 latest
ENV ODOO_BRANCH 13.0
WORKDIR /opt/odoo
# Default user : odoo
USER odoo
RUN mkdir pipcache data backups extra-addons custom-addons && \
git clone -b ${ODOO_BRANCH} --depth 1 https://github.com/OCA/OCB.git && \
pip3 install --no-cache-dir --user -U pip==22.0.3 && \
pip3 install --no-cache-dir --user -r OCB/requirements.txt && \
pip3 install --no-cache-dir --user phonenumbers==8.12.44
# Launch scripts
COPY ./launch14.sh ./launch.sh
COPY ./genconf.sh ./
# Post-install tasks
RUN touch odoo.conf
ENV ODOO_RC /opt/odoo/odoo.conf
# Odoo default ports
EXPOSE 8069 8071 8072
# Volumes : data dir for filestore and addons
VOLUME /opt/odoo/data
CMD [ "bash", "launch.sh" ]

View File

@ -1,60 +0,0 @@
FROM oraclelinux:8
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Generate locale C.UTF-8 for postgres and general locale data
# http://bugs.python.org/issue19846
# > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK.
ENV LANG C.UTF-8
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Odoo dependencies from OL repositories, python38 and WKHTML
# Then PG10 and fonts
RUN yum -y groupinstall "Development Tools" && \
yum -y install zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libpcap xz-devel git mercurial libpng libjpeg libXext curl xorg-x11-font-utils fontconfig libevent-devel libxml2-devel libxslt-devel openldap-devel openjpeg2 freetype-devel libjpeg-turbo-devel libtiff-devel kernel-devel mailcap nodejs npm python38-devel python38-pip libpq libpq-devel liberation-fonts && \
yum -y install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm && \
yum clean all && \
/usr/sbin/update-alternatives --set python3 /usr/bin/python3.8
# PostgreSQL 12 : missing packges on official v12
WORKDIR /tmp/
RUN curl -LO https://ftp.postgresql.org/pub/source/v12.19/postgresql-12.19.tar.gz && \
tar xzf postgresql-12.19.tar.gz
WORKDIR /tmp/postgresql-12.19
RUN ./configure && make && make install && ln -s /usr/local/pgsql/bin/* /usr/local/bin/
# Install NPM dependencies
RUN npm install -g less@3 less-plugin-clean-css@1.5.1 rtlcss@2.6.2
# Create odoo user
RUN useradd odoo -md /opt/odoo
# Install OCB 14.0 latest
ENV ODOO_BRANCH 14.0
WORKDIR /opt/odoo
# Default user : odoo
USER odoo
RUN mkdir pipcache data backups extra-addons custom-addons && \
git clone -b ${ODOO_BRANCH} --depth 1 https://github.com/OCA/OCB.git && \
pip3.8 install --user --no-cache-dir -r OCB/requirements.txt && \
pip3.8 install --no-cache-dir --user -U pip==22.0.3 && \
pip3.8 install --no-cache-dir --user virtualenv==20.26.2 \
phonenumbers==8.12.44 \ rl-renderPM==4.0.3 \
pdfminer==20191125 python-slugify==6.1.2 watchdog==2.3.1
# Launch scripts
COPY ./launch14.sh ./launch.sh
COPY ./genconf.sh ./
# Post-install tasks
RUN touch odoo.conf
ENV ODOO_RC /opt/odoo/odoo.conf
# Odoo default ports
EXPOSE 8069 8071 8072
# Volumes : data dir for filestore and addons
VOLUME /opt/odoo/data
CMD [ "bash", "launch.sh" ]

View File

@ -1,17 +0,0 @@
FROM registry.yaltik.net/odoo:yaltik14ol8
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# PostgreSQL CLI
# RUN pip3 install --user pgcli
# COPY pgcli.sh ./
# Odoo specific
# Gevent : last py 3.6, fix local dev problem with CPU 100% on Fedora (kernel problem ?)
RUN pip3.8 install --no-cache-dir --user ipython==7.16.3 && \
mkdir -p /opt/odoo/.ipython/profile_default
COPY ipython_config.py /opt/odoo/.ipython/profile_default/
COPY shell_helpers.py /opt/odoo/
COPY shell12.sh /opt/odoo/shell.sh
COPY i18n.sh /opt/odoo/i18n.sh
COPY launch12.dev.sh /opt/odoo/launch.sh
ENV DEV 1

View File

@ -1,74 +0,0 @@
FROM debian:bullseye-slim
LABEL maintainer="Odoo S.A. <info@odoo.com>"
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
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-pdfminer \
python3-pip \
python3-phonenumbers \
python3-pyldap \
python3-qrcode \
python3-renderpm \
python3-setuptools \
python3-slugify \
python3-vobject \
python3-watchdog \
python3-xlrd \
python3-xlwt \
xz-utils \
build-essential git mercurial curl \
python3-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev \
libjpeg-dev libfreetype6-dev libssl-dev \
postgresql-client libpq-dev \
&& 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 \
&& apt-get clean && rm -rf /var/lib/apt/lists/* wkhtmltox.deb \
&& npm install -g rtlcss@4.0.0
# Create odoo user
RUN useradd odoo -md /opt/odoo
# Install Odoo
ENV ODOO_BRANCH 16.0
WORKDIR /opt/odoo
# Set default user when running the container
USER odoo
RUN mkdir pipcache data backups extra-addons custom-addons && \
git clone -b ${ODOO_BRANCH} --depth 1 https://github.com/OCA/OCB.git && \
pip3 install --no-cache-dir --user -U pip==22.3 && \
pip3 install --no-cache-dir --user -r OCB/requirements.txt
# Launch scripts
COPY ./launch14.sh ./launch.sh
COPY ./genconf16.sh ./genconf.sh
# Post-install tasks
RUN touch odoo.conf
ENV ODOO_RC /opt/odoo/odoo.conf
# Odoo default ports
EXPOSE 8069 8071 8072
# Volumes : data dir for filestore and addons
VOLUME /opt/odoo/data
CMD [ "bash", "launch.sh" ]

View File

@ -1,16 +0,0 @@
FROM registry.yaltik.net/odoo:yaltik16
MAINTAINER Yaltik - Fabien Bourgeois <fabien@yaltik.com>
# PostgreSQL CLI
# RUN .local/bin/pip3 install --user pgcli
# COPY pgcli.sh ./
# Odoo specific
RUN pip3 install --no-cache-dir --user watchdog==2.1.9 ipython==8.6.0 && \
mkdir -p /opt/odoo/.ipython/profile_default
COPY ipython_config.py /opt/odoo/.ipython/profile_default/
COPY shell_helpers.py /opt/odoo/
COPY shell12.sh /opt/odoo/shell.sh
COPY i18n.sh /opt/odoo/i18n.sh
COPY launch12.dev.sh /opt/odoo/launch.sh
ENV DEV 1

View File

@ -7,12 +7,14 @@ LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Install NPM dependencies
# PostgreSQL 9.5
# Fonts
COPY pkgs/odoo8c7/*.rpm ./
RUN yum -y groupinstall "Development Tools" && yum -y install zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel git mercurial libpng libjpeg libXext curl xorg-x11-font-utils fontconfig python-virtualenv libevent-devel libxml2-devel libxslt-devel openldap-devel openjpeg-devel freetype-devel libjpeg-turbo-devel libtiff-devel kernel-devel && \
yum -y install oracle-epel-release-el7 && \
yum -y install nodejs npm python2-pip && \
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && \
yum --enablerepo=epel -y install nodejs npm python-pip && \
yum -y install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm && \
npm install -g less@2 less-plugin-clean-css@1.5.1 && \
curl -LO https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/libpqxx-5.0.1-2.rhel7.x86_64.rpm && \
curl -LO https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/postgresql95-9.5.25-1PGDG.rhel7.x86_64.rpm && \
curl -LO https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/postgresql95-libs-9.5.25-1PGDG.rhel7.x86_64.rpm && \
yum install -y ./*.rpm && \
yum -y install liberation-fonts && yum clean all
@ -26,7 +28,7 @@ WORKDIR /opt/odoo
USER odoo
RUN mkdir pipcache data backups extra-addons custom-addons && \
git clone -b ${ODOO_BRANCH} --depth 1 https://github.com/OCA/OCB.git && \
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --user --no-cache-dir -r OCB/requirements.txt
pip install --user --no-cache-dir -r OCB/requirements.txt
# Launch scripts
COPY ./launch.sh ./launch.sh

View File

@ -17,7 +17,4 @@ RUN git clone --depth 1 -b 10.0 https://github.com/OCA/community-data-files && \
git clone --depth 1 -b 10.0 https://github.com/OCA/web && \
git clone --depth 1 -b 10.0 https://github.com/Openworx/backend_theme
# Scripts
COPY i18n-import.sh upd.sh /opt/odoo/
WORKDIR /opt/odoo

View File

@ -1,23 +0,0 @@
FROM registry.yaltik.net/odoo:yaltikbase10c8
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Extra dependencies
RUN pip install --user --no-cache-dir unidecode==1.2.0 requests-oauthlib==1.3.1 && \
pip install --user git+https://github.com/OCA/openupgradelib.git@3.3.2
# External code
WORKDIR /opt/odoo/extra-addons
RUN git clone --depth 1 -b 10.0 https://github.com/OCA/community-data-files && \
git clone --depth 1 -b 10.0 https://github.com/OCA/reporting-engine && \
git clone --depth 1 -b 10.0 https://github.com/OCA/l10n-france && \
git clone --depth 1 -b 10.0 https://github.com/OCA/partner-contact && \
git clone --depth 1 -b 10.0 https://github.com/OCA/crm && \
git clone --depth 1 -b 10.0 https://github.com/OCA/queue && \
git clone --depth 1 -b 10.0 https://github.com/OCA/server-tools && \
git clone --depth 1 -b 10.0 https://github.com/OCA/web && \
git clone --depth 1 -b 10.0 https://github.com/Openworx/backend_theme
# Scripts
COPY i18n-import.sh upd.sh /opt/odoo/
WORKDIR /opt/odoo

View File

@ -1,30 +0,0 @@
FROM registry.yaltik.net/odoo:yaltikbase12ol8
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# External code
WORKDIR /opt/odoo/extra-addons
RUN git clone --depth 1 -b 12.0 https://github.com/OCA/community-data-files && \
git clone --depth 1 -b 12.0 https://github.com/OCA/l10n-france && \
git clone --depth 1 -b 12.0 https://github.com/OCA/queue && \
git clone --depth 1 -b 12.0 https://github.com/OCA/partner-contact && \
git clone --depth 1 -b 12.0 https://github.com/OCA/social && \
git clone --depth 1 -b 12.0 https://github.com/OCA/server-brand && \
git clone --depth 1 -b 12.0 https://github.com/OCA/web && \
git clone --depth 1 -b 12.0 https://github.com/OCA/website && \
git clone --depth 1 -b 12.0 https://github.com/muk-it/muk_base && \
git clone --depth 1 -b 12.0 https://github.com/muk-it/muk_misc && \
git clone --depth 1 -b 12.0 https://github.com/muk-it/muk_web && \
git clone --depth 1 -b 12.0 https://github.com/muk-it/muk_website
# Custom code
WORKDIR /opt/odoo/custom-addons
RUN git clone --depth 1 -b 12.0 https://git.yaltik.net/Yaltik/yaltik_odoo_custom.git
WORKDIR /opt/odoo
# Addons dependencies
RUN pip3 install --user --no-cache-dir setuptools-scm==5.0.2 && \
pip3 install --user --no-cache-dir git+https://github.com/OCA/openupgradelib.git@3.3.2
# Scripts
COPY i18n-import.sh upd.sh /opt/odoo/

View File

@ -20,8 +20,4 @@ RUN git clone --depth 1 -b 14.0 https://git.yaltik.net/Yaltik/yaltik_odoo_custom
WORKDIR /opt/odoo
# Addons dependencies
RUN pip3 install --user --no-cache-dir setuptools-scm==7.1.0 && \
pip3 install --no-cache-dir --user git+https://github.com/OCA/openupgradelib.git@3.3.2
# Scripts
COPY i18n-import.sh upd.sh /opt/odoo/
RUN .local/bin/pip3 install --no-cache-dir --user git+https://github.com/OCA/openupgradelib.git@3.3.2

View File

@ -1,27 +0,0 @@
FROM registry.yaltik.net/odoo:yaltikbase14ol8
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# External code
WORKDIR /opt/odoo/extra-addons
RUN git clone --depth 1 -b 14.0 https://github.com/OCA/community-data-files && \
git clone --depth 1 -b 14.0 https://github.com/OCA/l10n-france && \
git clone --depth 1 -b 14.0 https://github.com/OCA/queue && \
git clone --depth 1 -b 14.0 https://github.com/OCA/partner-contact && \
git clone --depth 1 -b 14.0 https://github.com/OCA/social && \
git clone --depth 1 -b 14.0 https://github.com/OCA/server-brand && \
git clone --depth 1 -b 14.0 https://github.com/OCA/web && \
git clone --depth 1 -b 14.0 https://github.com/OCA/website && \
git clone --depth 1 -b 14.0 https://github.com/Openworx/backend_theme
# Custom code
WORKDIR /opt/odoo/custom-addons
RUN git clone --depth 1 -b 14.0 https://git.yaltik.net/Yaltik/yaltik_odoo_custom.git
WORKDIR /opt/odoo
# Addons dependencies
RUN pip3.8 install --user --no-cache-dir setuptools-scm==6.4.2 && \
pip3.8 install --user --no-cache-dir git+https://github.com/OCA/openupgradelib.git@3.3.2
# Scripts
COPY i18n-import.sh upd.sh /opt/odoo/

View File

@ -21,6 +21,3 @@ WORKDIR /opt/odoo
# Addons dependencies
RUN .local/bin/pip3 install --user git+https://github.com/OCA/openupgradelib.git@3.3.2
# Scripts
COPY i18n-import.sh upd.sh /opt/odoo/

View File

@ -1,26 +0,0 @@
FROM registry.yaltik.net/odoo:yaltikbase16
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# External code and usedfull PR
WORKDIR /opt/odoo/extra-addons
RUN git clone --depth 1 -b 16.0 https://github.com/OCA/community-data-files && \
git clone --depth 1 -b 16.0 https://github.com/OCA/server-tools && \
git clone --depth 1 -b 16.0 https://github.com/OCA/l10n-france && \
git clone --depth 1 -b 16.0 https://github.com/OCA/queue && \
git clone --depth 1 -b 16.0 https://github.com/OCA/partner-contact && \
git clone --depth 1 -b 16.0 https://github.com/OCA/social && \
git clone --depth 1 -b 16.0 https://github.com/OCA/server-brand && \
git clone --depth 1 -b 16.0 https://github.com/OCA/web && \
git clone --depth 1 -b 16.0 https://github.com/OCA/website
# Custom code
WORKDIR /opt/odoo/custom-addons
RUN git clone --depth 1 -b 16.0 https://git.yaltik.net/Yaltik/yaltik_odoo_custom.git
WORKDIR /opt/odoo
# Addons dependencies
RUN .local/bin/pip3 install --user git+https://github.com/OCA/openupgradelib.git@3.3.4 astor==0.8.1 python-stdnum==1.18
# Scripts
COPY i18n-import.sh upd.sh /opt/odoo/

View File

@ -1,7 +0,0 @@
FROM registry.yaltik.net/odoo:yaltikbase13
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
WORKDIR /opt/odoo
RUN rm -rf OCB/ && \
git clone -b "${ODOO_BRANCH}" --depth 1 https://github.com/OCA/OpenUpgrade.git OCB && \
pip3 install --user --no-cache-dir git+https://github.com/OCA/openupgradelib.git@3.4.0

View File

@ -1,6 +0,0 @@
FROM registry.yaltik.net/odoo:yaltik14
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
RUN pip3 install --user --no-cache-dir setuptools-scm==7.1.0 && \
pip3 install --user --no-cache-dir git+https://github.com/OCA/openupgradelib.git@3.4.0 && \
git clone --depth 1 -b 14.0 https://github.com/OCA/OpenUpgrade /opt/odoo/extra-addons/openupgrade

View File

@ -1,5 +0,0 @@
FROM registry.yaltik.net/odoo:yaltik15
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
RUN pip3 install --user --no-cache-dir git+https://github.com/OCA/openupgradelib.git@3.4.0 && \
git clone --depth 1 -b 15.0 https://github.com/OCA/OpenUpgrade /opt/odoo/extra-addons/openupgrade

View File

@ -1,7 +0,0 @@
FROM registry.yaltik.net/odoo:yaltik16
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
WORKDIR /opt/odoo
RUN rm -rf OCB/ && \
git clone -b "${ODOO_BRANCH}" --depth 1 https://github.com/OCA/OpenUpgrade.git OCB && \
pip3 install --user --no-cache-dir git+https://github.com/OCA/openupgradelib.git@3.4.0

View File

@ -17,7 +17,4 @@ RUN curl -LO "https://downloadarchive.documentfoundation.org/libreoffice/old/${L
USER odoo
RUN pip install --no-cache-dir --user py3o.template==0.10.0 py3o.formats==0.3
# Scripts
COPY i18n-import.sh upd.sh /opt/odoo/
WORKDIR /opt/odoo

View File

@ -1,23 +0,0 @@
FROM registry.yaltik.net/odoo:yaltik10c8
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Install local LibreOffice for better conversion and supported types
# And for conversions
USER root
ENV LO_VERSION 5.3.7.2
RUN curl -LO "https://downloadarchive.documentfoundation.org/libreoffice/old/${LO_VERSION}/rpm/x86_64/LibreOffice_${LO_VERSION}_Linux_x86-64_rpm.tar.gz" && \
tar zxf "LibreOffice_${LO_VERSION}_Linux_x86-64_rpm.tar.gz" && \
yum -y install "./LibreOffice_${LO_VERSION}_Linux_x86-64_rpm/RPMS/"* && \
rm -rf "./LibreOffice_${LO_VERSION}_Linux_x86-64_rpm"* && \
yum install -y cairo cups-libs libSM mesa-libGL && \
yum clean all && \
ln -s /usr/bin/libreoffice5.3 /usr/local/bin/libreoffice
# Addons dependencies
USER odoo
RUN pip install --no-cache-dir --user py3o.template==0.10.0 py3o.formats==0.3
# Scripts
COPY i18n-import.sh upd.sh /opt/odoo/
WORKDIR /opt/odoo

View File

@ -1,16 +0,0 @@
FROM registry.yaltik.net/odoo:yaltikpy3o10c8
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# PostgreSQL CLI
# Mandatory for pyhton2
# RUN pip install --user pgcli==2.2.0 --only-binary psycopg2
# COPY pgcli.sh ./
# Odoo specific
RUN pip install --user --no-cache-dir watchdog==0.10.7 ipython==5.10.0 && \
mkdir -p /opt/odoo/.ipython/profile_default
COPY ipython_config.py /opt/odoo/.ipython/profile_default/
COPY shell_helpers.py /opt/odoo/
COPY shell10.sh /opt/odoo/shell.sh
COPY i18n.sh /opt/odoo/
COPY launch10.dev.sh /opt/odoo/launch10.sh
ENV DEV 1

View File

@ -1,15 +0,0 @@
FROM registry.yaltik.net/odoo:yaltik16
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# Install local LibreOffice for better conversion and supported types (bpo version)
USER root
# Remove inexisting source
RUN apt update && apt install -y fonts-liberation && \
apt install --no-install-recommends -y libreoffice libreoffice-calc libreoffice-writer && \
apt clean && rm -rf /var/lib/apt/lists/*
# Addons dependencies
USER odoo
RUN pip install --no-cache-dir --user py3o.template==0.10.0 py3o.formats==0.3
WORKDIR /opt/odoo

View File

@ -1,16 +0,0 @@
FROM registry.yaltik.net/odoo:yaltikpy3o16
MAINTAINER Yaltik - Fabien Bourgeois <fabien@yaltik.com>
# PostgreSQL CLI
# RUN .local/bin/pip3 install --user pgcli
# COPY pgcli.sh ./
# Odoo specific
RUN pip3 install --no-cache-dir --user watchdog==2.1.9 ipython==8.6.0 && \
mkdir -p /opt/odoo/.ipython/profile_default
COPY ipython_config.py /opt/odoo/.ipython/profile_default/
COPY shell_helpers.py /opt/odoo/
COPY shell12.sh /opt/odoo/shell.sh
COPY i18n.sh /opt/odoo/i18n.sh
COPY launch12.dev.sh /opt/odoo/launch.sh
ENV DEV 1

View File

@ -1,46 +0,0 @@
#!/bin/bash
# Small program, inspired from Yajo's one : https://bitbucket.org/yajo/docker-odoo
# It generates configuration file
CONF=/opt/odoo/odoo.conf
ADDONS_PATH="/opt/odoo/OCB/addons,/opt/odoo/data/addons"
cd extra-addons
for d in */ ; do
if ! [ "$d" == "*/" ]; then
ADDONS_PATH="$ADDONS_PATH,/opt/odoo/extra-addons/$d"
fi
done
cd ../custom-addons
for d in */ ; do
if ! [ "$d" == "*/" ]; then
ADDONS_PATH="$ADDONS_PATH,/opt/odoo/custom-addons/$d"
fi
done
# Configuration generation
echo "
[options]
; Configuration file auto-generated
addons_path = $ADDONS_PATH
data_dir = ${DATA:=/opt/odoo/data}
dbfilter = ${DB_FILTER}
db_name = ${DB_NAME}
db_host = ${DB_HOST:=postgres}
db_port = ${DB_PORT:=5432}
db_user = ${POSTGRES_USER:=odoo}
db_password = $POSTGRES_PASSWORD
db_maxconn = ${DB_MAXCONN:=20}
list_db = ${LIST_DB:=True}
http_port = ${XMLRPC_PORT:=8069}
gevent_port = ${LONGPOLLING_PORT:=8072}
proxy_mode = ${PROXY_MODE:=True}
workers = ${WORKERS:=2}
limit_time_cpu = ${LIMIT_TIME_CPU:=120}
limit_time_real = ${LIMIT_TIME_REAL:=240}
limit_memory_soft = ${LIMIT_MEMORY_SOFT:=2684354560}
limit_memory_hard = ${LIMIT_MEMORY_HARD:=6442450944}
database_from_hosts = ${DATABASE_FROM_HOSTS}
admin_passwd = ${ADMIN_PASSWORD:=admin}" > $CONF

View File

@ -1,3 +0,0 @@
#!/bin/bash
OCB/odoo-bin -c /opt/odoo/odoo.conf --stop-after-init --no-xmlrpc --language=fr_FR --i18n-overwrite --i18n-import=/opt/odoo/custom-addons/"$1"/i18n/fr.po -d "$2"

View File

@ -1,4 +1,4 @@
#!/bin/bash
cd "custom-addons/$CODE_FOLDER/$1/i18n/" && /opt/odoo/OCB/odoo-bin -c /opt/odoo/odoo.conf -d "$2" --i18n-export="$1".po --modules="$1" && mv "$1".po "$1".pot && cd /opt/odoo
cd "custom-addons/$CODE_FOLDER/$1/i18n/" && /opt/odoo/OCB/odoo-bin -c /opt/odoo/odoo.conf -d "$2" --i18n-export=fr.po --modules="$1" --language=fr_FR && cd /opt/odoo
cd "custom-addons/$CODE_FOLDER/$2/i18n/" && /opt/odoo/OCB/odoo-bin -c /opt/odoo/odoo.conf -d "$1" --i18n-export="$2".po --modules="$2" && mv "$2".po "$2".pot && cd /opt/odoo
cd "custom-addons/$CODE_FOLDER/$2/i18n/" && /opt/odoo/OCB/odoo-bin -c /opt/odoo/odoo.conf -d "$1" --i18n-export=fr.po --modules="$2" --language=fr_FR && cd /opt/odoo

View File

@ -1,8 +1,580 @@
# Configuration file for ipython.
#------------------------------------------------------------------------------
# InteractiveShellApp(Configurable) configuration
#------------------------------------------------------------------------------
## A Mixin for applications that start InteractiveShell instances.
#
# Provides configurables for loading extensions and executing files as part of
# configuring a Shell environment.
#
# The following methods should be called by the :meth:`initialize` method of the
# subclass:
#
# - :meth:`init_path`
# - :meth:`init_shell` (to be implemented by the subclass)
# - :meth:`init_gui_pylab`
# - :meth:`init_extensions`
# - :meth:`init_code`
## Execute the given command string.
#c.InteractiveShellApp.code_to_run = ''
## Run the file referenced by the PYTHONSTARTUP environment variable at IPython
# startup.
#c.InteractiveShellApp.exec_PYTHONSTARTUP = True
## List of files to run at IPython startup.
#c.InteractiveShellApp.exec_files = []
## lines of code to run at IPython startup.
#c.InteractiveShellApp.exec_lines = []
## A list of dotted module names of IPython extensions to load.
#c.InteractiveShellApp.extensions = []
## dotted module name of an IPython extension to load.
#c.InteractiveShellApp.extra_extension = ''
## A file to be run
#c.InteractiveShellApp.file_to_run = ''
## Enable GUI event loop integration with any of ('glut', 'gtk', 'gtk2', 'gtk3',
# 'osx', 'pyglet', 'qt', 'qt4', 'qt5', 'tk', 'wx', 'gtk2', 'qt4').
#c.InteractiveShellApp.gui = None
## Should variables loaded at startup (by startup files, exec_lines, etc.) be
# hidden from tools like %who?
#c.InteractiveShellApp.hide_initial_ns = True
## Configure matplotlib for interactive use with the default matplotlib backend.
#c.InteractiveShellApp.matplotlib = None
## Run the module as a script.
#c.InteractiveShellApp.module_to_run = ''
## Pre-load matplotlib and numpy for interactive use, selecting a particular
# matplotlib backend and loop integration.
#c.InteractiveShellApp.pylab = None
## If true, IPython will populate the user namespace with numpy, pylab, etc. and
# an ``import *`` is done from numpy and pylab, when using pylab mode.
#
# When False, pylab mode should not import any names into the user namespace.
#c.InteractiveShellApp.pylab_import_all = True
## Reraise exceptions encountered loading IPython extensions?
#c.InteractiveShellApp.reraise_ipython_extension_failures = False
#------------------------------------------------------------------------------
# Application(SingletonConfigurable) configuration
#------------------------------------------------------------------------------
## This is an application.
## The date format used by logging formatters for %(asctime)s
#c.Application.log_datefmt = '%Y-%m-%d %H:%M:%S'
## The Logging format template
#c.Application.log_format = '[%(name)s]%(highlevel)s %(message)s'
## Set the log level by value or name.
#c.Application.log_level = 30
#------------------------------------------------------------------------------
# BaseIPythonApplication(Application) configuration
#------------------------------------------------------------------------------
## IPython: an enhanced interactive Python shell.
## Whether to create profile dir if it doesn't exist
#c.BaseIPythonApplication.auto_create = False
## Whether to install the default config files into the profile dir. If a new
# profile is being created, and IPython contains config files for that profile,
# then they will be staged into the new directory. Otherwise, default config
# files will be automatically generated.
#c.BaseIPythonApplication.copy_config_files = False
## Path to an extra config file to load.
#
# If specified, load this config file in addition to any other IPython config.
#c.BaseIPythonApplication.extra_config_file = u''
## The name of the IPython directory. This directory is used for logging
# configuration (through profiles), history storage, etc. The default is usually
# $HOME/.ipython. This option can also be specified through the environment
# variable IPYTHONDIR.
#c.BaseIPythonApplication.ipython_dir = u''
## Whether to overwrite existing config files when copying
#c.BaseIPythonApplication.overwrite = False
## The IPython profile to use.
#c.BaseIPythonApplication.profile = u'default'
## Create a massive crash report when IPython encounters what may be an internal
# error. The default is to append a short message to the usual traceback
#c.BaseIPythonApplication.verbose_crash = False
#------------------------------------------------------------------------------
# TerminalIPythonApp(BaseIPythonApplication,InteractiveShellApp) configuration
#------------------------------------------------------------------------------
## Whether to display a banner upon starting IPython.
#c.TerminalIPythonApp.display_banner = True
## If a command or file is given via the command-line, e.g. 'ipython foo.py',
# start an interactive shell after executing the file or command.
#c.TerminalIPythonApp.force_interact = False
## Class to use to instantiate the TerminalInteractiveShell object. Useful for
# custom Frontends
#c.TerminalIPythonApp.interactive_shell_class = 'IPython.terminal.interactiveshell.TerminalInteractiveShell'
## Start IPython quickly by skipping the loading of config files.
#c.TerminalIPythonApp.quick = False
#------------------------------------------------------------------------------
# InteractiveShell(SingletonConfigurable) configuration
#------------------------------------------------------------------------------
## An enhanced, interactive shell for Python.
## 'all', 'last', 'last_expr' or 'none', specifying which nodes should be run
# interactively (displaying output from expressions).
#c.InteractiveShell.ast_node_interactivity = 'last_expr'
## A list of ast.NodeTransformer subclass instances, which will be applied to
# user input before code is run.
#c.InteractiveShell.ast_transformers = []
## Make IPython automatically call any callable object even if you didn't type
# explicit parentheses. For example, 'str 43' becomes 'str(43)' automatically.
# The value can be '0' to disable the feature, '1' for 'smart' autocall, where
# it is not applied if there are no more arguments on the line, and '2' for
# 'full' autocall, where all callable objects are automatically called (even if
# no arguments are present).
#c.InteractiveShell.autocall = 0
## Autoindent IPython code entered interactively.
#c.InteractiveShell.autoindent = True
## Enable magic commands to be called without the leading %.
#c.InteractiveShell.automagic = True
## The part of the banner to be printed before the profile
#c.InteractiveShell.banner1 = 'Python 2.7.5 (default, Apr 2 2020, 13:16:51) \nType "copyright", "credits" or "license" for more information.\n\nIPython 5.10.0 -- An enhanced Interactive Python.\n? -> Introduction and overview of IPython\'s features.\n%quickref -> Quick reference.\nhelp -> Python\'s own help system.\nobject? -> Details about \'object\', use \'object??\' for extra details.\n'
## The part of the banner to be printed after the profile
#c.InteractiveShell.banner2 = ''
## Set the size of the output cache. The default is 1000, you can change it
# permanently in your config file. Setting it to 0 completely disables the
# caching system, and the minimum value accepted is 20 (if you provide a value
# less than 20, it is reset to 0 and a warning is issued). This limit is
# defined because otherwise you'll spend more time re-flushing a too small cache
# than working
#c.InteractiveShell.cache_size = 1000
## Use colors for displaying information about objects. Because this information
# is passed through a pager (like 'less'), and some pagers get confused with
# color codes, this capability can be turned off.
#c.InteractiveShell.color_info = True
## Set the color scheme (NoColor, Neutral, Linux, or LightBG).
#c.InteractiveShell.colors = 'Neutral'
c.InteractiveShell.colors = 'Neutral'
c.InteractiveShell.colors = 'Linux'
##
#c.InteractiveShell.debug = False
## **Deprecated**
#
# Will be removed in IPython 6.0
#
# Enable deep (recursive) reloading by default. IPython can use the deep_reload
# module which reloads changes in modules recursively (it replaces the reload()
# function, so you don't need to change anything to use it). `deep_reload`
# forces a full reload of modules whose code may have changed, which the default
# reload() function does not. When deep_reload is off, IPython will use the
# normal reload(), but deep_reload will still be available as dreload().
#c.InteractiveShell.deep_reload = False
## Don't call post-execute functions that have failed in the past.
#c.InteractiveShell.disable_failing_post_execute = False
## If True, anything that would be passed to the pager will be displayed as
# regular output instead.
#c.InteractiveShell.display_page = False
## (Provisional API) enables html representation in mime bundles sent to pagers.
#c.InteractiveShell.enable_html_pager = False
## Total length of command history
#c.InteractiveShell.history_length = 10000
## The number of saved history entries to be loaded into the history buffer at
# startup.
#c.InteractiveShell.history_load_length = 1000
##
#c.InteractiveShell.ipython_dir = ''
## Start logging to the given file in append mode. Use `logfile` to specify a log
# file to **overwrite** logs to.
#c.InteractiveShell.logappend = ''
## The name of the logfile to use.
#c.InteractiveShell.logfile = ''
## Start logging to the default log file in overwrite mode. Use `logappend` to
# specify a log file to **append** logs to.
#c.InteractiveShell.logstart = False
##
#c.InteractiveShell.object_info_string_level = 0
## Automatically call the pdb debugger after every exception.
#c.InteractiveShell.pdb = False
## Deprecated since IPython 4.0 and ignored since 5.0, set
# TerminalInteractiveShell.prompts object directly.
#c.InteractiveShell.prompt_in1 = 'In [\\#]: '
## Deprecated since IPython 4.0 and ignored since 5.0, set
# TerminalInteractiveShell.prompts object directly.
#c.InteractiveShell.prompt_in2 = ' .\\D.: '
## Deprecated since IPython 4.0 and ignored since 5.0, set
# TerminalInteractiveShell.prompts object directly.
#c.InteractiveShell.prompt_out = 'Out[\\#]: '
## Deprecated since IPython 4.0 and ignored since 5.0, set
# TerminalInteractiveShell.prompts object directly.
#c.InteractiveShell.prompts_pad_left = True
##
#c.InteractiveShell.quiet = False
##
#c.InteractiveShell.separate_in = '\n'
##
#c.InteractiveShell.separate_out = ''
##
#c.InteractiveShell.separate_out2 = ''
## Show rewritten input, e.g. for autocall.
#c.InteractiveShell.show_rewritten_input = True
## Enables rich html representation of docstrings. (This requires the docrepr
# module).
#c.InteractiveShell.sphinxify_docstring = False
##
#c.InteractiveShell.wildcards_case_sensitive = True
##
#c.InteractiveShell.xmode = 'Context'
#------------------------------------------------------------------------------
# TerminalInteractiveShell(InteractiveShell) configuration
#------------------------------------------------------------------------------
## Set to confirm when you try to exit IPython with an EOF (Control-D in Unix,
# Control-Z/Enter in Windows). By typing 'exit' or 'quit', you can force a
# direct exit without any confirmation.
#c.TerminalInteractiveShell.confirm_exit = True
## Options for displaying tab completions, 'column', 'multicolumn', and
# 'readlinelike'. These options are for `prompt_toolkit`, see `prompt_toolkit`
# documentation for more information.
#c.TerminalInteractiveShell.display_completions = 'multicolumn'
## Shortcut style to use at the prompt. 'vi' or 'emacs'.
#c.TerminalInteractiveShell.editing_mode = 'emacs'
c.TerminalInteractiveShell.editing_mode = 'vi'
## Set the editor used by IPython (default to $EDITOR/vi/notepad).
#c.TerminalInteractiveShell.editor = 'vi'
## Enable vi (v) or Emacs (C-X C-E) shortcuts to open an external editor. This is
# in addition to the F2 binding, which is always enabled.
#c.TerminalInteractiveShell.extra_open_editor_shortcuts = False
## Highlight matching brackets.
#c.TerminalInteractiveShell.highlight_matching_brackets = True
## The name or class of a Pygments style to use for syntax highlighting. To see
# available styles, run `pygmentize -L styles`.
#c.TerminalInteractiveShell.highlighting_style = traitlets.Undefined
## Override highlighting format for specific tokens
#c.TerminalInteractiveShell.highlighting_style_overrides = {}
## Enable mouse support in the prompt
#c.TerminalInteractiveShell.mouse_support = False
## Class used to generate Prompt token for prompt_toolkit
#c.TerminalInteractiveShell.prompts_class = 'IPython.terminal.prompts.Prompts'
## Use `raw_input` for the REPL, without completion and prompt colors.
#
# Useful when controlling IPython as a subprocess, and piping STDIN/OUT/ERR.
# Known usage are: IPython own testing machinery, and emacs inferior-shell
# integration through elpy.
#
# This mode default to `True` if the `IPY_TEST_SIMPLE_PROMPT` environment
# variable is set, or the current terminal is not a tty.
#c.TerminalInteractiveShell.simple_prompt = False
## Number of line at the bottom of the screen to reserve for the completion menu
#c.TerminalInteractiveShell.space_for_menu = 6
## Automatically set the terminal title
#c.TerminalInteractiveShell.term_title = True
## Use 24bit colors instead of 256 colors in prompt highlighting. If your
# terminal supports true color, the following command should print 'TRUECOLOR'
# in orange: printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"
#c.TerminalInteractiveShell.true_color = False
#------------------------------------------------------------------------------
# HistoryAccessor(HistoryAccessorBase) configuration
#------------------------------------------------------------------------------
## Access the history database without adding to it.
#
# This is intended for use by standalone history tools. IPython shells use
# HistoryManager, below, which is a subclass of this.
## Options for configuring the SQLite connection
#
# These options are passed as keyword args to sqlite3.connect when establishing
# database conenctions.
#c.HistoryAccessor.connection_options = {}
## enable the SQLite history
#
# set enabled=False to disable the SQLite history, in which case there will be
# no stored history, no SQLite connection, and no background saving thread.
# This may be necessary in some threaded environments where IPython is embedded.
#c.HistoryAccessor.enabled = True
## Path to file to use for SQLite history database.
#
# By default, IPython will put the history database in the IPython profile
# directory. If you would rather share one history among profiles, you can set
# this value in each, so that they are consistent.
#
# Due to an issue with fcntl, SQLite is known to misbehave on some NFS mounts.
# If you see IPython hanging, try setting this to something on a local disk,
# e.g::
#
# ipython --HistoryManager.hist_file=/tmp/ipython_hist.sqlite
#
# you can also use the specific value `:memory:` (including the colon at both
# end but not the back ticks), to avoid creating an history file.
#c.HistoryAccessor.hist_file = u''
#------------------------------------------------------------------------------
# HistoryManager(HistoryAccessor) configuration
#------------------------------------------------------------------------------
## A class to organize all history-related functionality in one place.
## Write to database every x commands (higher values save disk access & power).
# Values of 1 or less effectively disable caching.
#c.HistoryManager.db_cache_size = 0
## Should the history database include output? (default: no)
#c.HistoryManager.db_log_output = False
#------------------------------------------------------------------------------
# ProfileDir(LoggingConfigurable) configuration
#------------------------------------------------------------------------------
## An object to manage the profile directory and its resources.
#
# The profile directory is used by all IPython applications, to manage
# configuration, logging and security.
#
# This object knows how to find, create and manage these directories. This
# should be used by any code that wants to handle profiles.
## Set the profile location directly. This overrides the logic used by the
# `profile` option.
#c.ProfileDir.location = u''
#------------------------------------------------------------------------------
# BaseFormatter(Configurable) configuration
#------------------------------------------------------------------------------
## A base formatter class that is configurable.
#
# This formatter should usually be used as the base class of all formatters. It
# is a traited :class:`Configurable` class and includes an extensible API for
# users to determine how their objects are formatted. The following logic is
# used to find a function to format an given object.
#
# 1. The object is introspected to see if it has a method with the name
# :attr:`print_method`. If is does, that object is passed to that method
# for formatting.
# 2. If no print method is found, three internal dictionaries are consulted
# to find print method: :attr:`singleton_printers`, :attr:`type_printers`
# and :attr:`deferred_printers`.
#
# Users should use these dictionaries to register functions that will be used to
# compute the format data for their objects (if those objects don't have the
# special print methods). The easiest way of using these dictionaries is through
# the :meth:`for_type` and :meth:`for_type_by_name` methods.
#
# If no function/callable is found to compute the format data, ``None`` is
# returned and this format type is not used.
##
#c.BaseFormatter.deferred_printers = {}
##
#c.BaseFormatter.enabled = True
##
#c.BaseFormatter.singleton_printers = {}
##
#c.BaseFormatter.type_printers = {}
#------------------------------------------------------------------------------
# PlainTextFormatter(BaseFormatter) configuration
#------------------------------------------------------------------------------
## The default pretty-printer.
#
# This uses :mod:`IPython.lib.pretty` to compute the format data of the object.
# If the object cannot be pretty printed, :func:`repr` is used. See the
# documentation of :mod:`IPython.lib.pretty` for details on how to write pretty
# printers. Here is a simple example::
#
# def dtype_pprinter(obj, p, cycle):
# if cycle:
# return p.text('dtype(...)')
# if hasattr(obj, 'fields'):
# if obj.fields is None:
# p.text(repr(obj))
# else:
# p.begin_group(7, 'dtype([')
# for i, field in enumerate(obj.descr):
# if i > 0:
# p.text(',')
# p.breakable()
# p.pretty(field)
# p.end_group(7, '])')
##
#c.PlainTextFormatter.float_precision = ''
## Truncate large collections (lists, dicts, tuples, sets) to this size.
#
# Set to 0 to disable truncation.
#c.PlainTextFormatter.max_seq_length = 1000
##
#c.PlainTextFormatter.max_width = 79
##
#c.PlainTextFormatter.newline = '\n'
##
#c.PlainTextFormatter.pprint = True
##
#c.PlainTextFormatter.verbose = False
#------------------------------------------------------------------------------
# Completer(Configurable) configuration
#------------------------------------------------------------------------------
## Enable unicode completions, e.g. \alpha<tab> . Includes completion of latex
# commands, unicode names, and expanding unicode characters back to latex
# commands.
#c.Completer.backslash_combining_completions = True
## Activate greedy completion PENDING DEPRECTION. this is now mostly taken care
# of with Jedi.
#
# This will enable completion on elements of lists, results of function calls,
# etc., but can be unsafe because the code is actually evaluated on TAB.
#c.Completer.greedy = False
#------------------------------------------------------------------------------
# IPCompleter(Completer) configuration
#------------------------------------------------------------------------------
## Extension of the completer class with IPython-specific features
## DEPRECATED as of version 5.0.
#
# Instruct the completer to use __all__ for the completion
#
# Specifically, when completing on ``object.<tab>``.
#
# When True: only those names in obj.__all__ will be included.
#
# When False [default]: the __all__ attribute is ignored
#c.IPCompleter.limit_to__all__ = False
## Whether to merge completion results into a single list
#
# If False, only the completion results from the first non-empty completer will
# be returned.
#c.IPCompleter.merge_completions = True
## Instruct the completer to omit private method names
#
# Specifically, when completing on ``object.<tab>``.
#
# When 2 [default]: all names that start with '_' will be excluded.
#
# When 1: all 'magic' names (``__foo__``) will be excluded.
#
# When 0: nothing will be excluded.
#c.IPCompleter.omit__names = 2
#------------------------------------------------------------------------------
# ScriptMagics(Magics) configuration
#------------------------------------------------------------------------------
## Magics for talking to scripts
#
# This defines a base `%%script` cell magic for running a cell with a program in
# a subprocess, and registers a few top-level magics that call %%script with
# common interpreters.
## Extra script cell magics to define
#
# This generates simple wrappers of `%%script foo` as `%%foo`.
#
# If you want to add script magics that aren't on your path, specify them in
# script_paths
#c.ScriptMagics.script_magics = []
## Dict mapping short 'ruby' names to full paths, such as '/opt/secret/bin/ruby'
#
# Only necessary for items in script_magics where the default path will not find
# the right interpreter.
#c.ScriptMagics.script_paths = {}
#------------------------------------------------------------------------------
# StoreMagics(Magics) configuration
#------------------------------------------------------------------------------
## Lightweight persistence for python variables.
#
# Provides the %store magic.
## If True, any %store-d variables will be automatically restored when IPython
# starts.
#c.StoreMagics.autorestore = False

View File

@ -1,6 +0,0 @@
[pgdg96-archive]
name=PostgreSQL 9.6 RPMs for RHEL/CentOS 8
baseurl=https://yum-archive.postgresql.org/9.6/redhat/rhel-8-x86_64
enabled=1
gpgcheck=1
gpgkey=https://yum.postgresql.org/keys/RPM-GPG-KEY-PGDG

View File

@ -1,3 +0,0 @@
#!/bin/bash
OCB/odoo-bin -c /opt/odoo/odoo.conf --stop-after-init --no-xmlrpc -u "$1" -d "$2"

View File

@ -25,26 +25,3 @@ services:
dockerfile: Dockerfile.openupgrade.12
image: registry.yaltik.net/odoodev:yaltikopenupgrade12
openupgrade13:
build:
context: ./odoo
dockerfile: Dockerfile.openupgrade.13
image: registry.yaltik.net/odoodev:yaltikopenupgrade13
openupgrade14:
build:
context: ./odoo
dockerfile: Dockerfile.openupgrade.14
image: registry.yaltik.net/odoodev:yaltikopenupgrade14
openupgrade15:
build:
context: ./odoo
dockerfile: Dockerfile.openupgrade.15
image: registry.yaltik.net/odoodev:yaltikopenupgrade15
openupgrade16:
build:
context: ./odoo
dockerfile: Dockerfile.openupgrade.16
image: registry.yaltik.net/odoodev:yaltikopenupgrade16

View File

@ -7,32 +7,8 @@ services:
dockerfile: Dockerfile.py3o.10.centos7
image: registry.yaltik.net/odoo:yaltikpy3o10c7
odoopy3o10c8:
build:
context: ./odoo
dockerfile: Dockerfile.py3o.10.centos8
image: registry.yaltik.net/odoo:yaltikpy3o10c8
odoopy3o16:
build:
context: ./odoo
dockerfile: Dockerfile.py3o.16
image: registry.yaltik.net/odoo:yaltikpy3o16
odoodevpy3o10c7:
build:
context: ./odoo
dockerfile: Dockerfile.py3o.10.centos7.dev
image: registry.yaltik.net/odoodev:yaltikpy3o10c7
odoodevpy3o10c8:
build:
context: ./odoo
dockerfile: Dockerfile.py3o.10.centos8.dev
image: registry.yaltik.net/odoodev:yaltikpy3o10c8
odoodevpy3o16:
build:
context: ./odoo
dockerfile: Dockerfile.py3o.16.dev
image: registry.yaltik.net/odoodev:yaltikpy3o16

View File

@ -1,11 +1,11 @@
FROM oraclelinux:7
FROM centos:7
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
# EPEL for PIP
RUN yum -y install oracle-epel-release-el7 && \
yum -y install python2-pip && \
RUN yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && \
yum --enablerepo=epel -y install python-pip && \
yum clean all && \
pip install --no-cache-dir --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org odoorpc==0.8.0
pip install --no-cache-dir odoorpc==0.8.0
# Useradd
RUN useradd odoo -m -s /bin/bash

View File

@ -22,16 +22,15 @@ def dump(odoo, args):
dumpf = odoo.db.dump(args.password, dbname, args.format)
else:
conn = httplib.HTTPConnection(args.host, args.port)
headers = {'User-Agent': ('Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) '
'Gecko/20100101 Firefox/24.0'),
'Accept': 'text/plain'}
if odoo.version != '8.0':
params = urllib.urlencode({'master_pwd': args.password,
'name': dbname,
'backup_format': args.format})
headers['Content-type'] = 'application/x-www-form-urlencoded'
headers = {"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"}
conn.request('POST', '/web/database/backup', params, headers)
else:
headers = {"Accept": "text/plain"}
url = (u'/web/database/backup?backup_pwd=%s&backup_db=%s'
'&backup_format=%s&token=') % (args.password, dbname, args.format)
conn.request('GET', url, '', headers)

View File

@ -1,5 +0,0 @@
FROM postgres:13
LABEL maintainer="Yaltik - Fabien Bourgeois <fabien@yaltik.com>"
RUN localedef -i fr_FR -c -f UTF-8 -A /usr/share/locale/locale.alias fr_FR.UTF-8
ENV LANG fr_FR.utf8

View File

@ -30,11 +30,6 @@ services:
context: .
dockerfile: Dockerfile.12
image: registry.yaltik.net/postgres:yaltik12
postgres13:
build:
context: .
dockerfile: Dockerfile.13
image: registry.yaltik.net/postgres:yaltik13
postgres14:
build:
context: .

View File

@ -1,5 +1,8 @@
version: '2.4'
services:
radicale:
build: .
image: registry.yaltik.net/radicale:yaltik
radicalec7:
build:
context: .

View File

@ -9,9 +9,9 @@ from requests import get, post
from config import HC_ROOT, CONFIG
def check_domain(domain, timeout):
def check_domain(domain):
try:
r = get('https://%s' % domain, timeout=timeout)
r = get('https://%s' % domain)
except Exception as e:
return (e, 0)
return (r.status_code, r.elapsed)
@ -29,7 +29,7 @@ for check_item in CONFIG:
fail = False
data = []
for domain in check_item['domains']:
(status, timed) = check_domain(domain, check_item.get('timeout', 9))
(status, timed) = check_domain(domain)
if not fail and status != 200:
fail = True
if isinstance(status, Exception):