1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/libreerp_ynh.git synced 2024-09-03 19:36:13 +02:00

[enh] Support Odoo 10.0

This commit is contained in:
ljf 2017-05-18 23:28:18 +02:00
parent cdeb9afbf2
commit 7e90882712
14 changed files with 586 additions and 281 deletions

View file

@ -22,10 +22,8 @@ https://example.com/odoo/ will NOT work
What does not work
------------------
- Automatic database creation (experimental)
- Backup and restore via Odoo (works with a trick shared on the Github)
- Backup and restore via YunoHost
- Automatic LDAP configuration
Still to do
-----------
@ -37,18 +35,6 @@ Still to do
Configuration
-------------
**Create the database manually**
- The database must be named "*subdomain-domain-tld*" (for example *erp-test-com* if you access the database via *erp.test.com*
**Setup LDAP**
- Create a user named "template" with email "template". This user will give its permissions by default to YunoHost users so you can also give it appropriate permissions.
- In "Edit Company Data" (on the logo), go to "Configuration" and add a LDAP setting
- LDAP Address: localhost
- LDAP Port: 389
- LDAP Base: ou=users, dc=yunohost,dc=org
- LDAP filter: uid=%s
- Template user: template
- Save
**Backup via Odoo**
- In YunoHost, open the port 8069

37
check_process Normal file
View file

@ -0,0 +1,37 @@
;; Test complet sans multisite
auto_remove=1
; Manifest
domain="domain.tld" (DOMAIN)
version="10.0"
oca=0
admin_password="testpassw0rD"
lang="en_US"
tz="Europe/Paris"
; Checks
pkg_linter=1
setup_sub_dir=0
setup_root=1
setup_nourl=0
setup_private=0
setup_public=1
upgrade=1
backup_restore=1
multi_instance=1
wrong_user=0
wrong_path=0
incorrect_path=0
corrupt_source=1
fail_download_source=1
port_already_use=1
final_path_already_use=0
;;; Levels
Level 1=auto
Level 2=auto
Level 3=auto
Level 4=0
Level 5=auto
Level 6=auto
Level 7=auto
Level 8=0
Level 9=0
Level 10=0

5
conf/app.src Normal file
View file

@ -0,0 +1,5 @@
SOURCE_URL=http://download.gna.org/wkhtmltopdf/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
SOURCE_SUM=049b2cdec9a8254f0ef8ac273afaf54f7e25459a273e27189591edc7d7cf29db
SOURCE_FILE=wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
SOURCE_FORMAT=tar.xz
SOURCE_SUM_PRG=sha256sum

View file

@ -1,4 +0,0 @@
#!/usr/bin/python
import oerplib
oerp = oerplib.OERP(server='localhost', protocol='xmlrpc', port=8069)
oerp.db.create_database('ADMIN_PASSWORD', 'DOMAIN_DATABASE', False, 'DATABASE_LANG', 'DATABASE_PASSWORD')

View file

@ -2,10 +2,10 @@ location / {
if ($scheme = http) {
rewrite ^ https://$server_name$request_uri? permanent;
}
try_files $uri @#YNH_APP_INSTANCE_NAME#;
try_files $uri @{{ app }};
}
location @#YNH_APP_INSTANCE_NAME# {
proxy_pass http://127.0.0.1:8069;
location @{{ app }} {
proxy_pass http://127.0.0.1:{{ port }};
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_buffers 16 64k;
proxy_buffer_size 128k;

View file

@ -1,11 +1,11 @@
[options]
; This is the password that allows database operations:
without_demo = all
admin_passwd = ADMIN_PASSWORD
admin_passwd = {{ admin_password }}
db_host = false
db_port = false
db_user = odoo
db_password = DATABASE_PASSWORD
addons_path = /usr/lib/python2.7/dist-packages/openerp/addons
db_password = {{ dbpass }}
addons_path = {{ source_path }}addons
proxy_mode = true
dbfilter = %h

View file

@ -10,10 +10,11 @@
"name": "scith, ljf",
"email": "ljf+yunohost@grimaud.me"
},
"version": "10.0-1",
"url": "https://www.odoo.com",
"license": "free",
"license": "LGPL-3.0",
"requirements": {
"yunohost": ">= 2.4.0"
"yunohost": ">= 2.6.0"
},
"multi_instance": true,
"services": [

View file

@ -4,113 +4,121 @@
APPNAME="odoo"
# Package name for dependencies
DEPS_PKG_NAME="${APPNAME}-deps"
# Remote URL to fetch tarball
SOURCE_URL="http://download.gna.org/wkhtmltopdf/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz"
# Remote URL to fetch tarball checksum
SOURCE_SHA256="049b2cdec9a8254f0ef8ac273afaf54f7e25459a273e27189591edc7d7cf29db"
# App package root directory should be the parent folder
PKGDIR=$(cd ../; pwd)
#
# Common helpers
#
# # Execute a command as root user
#
# usage: ynh_psql_execute_as_root sql [db]
# | arg: sql - the SQL command to execute
# | arg: db - the database to connect to
ynh_psql_execute_as_root () {
sudo su -c "psql" - postgres <<< ${1}
}
# Create a user
#
# usage: ynh_psql_create_user user pwd [host]
# | arg: user - the user name to create
# | arg: pwd - the password to identify user by
ynh_psql_create_user() {
ynh_psql_execute_as_root \
"CREATE USER ${1} WITH PASSWORD '${2}';"
}
# Create a database and grant optionnaly privilegies to a user
#
# usage: ynh_psql_create_db db [user [pwd]]
# | arg: db - the database name to create
# | arg: user - the user to grant privilegies
# | arg: pwd - the password to identify user by
ynh_psql_create_db() {
db=$1
# grant all privilegies to user
if [[ $# -gt 1 ]]; then
ynh_psql_create_user ${2} "${3}"
sudo su -c "createdb -O ${2} $db" - postgres
function define_paths() {
# In odoo 10 some file change
if [ $(echo "$odoo_version >= 10" | bc) -ne 0 ]; then
export source_path=/usr/lib/python2.7/dist-packages/odoo/
conf_file=/etc/odoo/odoo.conf
bin_file=/usr/bin/odoo
else
sudo su -c "createdb $db" - postgres
fi
}
# Drop a database
#
# usage: ynh_psql_drop_db db
# | arg: db - the database name to drop
ynh_psql_drop_db() {
sudo su -c "dropdb ${1}" - postgres
}
# Drop a user
#
# usage: ynh_psql_drop_user user
# | arg: user - the user name to drop
ynh_psql_drop_user() {
sudo su -c "dropuser ${1}" - postgres
}
# Download and extract sources to the given directory
# usage: extract_sources DESTDIR [AS_USER]
extract_sources() {
local DESTDIR=$1
local AS_USER=${2:-admin}
# retrieve and extract Roundcube tarball
tarball="/tmp/${APPNAME}.tar.xz"
rm -f "$tarball"
wget -q -O "$tarball" "$SOURCE_URL" \
|| ynh_die "Unable to download tarball"
echo "$SOURCE_SHA256 $tarball" | sha256sum -c >/dev/null \
|| ynh_die "Invalid checksum of downloaded tarball"
exec_as "$AS_USER" tar xJf "$tarball" -C "$DESTDIR" --strip-components 1 \
|| ynh_die "Unable to extract tarball"
rm -f "$tarball"
# apply patches
if [[ -d "${PKGDIR}/patches" ]]; then
(cd "$DESTDIR" \
&& for p in ${PKGDIR}/patches/*.patch; do \
exec_as "$AS_USER" patch -p1 < $p; done) \
|| ynh_die "Unable to apply patches"
export source_path=/usr/lib/python2.7/dist-packages/openerp/
conf_file=/etc/odoo/openerp-server.conf
bin_file=/usr/bin/openerp-server
fi
}
# Execute a command as another user
# usage: exec_as USER COMMAND [ARG ...]
exec_as() {
local USER=$1
shift 1
if [[ $USER = $(whoami) ]]; then
eval "$@"
function check_odoo_version () {
if [ $(echo "$odoo_version >= 10" | bc) -ne 0 ]; then
if [ -f /usr/bin/openerp-server ]; then
ynh_die "Another version of odoo is installed"
fi
else
# use sudo twice to be root and be allowed to use another user
sudo sudo -u "$USER" "$@"
if [ -f /usr/bin/odoo ]; then
ynh_die "Another version of odoo is installed"
fi
fi
}
function define_is_master() {
if [ -f $bin_file ]; then
export is_master=false
else
export is_master=true
fi
}
function define_port () {
if [ "$is_master" = true ]; then
export port=$(ynh_find_port 8069)
yunohost app checkport $port
if [[ ! $? -eq 0 ]]; then
ynh_die "Port 8069 unavailable" 1
fi
else
# FIXME find master port
export port="8069"
fi
}
function define_dbpass () {
# TODO set -x
if [ "$is_master" = true ]; then
# Generate random password
if [ "${1:-}" = "restore" ]; then
export dbpass=$(ynh_app_setting_get $app psqlpwd)
else
export dbpass=$(ynh_string_random)
fi
else
export dbpass=$(grep db_password /etc/odoo/odoo.conf | cut -d \= -f 2 | sed -e 's/^[ \t]*//')
fi
ynh_app_setting_set "$app" psqlpwd "$dbpass"
}
# Install dependencies
function install_dependencies() {
if [ ! -f /etc/apt/sources.list.d/odoo.list ]; then
# Install Odoo
# Prepare installation
ynh_package_install curl
# Install Odoo
curl -sS https://nightly.odoo.com/odoo.key | sudo apt-key add -
sh -c "echo 'deb http://nightly.odoo.com/${odoo_version}/nightly/deb/ ./' > /etc/apt/sources.list.d/odoo.list"
# TODO if 8.0 install https://www.odoo.com/apps/modules/8.0/shell/
fi
apt-get update
ynh_install_app_dependencies curl postgresql odoo xfonts-75dpi xfonts-base wkhtmltopdf node-less python-xlrd
if ! wkhtmltopdf --version | grep "wkhtmltopdf 0.12.4 (with patched qt)"; then
# The debian package has a bug so we deploy a more recent version
ynh_setup_source /usr/
fi
}
# Create db
function create_general_db() {
service postgresql reload
if ! su -c "psql -lqt | cut -d \| -f 1 " - postgres | grep $APPNAME; then
# Generate random password
ynh_psql_execute_as_root "ALTER USER $APPNAME WITH CREATEDB;"
ynh_psql_execute_as_root "ALTER USER $APPNAME WITH PASSWORD '$dbpass';"
su -c "createdb -O $APPNAME $APPNAME" - postgres
fi
}
# Add services
function add_services() {
if ! grep "^postgresql:$" /etc/yunohost/services.yml; then
yunohost service add postgresql
fi
if ! grep "^odoo:$" /etc/yunohost/services.yml; then
yunohost service add odoo --log /var/log/odoo/odoo-server.log
yunohost service stop odoo
yunohost service start odoo
fi
}
function ssowat_and_restart() {
# Restart odoo service
service odoo restart
# Configure SSOWat
ynh_sso_access "/web/database/manager"
# Reload services
service nginx reload
}

205
scripts/_future.sh Normal file
View file

@ -0,0 +1,205 @@
log() {
echo "${1}"
}
info() {
log "[INFO] ${1}"
}
warn() {
log "[WARN] ${1}"
}
err() {
log "[ERR] ${1}"
}
ynh_check_var () {
test -n "$1" || ynh_die "$2"
}
ynh_exit_properly () {
exit_code=$?
if [ "$exit_code" -eq 0 ]; then
exit 0
fi
trap '' EXIT
set +eu
echo -e "\e[91m \e[1m"
err "$app script has encountered an error."
if type -t CLEAN_SETUP > /dev/null; then
CLEAN_SETUP
fi
ynh_die
}
# Activate signal capture
# Exit if a command fail, and if a variable is used unset.
# Capturing exit signals on shell script
#
# example: CLEAN_SETUP () {
# # Clean residual file un remove by remove script
# }
# ynh_trap_on
ynh_trap_on () {
set -eu
trap ynh_exit_properly EXIT # Capturing exit signals on shell script
}
ynh_export () {
local ynh_arg=""
for var in $@;
do
ynh_arg=$(echo $var | awk '{print toupper($0)}')
ynh_arg="YNH_APP_ARG_$ynh_arg"
export $var=${!ynh_arg}
done
}
# Save listed var in YunoHost app settings
# usage: ynh_save_args VARNAME1 [VARNAME2 [...]]
ynh_save_args () {
for var in $@;
do
ynh_app_setting_set $app $var ${!var}
done
}
ynh_sso_access () {
ynh_app_setting_set $app unprotected_uris "/"
if [[ $is_public -eq 0 ]]; then
ynh_app_setting_set $app protected_uris "$1"
fi
sudo yunohost app ssowatconf
}
ynh_configure () {
local TEMPLATE=$1
local DEST=$2
type j2 2>/dev/null || sudo pip install j2cli
j2 "${YNH_CWD}/../conf/$TEMPLATE.j2" > "${YNH_CWD}/../conf/$TEMPLATE"
sudo cp "${YNH_CWD}/../conf/$TEMPLATE" "$DEST"
}
ynh_configure_nginx () {
ynh_configure nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
sudo service nginx reload
}
# Find a free port and return it
#
# example: port=$(ynh_find_port 8080)
#
# usage: ynh_find_port begin_port
# | arg: begin_port - port to start to search
ynh_find_port () {
port=$1
test -n "$port" || ynh_die "The argument of ynh_find_port must be a valid port."
while netcat -z 127.0.0.1 $port # Check if the port is free
do
port=$((port+1)) # Else, pass to next port
done
echo $port
}
ynh_rm_nginx_conf () {
if [ -e "/etc/nginx/conf.d/$domain.d/$app.conf" ]; then
sudo rm "/etc/nginx/conf.d/$domain.d/$app.conf"
sudo service nginx reload
fi
}
ynh_secure_rm () {
[[ "/var/www /opt /home/yunohost.app" =~ $1 ]] \
|| (test -n "$1" && sudo rm -Rf $1 )
}
# Upgrade
ynh_read_json () {
python3 -c "import sys, json;print(json.load(open('$1'))['$2'])"
}
ynh_read_manifest () {
if [ -f '../manifest.json' ] ; then
ynh_read_json '../manifest.json' "$1"
else
ynh_read_json '../settings/manifest.json' "$1"
fi
}
ynh_exit_if_up_to_date () {
if [ "${version}" = "${last_version}" ]; then
info "Up-to-date, nothing to do"
exit 0
fi
}
# # Execute a command as root user
#
# usage: ynh_psql_execute_as_root sql [db]
# | arg: sql - the SQL command to execute
# | arg: db - the database to connect to
ynh_psql_execute_as_root () {
sudo su -c "psql" - postgres <<< ${1}
}
# Create a user
#
# usage: ynh_psql_create_user user pwd [host]
# | arg: user - the user name to create
# | arg: pwd - the password to identify user by
ynh_psql_create_user() {
ynh_psql_execute_as_root \
"CREATE USER ${1} WITH PASSWORD '${2}';"
}
# Create a database and grant optionnaly privilegies to a user
#
# usage: ynh_psql_create_db db [user [pwd]]
# | arg: db - the database name to create
# | arg: user - the user to grant privilegies
# | arg: pwd - the password to identify user by
ynh_psql_create_db() {
db=$1
# grant all privilegies to user
if [[ $# -gt 1 ]]; then
ynh_psql_create_user ${2} "${3}"
sudo su -c "createdb -O ${2} $db" - postgres
else
sudo su -c "createdb $db" - postgres
fi
}
# Drop a database
#
# usage: ynh_psql_drop_db db
# | arg: db - the database name to drop
ynh_psql_drop_db() {
sudo su -c "dropdb ${1}" - postgres
}
# Drop a user
#
# usage: ynh_psql_drop_user user
# | arg: user - the user name to drop
ynh_psql_drop_user() {
sudo su -c "dropuser ${1}" - postgres
}
# Execute a command as another user
# usage: exec_as USER COMMAND [ARG ...]
exec_as() {
local USER=$1
shift 1
if [[ $USER = $(whoami) ]]; then
eval "$@"
else
# use sudo twice to be root and be allowed to use another user
sudo sudo -u "$USER" "$@"
fi
}

View file

@ -3,22 +3,28 @@
# Exit on command errors and treat unset variables as an error
set -eu
# See comments in install script
app=$YNH_APP_INSTANCE_NAME
source /usr/share/yunohost/helpers
#source _future.sh
source ../settings/scripts/_common.sh
# Source YunoHost helpers
. /usr/share/yunohost/helpers
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get "$app" domain)
odoo_version=$(ynh_app_setting_get "$app" odoo_version)
define_paths
# Backup sources & data
ynh_backup "/usr/lib/python2.7/dist-packages/openerp/" "sources"
ynh_backup "${source_path}addons" "$1${source_path}addons"
# Backup configuration
ynh_backup "$conf_file" "$1$conf_file"
# Copy NGINX configuration
domain=$(ynh_app_setting_get "$app" domain)
ynh_backup "/etc/nginx/conf.d/${domain}.d/${app}.conf" "nginx.conf"
ynh_backup "/etc/odoo/openerp-server.conf" "openerp-server.conf"
ynh_backup "/etc/nginx/conf.d/${domain}.d/${app}.conf" "etc/nginx/conf.d/${domain}.d/${app}.conf"
# Save postgresql conf
ynh_backup "/etc/postgresql/9.4/main/pg_hba.conf" "etc/postgresql/9.4/main/pg_hba.conf"
# Copy database
database=${domain//./-}
sudo su -c "pg_dump $database" postgres > ./dump.sql
pwd=`pwd`
ynh_backup "$pwd/dump.sql" "dump.sql"

View file

@ -2,128 +2,66 @@
set -eu
app=$YNH_APP_INSTANCE_NAME
source /usr/share/yunohost/helpers
source _future.sh
source _common.sh
# Retrieve arguments
domain=$YNH_APP_ARG_DOMAIN
version=$YNH_APP_ARG_VERSION
oca=$YNH_APP_ARG_OCA
admin_password=$YNH_APP_ARG_ADMIN_PASSWORD
lang=$YNH_APP_ARG_LANG
tz=$YNH_APP_ARG_TZ
ynh_trap_on
# Load common variables
source ./_common.sh
# Arguments from manifest
export app=$YNH_APP_INSTANCE_NAME
export domain=$YNH_APP_ARG_DOMAIN
export odoo_version=$YNH_APP_ARG_VERSION
export oca=$YNH_APP_ARG_OCA
export admin_password=$YNH_APP_ARG_ADMIN_PASSWORD
export lang=$YNH_APP_ARG_LANG
export tz=$YNH_APP_ARG_TZ
export is_public=0
# Source YunoHost helpers
. /usr/share/yunohost/helpers
# Check domain/path availability
domain=${domain}"/"
sudo yunohost app checkurl $domain -a $app \
|| (ynh_die "Path not available: $domain" 1)
# Remove trailing "/" for next commands
domain=${domain%/}
# Generate random password
# Fix a bug on ynh_string_random https://github.com/YunoHost/yunohost/pull/205/commits/0d6cf499a0b858e7009245fd11a9210188047c13
dbpass=$(ynh_string_random | sed "s/\[/e/g" | sed "s/\]/e/g")
ynh_app_setting_set "$app" domain "$domain"
ynh_app_setting_set "$app" lang "$lang"
ynh_app_setting_set "$app" tz "$tz"
ynh_app_setting_set "$app" psqlpwd "$dbpass"
#=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THIS ARGS
#=================================================
ynh_check_var "$app" "app name not set"
ynh_webpath_available "$domain" "/"
check_odoo_version
define_paths
define_is_master
define_port
define_dbpass
if [ -f /usr/bin/openerp-server ]; then
echo "Odoo is already installed, switching to multi-instances"
ynh_app_setting_set "$app" instance "slave"
else
sudo yunohost app checkport 8069
if [[ ! $? -eq 0 ]]; then
ynh_die "Port 8069 unavailable" 1
fi
echo "Installing odoo"
ynh_app_setting_set "$app" version "$version"
ynh_app_setting_set "$app" instance "master"
# Install Odoo
# Prepare installation
ynh_package_install curl
# Install Odoo
sudo curl -sS https://nightly.odoo.com/odoo.key | sudo apt-key add -
sudo sh -c "echo 'deb http://nightly.odoo.com/${version}/nightly/deb/ ./' > /etc/apt/sources.list.d/odoo.list"
# TODO if 8.0 install https://www.odoo.com/apps/modules/8.0/shell/
sudo apt-get update
# Initialize installation
ynh_package_install postgresql
ynh_package_install odoo
# Install wkhtmltopdf to print PDF reports
ynh_package_install xfonts-75dpi xfonts-base wkhtmltopdf node-less python-xlrd
# The debian package has a bug so we deploy a more recent version
DESTDIR="/tmp/wkhtmltox/"
sudo mkdir -p $DESTDIR
sudo chown -R $APPNAME: /tmp/wkhtmltox
extract_sources $DESTDIR "$APPNAME"
sudo cp -R "$DESTDIR." /usr/
sudo rm -Rf $DESTDIR
ynh_psql_execute_as_root "ALTER USER $APPNAME WITH CREATEDB;"
ynh_psql_execute_as_root "ALTER USER $APPNAME WITH PASSWORD '$dbpass';"
sudo su -c "createdb -O $APPNAME $APPNAME" - postgres
#=================================================
# SETUP THE APP BY MODIFYING THE SYSTEM
#=================================================
function setup_files() {
# Set admin password
# TODO Support @ in password
sudo sed -i "s@ADMIN_PASSWORD@$admin_password@g" ../conf/openerp-server.conf
sudo sed -i "s@DATABASE_PASSWORD@$dbpass@g" ../conf/openerp-server.conf
sudo cp ../conf/openerp-server.conf /etc/odoo/openerp-server.conf
sudo chown odoo:odoo /etc/odoo/openerp-server.conf
ynh_configure openerp-server.conf $conf_file
chown odoo:odoo $conf_file
# Autoinstall the LDAP auth module
sudo sed -i "s@'auto_install': False@'auto_install': True@g" /usr/lib/python2.7/dist-packages/openerp/addons/auth_ldap/__openerp__.py
# Install oerplib to manage databases
#sudo pip install oerplib
# Add services
sudo yunohost service add postgresql
sudo yunohost service add odoo --log /var/log/odoo/odoo-server.log
sudo yunohost service stop odoo
sudo yunohost service start odoo
if [ $(echo "$odoo_version >= 10" | bc) -ne 0 ]; then
ynh_replace_string "^{$" "{'auto_install': True," ${source_path}addons/auth_ldap/__manifest__.py
else
ynh_replace_string "'auto_install': False" "'auto_install': True" ${source_path}addons/auth_ldap/__openerp__.py
fi
# Configure Nginx and reload
sed -i "s@#YNH_APP_INSTANCE_NAME#@${YNH_APP_INSTANCE_NAME}@g" ../conf/nginx.conf
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
# Make Odoo public
ynh_app_setting_set "$app" skipped_uris "/"
sudo service nginx reload
# Fix peer authentification issue
sudo sed -i '/local\s*all\s*all\s*peer/i \
sed -i '/local\s*all\s*all\s*peer/i \
local all odoo password' /etc/postgresql/9.4/main/pg_hba.conf
sudo service postgresql reload
ynh_configure_nginx
}
function setup_database() {
# Setup database: not working
database=${domain//./-}
# Load translation
sudo /usr/bin/openerp-server -c /etc/odoo/openerp-server.conf --stop-after-init -d $database
sudo /usr/bin/openerp-server -c /etc/odoo/openerp-server.conf --stop-after-init -d $database --load-language $lang
$bin_file -c $conf_file --stop-after-init -i auth_ldap -d $database
$bin_file -c $conf_file --stop-after-init -d $database --load-language $lang
# Configure language, timezone and ldap
sudo /usr/bin/openerp-server shell -c /etc/odoo/openerp-server.conf -d $database <<< \
$bin_file shell -c $conf_file -d $database <<< \
"
self.change_password('admin','$admin_password')
self.env.cr.commit()
@ -149,5 +87,14 @@ self.company_id.ldaps.create({
})
self.env.cr.commit()
"
}
ynh_webpath_register "$app" "$domain" "/"
ynh_save_args domain odoo_version oca lang tz is_master port
install_dependencies
setup_files
create_general_db
add_services
setup_database
ssowat_and_restart
sudo service odoo restart

View file

@ -1,42 +1,54 @@
#!/bin/bash
set -eu
set -u
source /usr/share/yunohost/helpers
source _future.sh
source _common.sh
app=$YNH_APP_INSTANCE_NAME
# Load common variables
source ./_common.sh
# Source YunoHost helpers
. /usr/share/yunohost/helpers
# Retrieve app settings
domain=$(ynh_app_setting_get "$app" domain)
database=${domain//./-}
instance=$(ynh_app_setting_get "$app" instance)
sudo yunohost service stop odoo | true
# If removing master instance, remove Odoo.
if [ "$instance" = "master" ]; then
sudo rm -f /etc/apt/sources.list.d/odoo.list
sudo apt-get update
sudo yunohost service remove odoo | true
ynh_package_remove odoo | true
sudo dpkg -P odoo | true
ynh_psql_drop_db $APPNAME | true
odoo_version=$(ynh_app_setting_get "$app" odoo_version)
if [ "$odoo_version" = "" ]; then
exit 0
fi
database=${domain//./-}
is_master=$(ynh_app_setting_get "$app" is_master)
define_paths
yunohost service stop odoo
list=$(yunohost app list --installed | grep odoo)
# If removing master instance, remove Odoo.
if [ $(echo $list | wc -l) = 1 ]; then
rm -f /etc/apt/sources.list.d/odoo.list
apt-get update
yunohost service remove odoo
ynh_psql_drop_db $APPNAME
#ynh_psql_drop_user $APPNAME
else
# Set another app as master
if [ "$is_master" = "true" ]; then
for instance in $list; do
if [ "$instance" != "$app" ]; then
ynh_app_setting_set "$instance" is_master "true"
break
fi
done
is_master="false"
fi
fi
ynh_remove_app_dependencies
# Remove database
ynh_psql_drop_db $database | true
ynh_psql_drop_user $database | true
ynh_psql_drop_db $database
if [ "$instance" = "slave" ]; then
sudo yunohost service start odoo | true
if [ "$is_master" = "false" ]; then
yunohost service start odoo
fi
# Remove NGINX conf
sudo rm /etc/nginx/conf.d/$domain.d/$app.conf | true
# Reload
sudo service nginx reload
sudo yunohost app ssowatconf
# Remove NGINX conf
ynh_rm_nginx_conf

View file

@ -1,3 +1,65 @@
#!/bin/bash
app=odoo
# TO BE DONE
set -eu
# Import helpers
source /usr/share/yunohost/helpers
source ../settings/scripts/_future.sh
source ../settings/scripts/_common.sh
ynh_trap_on
export app=$YNH_APP_INSTANCE_NAME
export domain=$(ynh_app_setting_get $app domain)
export odoo_version=$(ynh_app_setting_get $app odoo_version)
export oca=$(ynh_app_setting_get $app oca)
export port=$(ynh_app_setting_get $app port)
export is_public=0
#=================================================
# CHECK IF THE APP CAN BE RESTORED
#=================================================
ynh_check_var "$app" "app name not set"
ynh_webpath_available "$domain" "/"
check_odoo_version
define_paths
define_is_master
define_port
define_dbpass restore
#=================================================
# RESTORE THE APP BY MODIFYING THE SYSTEM
#=================================================
# Restore files
function restore_files () {
if [ "$is_master" = true ]; then
ynh_restore
else
# If odoo is already setup we just restore nginx and add some missing
# modules. Other files are already on system, and we don't want to
# erase it
# Configure Nginx and reload
ynh_restore_file "/etc/nginx/conf.d/${domain}.d/${app}.conf"
# TODO Restore plugin/addons
fi
}
# Restore database
function restore_database () {
# Restore database
database=${domain//./-}
su -c "createdb -O $APPNAME $database" - postgres
su -c "psql $database" postgres < ./dump.sql
}
ynh_save_args is_master port
install_dependencies
restore_files
create_general_db
add_services
restore_database
ssowat_and_restart

View file

@ -1,14 +1,54 @@
#!/bin/bash
set -eu
app=$YNH_APP_INSTANCE_NAME
# Source YunoHost helpers
. /usr/share/yunohost/helpers
source /usr/share/yunohost/helpers
source _future.sh
source _common.sh
ynh_trap_on
# Retrieve arguments
domain=$(ynh_app_setting_get "$app" domain)
export app=$YNH_APP_INSTANCE_NAME
export domain=$(ynh_app_setting_get "$app" domain)
export odoo_version=$(ynh_app_setting_get "$app" odoo_version)
export is_master=$(ynh_app_setting_get "$app" is_master)
export oca=$(ynh_app_setting_get "$app" oca)
export port=$(ynh_app_setting_get $app port)
export is_public=0
version=$(ynh_read_json "/etc/yunohost/apps/$app/manifest.json" 'version' 2> /dev/null || echo '9.0-0')
last_version=$(ynh_read_manifest 'version')
#ynh_exit_if_up_to_date
ynh_check_var "$app" "app name not set"
# Upgrade official package
sudo apt-get install odoo -y -qq
apt-get install odoo -y -qq
# Zamentur version https://github.com/zamentur/odoo_ynh/commit/cdeb9afbf218431781f752dedfbf4247afbd5b44
if [ "${version}" = "9.0-0" ]; then
# set new args
odoo_version=${odoo_version:-$(ynh_app_setting_get "$app" version)}
if [ "$is_master" = "" ]; then
if [ "$(ynh_app_setting_get "$app" instance)" = "master" ];then
is_master="true"
else
is_master="false"
fi
fi
port=${port:-8069}
oca=${oca:-false}
ynh_save_args odoo_version oca is_master port
# Install official debian package
install_dependencies
fi
if [ "${version}" = "10.0-1" ]; then
# Put here your migrations
echo ""
fi
# TBD