From 48bbb387b659f873e9000b0824404d80a1751e7f Mon Sep 17 00:00:00 2001 From: "ljf (zamentur)" Date: Mon, 11 Feb 2019 22:08:36 +0100 Subject: [PATCH 01/11] [fix] New way to use ynh_system_user_create --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index ed4884c..4b9f3f6 100644 --- a/scripts/install +++ b/scripts/install @@ -71,7 +71,7 @@ self.env.cr.commit() " } ynh_save_args domain app_version oca lang tz final_path conf_file db_name port port_chat -ynh_system_user_create $app $final_path +ynh_system_user_create -u $app -h $final_path export db_pass=$(ynh_string_random) setup_files install_dependencies From a97cf9ceb4b178af987045bfd35c7439e0e85232 Mon Sep 17 00:00:00 2001 From: ljf Date: Mon, 11 Feb 2019 22:59:27 +0100 Subject: [PATCH 02/11] [fix] Getopts strange errors --- manifest.json | 4 +- scripts/_future.sh | 196 +-------------------------------------------- 2 files changed, 5 insertions(+), 195 deletions(-) diff --git a/manifest.json b/manifest.json index 7130c54..08d0f75 100644 --- a/manifest.json +++ b/manifest.json @@ -13,11 +13,11 @@ "previous_maintainers": { "name": "scith" }, - "version": "12.0-5", + "version": "12.0-6", "url": "https://github.com/YunoHost-Apps/libreerp_ynh", "license": "LGPL-3.0,AGPL-3.0", "requirements": { - "yunohost": ">= 3.3.0" + "yunohost": ">= 3.4.2.3" }, "multi_instance": true, "services": [ diff --git a/scripts/_future.sh b/scripts/_future.sh index c0d4dc7..453c015 100644 --- a/scripts/_future.sh +++ b/scripts/_future.sh @@ -17,15 +17,15 @@ ynh_export () { ynh_save_args () { for var in $@; do - ynh_app_setting_set $app $var ${!var} + ynh_app_setting_set -a $app -k $var -v ${!var} done } ynh_sso_access () { - ynh_app_setting_set $app unprotected_uris "/" + ynh_app_setting_set -a $app -k unprotected_uris -v "/" if [[ $is_public -eq 0 ]]; then - ynh_app_setting_set $app protected_uris "$1" + ynh_app_setting_set -a $app -k protected_uris -v "$1" fi sudo yunohost app ssowatconf } @@ -76,196 +76,6 @@ is_jessie () { return 1 fi } -# Internal helper design to allow helpers to use getopts to manage their arguments -# -# example: function my_helper() -# { -# declare -Ar args_array=( [a]=arg1= [b]=arg2= [c]=arg3 ) -# local arg1 -# local arg2 -# local arg3 -# ynh_handle_getopts_args "$@" -# -# [...] -# } -# my_helper --arg1 "val1" -b val2 -c -# -# usage: ynh_handle_getopts_args "$@" -# | arg: $@ - Simply "$@" to tranfert all the positionnal arguments to the function -# -# This helper need an array, named "args_array" with all the arguments used by the helper -# that want to use ynh_handle_getopts_args -# Be carreful, this array has to be an associative array, as the following example: -# declare -Ar args_array=( [a]=arg1 [b]=arg2= [c]=arg3 ) -# Let's explain this array: -# a, b and c are short options, -a, -b and -c -# arg1, arg2 and arg3 are the long options associated to the previous short ones. --arg1, --arg2 and --arg3 -# For each option, a short and long version has to be defined. -# Let's see something more significant -# declare -Ar args_array=( [u]=user [f]=finalpath= [d]=database ) -# -# NB: Because we're using 'declare' without -g, the array will be declared as a local variable. -# -# Please keep in mind that the long option will be used as a variable to store the values for this option. -# For the previous example, that means that $finalpath will be fill with the value given as argument for this option. -# -# Also, in the previous example, finalpath has a '=' at the end. That means this option need a value. -# So, the helper has to be call with --finalpath /final/path, --finalpath=/final/path or -f /final/path, the variable $finalpath will get the value /final/path -# If there's many values for an option, -f /final /path, the value will be separated by a ';' $finalpath=/final;/path -# For an option without value, like --user in the example, the helper can be called only with --user or -u. $user will then get the value 1. -# -# To keep a retrocompatibility, a package can still call a helper, using getopts, with positional arguments. -# The "legacy mode" will manage the positional arguments and fill the variable in the same order than they are given in $args_array. -# e.g. for `my_helper "val1" val2`, arg1 will be filled with val1, and arg2 with val2. -ynh_handle_getopts_args () { - # Manage arguments only if there's some provided - set +x - if [ $# -ne 0 ] - then - # Store arguments in an array to keep each argument separated - local arguments=("$@") - - # For each option in the array, reduce to short options for getopts (e.g. for [u]=user, --user will be -u) - # And built parameters string for getopts - # ${!args_array[@]} is the list of all keys in the array (A key is 'u' in [u]=user, user is a value) - local getopts_parameters="" - local key="" - for key in "${!args_array[@]}" - do - # Concatenate each keys of the array to build the string of arguments for getopts - # Will looks like 'abcd' for -a -b -c -d - # If the value of a key finish by =, it's an option with additionnal values. (e.g. --user bob or -u bob) - # Check the last character of the value associate to the key - if [ "${args_array[$key]: -1}" = "=" ] - then - # For an option with additionnal values, add a ':' after the letter for getopts. - getopts_parameters="${getopts_parameters}${key}:" - else - getopts_parameters="${getopts_parameters}${key}" - fi - # Check each argument given to the function - local arg="" - # ${#arguments[@]} is the size of the array - for arg in `seq 0 $(( ${#arguments[@]} - 1 ))` - do - # And replace long option (value of the key) by the short option, the key itself - # (e.g. for [u]=user, --user will be -u) - # Replace long option with = - arguments[arg]="${arguments[arg]//--${args_array[$key]}/-${key} }" - # And long option without = - arguments[arg]="${arguments[arg]//--${args_array[$key]%=}/-${key}}" - done - done - - # Read and parse all the arguments - # Use a function here, to use standart arguments $@ and be able to use shift. - parse_arg () { - # Read all arguments, until no arguments are left - while [ $# -ne 0 ] - do - # Initialize the index of getopts - OPTIND=1 - # Parse with getopts only if the argument begin by -, that means the argument is an option - # getopts will fill $parameter with the letter of the option it has read. - local parameter="" - getopts ":$getopts_parameters" parameter || true - - if [ "$parameter" = "?" ] - then - ynh_die "Invalid argument: -${OPTARG:-}" - elif [ "$parameter" = ":" ] - then - ynh_die "-$OPTARG parameter requires an argument." - else - local shift_value=1 - # Use the long option, corresponding to the short option read by getopts, as a variable - # (e.g. for [u]=user, 'user' will be used as a variable) - # Also, remove '=' at the end of the long option - # The variable name will be stored in 'option_var' - local option_var="${args_array[$parameter]%=}" - # If this option doesn't take values - # if there's a '=' at the end of the long option name, this option takes values - if [ "${args_array[$parameter]: -1}" != "=" ] - then - # 'eval ${option_var}' will use the content of 'option_var' - eval ${option_var}=1 - else - # Read all other arguments to find multiple value for this option. - # Load args in a array - local all_args=("$@") - - # If the first argument is longer than 2 characters, - # There's a value attached to the option, in the same array cell - if [ ${#all_args[0]} -gt 2 ]; then - # Remove the option and the space, so keep only the value itself. - all_args[0]="${all_args[0]#-${parameter} }" - # Reduce the value of shift, because the option has been removed manually - shift_value=$(( shift_value - 1 )) - fi - - # Then read the array value per value - for i in `seq 0 $(( ${#all_args[@]} - 1 ))` - do - # If this argument is an option, end here. - if [ "${all_args[$i]:0:1}" == "-" ] || [ -z "${all_args[$i]}" ] - then - # Ignore the first value of the array, which is the option itself - if [ "$i" -ne 0 ]; then - break - fi - else - # Declare the content of option_var as a variable. - eval ${option_var}="" - # Else, add this value to this option - # Each value will be separated by ';' - if [ -n "${!option_var}" ] - then - # If there's already another value for this option, add a ; before adding the new value - eval ${option_var}+="\;" - fi - eval ${option_var}+=\"${all_args[$i]}\" - shift_value=$(( shift_value + 1 )) - fi - done - fi - fi - - # Shift the parameter and its argument(s) - shift $shift_value - done - } - - # LEGACY MODE - # Check if there's getopts arguments - if [ "${arguments[0]:0:1}" != "-" ] - then - # If not, enter in legacy mode and manage the arguments as positionnal ones. - echo "! Helper used in legacy mode !" - for i in `seq 0 $(( ${#arguments[@]} -1 ))` - do - # Use getopts_parameters as a list of key of the array args_array - # Remove all ':' in getopts_parameters - getopts_parameters=${getopts_parameters//:} - # Get the key from getopts_parameters, by using the key according to the position of the argument. - key=${getopts_parameters:$i:1} - # Use the long option, corresponding to the key, as a variable - # (e.g. for [u]=user, 'user' will be used as a variable) - # Also, remove '=' at the end of the long option - # The variable name will be stored in 'option_var' - local option_var="${args_array[$key]%=}" - - # Store each value given as argument in the corresponding variable - # The values will be stored in the same order than $args_array - eval ${option_var}+=\"${arguments[$i]}\" - done - else - # END LEGACY MODE - # Call parse_arg and pass the modified list of args as an array of arguments. - parse_arg "${arguments[@]}" - fi - fi - set -x -} # Argument $1 is the size of the swap in MiB ynh_add_swap () { From 1cb5b8f5370818403375b0e103b295d46812be95 Mon Sep 17 00:00:00 2001 From: ljf Date: Mon, 11 Feb 2019 23:01:08 +0100 Subject: [PATCH 03/11] [enh] Remove timezone question --- manifest.json | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/manifest.json b/manifest.json index 08d0f75..72c3188 100644 --- a/manifest.json +++ b/manifest.json @@ -57,13 +57,7 @@ "default": "en_US" }, { "name": "tz", - "ask": { - "en": "Choose a time zone", - "fr": "Choisissez un fuseau horaire" - }, - "choices": ["Etc/GMT","Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC"], - "default": "Etc/UTC", - "example": "Europe/Paris" + "default": "Etc/UTC" }] } } From 94893f032beb3e177cab71e6a6d7378cab1aa983 Mon Sep 17 00:00:00 2001 From: ljf Date: Mon, 11 Feb 2019 23:09:09 +0100 Subject: [PATCH 04/11] [fix] Getopts strange errors --- scripts/_future.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/_future.sh b/scripts/_future.sh index 453c015..30e25be 100644 --- a/scripts/_future.sh +++ b/scripts/_future.sh @@ -17,15 +17,15 @@ ynh_export () { ynh_save_args () { for var in $@; do - ynh_app_setting_set -a $app -k $var -v ${!var} + ynh_app_setting_set $app $var ${!var} done } ynh_sso_access () { - ynh_app_setting_set -a $app -k unprotected_uris -v "/" + ynh_app_setting_set $app unprotected_uris "/" if [[ $is_public -eq 0 ]]; then - ynh_app_setting_set -a $app -k protected_uris -v "$1" + ynh_app_setting_set $app protected_uris "$1" fi sudo yunohost app ssowatconf } From 63d44429bb6be897a6d3e8beaaf659ee05390b9a Mon Sep 17 00:00:00 2001 From: ljf Date: Mon, 11 Feb 2019 22:59:27 +0100 Subject: [PATCH 05/11] [fix] Getopts strange errors --- scripts/_future.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/_future.sh b/scripts/_future.sh index 30e25be..453c015 100644 --- a/scripts/_future.sh +++ b/scripts/_future.sh @@ -17,15 +17,15 @@ ynh_export () { ynh_save_args () { for var in $@; do - ynh_app_setting_set $app $var ${!var} + ynh_app_setting_set -a $app -k $var -v ${!var} done } ynh_sso_access () { - ynh_app_setting_set $app unprotected_uris "/" + ynh_app_setting_set -a $app -k unprotected_uris -v "/" if [[ $is_public -eq 0 ]]; then - ynh_app_setting_set $app protected_uris "$1" + ynh_app_setting_set -a $app -k protected_uris -v "$1" fi sudo yunohost app ssowatconf } From f2aefc8efecfdf977156c7450690d2e36a2e892d Mon Sep 17 00:00:00 2001 From: ljf Date: Mon, 11 Feb 2019 23:09:09 +0100 Subject: [PATCH 06/11] [fix] Getopts strange errors --- scripts/_future.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/_future.sh b/scripts/_future.sh index 453c015..30e25be 100644 --- a/scripts/_future.sh +++ b/scripts/_future.sh @@ -17,15 +17,15 @@ ynh_export () { ynh_save_args () { for var in $@; do - ynh_app_setting_set -a $app -k $var -v ${!var} + ynh_app_setting_set $app $var ${!var} done } ynh_sso_access () { - ynh_app_setting_set -a $app -k unprotected_uris -v "/" + ynh_app_setting_set $app unprotected_uris "/" if [[ $is_public -eq 0 ]]; then - ynh_app_setting_set -a $app -k protected_uris -v "$1" + ynh_app_setting_set $app protected_uris "$1" fi sudo yunohost app ssowatconf } From 550fb0ef5fb268fcc021de93bbbdaf1f6f6bec80 Mon Sep 17 00:00:00 2001 From: "ljf (zamentur)" Date: Mon, 15 Apr 2019 21:19:12 +0200 Subject: [PATCH 07/11] [fix] Database not setup --- conf/server.conf.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/server.conf.j2 b/conf/server.conf.j2 index 76f96f2..ac59ae6 100644 --- a/conf/server.conf.j2 +++ b/conf/server.conf.j2 @@ -5,6 +5,7 @@ admin_passwd = {{ admin_password }} db_host = localhost db_port = 5432 db_user = {{ db_name }} +db_name = False db_password = {{ db_pass }} addons_path = {{ final_path }}/{{ APPNAME }}/addons,{{ final_path }}/custom-addons proxy_mode = true From 6aa8acfd522421a1e606406a499ffe7b8468c139 Mon Sep 17 00:00:00 2001 From: "ljf (zamentur)" Date: Tue, 16 Apr 2019 18:05:46 +0200 Subject: [PATCH 08/11] [fix] Db issue --- conf/server.conf.j2 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/conf/server.conf.j2 b/conf/server.conf.j2 index ac59ae6..3bc4241 100644 --- a/conf/server.conf.j2 +++ b/conf/server.conf.j2 @@ -5,11 +5,10 @@ admin_passwd = {{ admin_password }} db_host = localhost db_port = 5432 db_user = {{ db_name }} -db_name = False +db_name = {{ db_name }} db_password = {{ db_pass }} addons_path = {{ final_path }}/{{ APPNAME }}/addons,{{ final_path }}/custom-addons proxy_mode = true -dbfilter = ^{{ db_name }}$ logfile = /var/log/{{ app }}.log xmlrpc_interface = 127.0.0.1 netrpc_interface = 127.0.0.1 From 901f76ff977f1f56ba614017e34742a4ab9141e7 Mon Sep 17 00:00:00 2001 From: "ljf (zamentur)" Date: Wed, 17 Apr 2019 14:38:17 +0200 Subject: [PATCH 09/11] [fix] Replace default dbfilter '.*' by False Else it doesn't work https://github.com/odoo/odoo/blob/8f4b98e67fe49516c0c830524de351db67c58357/odoo/service/db.py#L365 --- conf/server.conf.j2 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conf/server.conf.j2 b/conf/server.conf.j2 index 3bc4241..996d0f4 100644 --- a/conf/server.conf.j2 +++ b/conf/server.conf.j2 @@ -7,6 +7,8 @@ db_port = 5432 db_user = {{ db_name }} db_name = {{ db_name }} db_password = {{ db_pass }} +dbfilter = False +list_db = False addons_path = {{ final_path }}/{{ APPNAME }}/addons,{{ final_path }}/custom-addons proxy_mode = true logfile = /var/log/{{ app }}.log From 596585b33d71df0b8e74b8a61ca58f87bdb7662f Mon Sep 17 00:00:00 2001 From: ljf Date: Wed, 17 Apr 2019 22:45:59 +0200 Subject: [PATCH 10/11] [fix] Support all libreerp version --- conf/server.conf.j2 | 8 ++++++-- scripts/install | 18 ++++++++++++++++-- scripts/upgrade | 1 + 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/conf/server.conf.j2 b/conf/server.conf.j2 index 996d0f4..432078a 100644 --- a/conf/server.conf.j2 +++ b/conf/server.conf.j2 @@ -5,10 +5,14 @@ admin_passwd = {{ admin_password }} db_host = localhost db_port = 5432 db_user = {{ db_name }} -db_name = {{ db_name }} db_password = {{ db_pass }} -dbfilter = False +{% if preinstall == '1' %} +dbfilter = ^{{ db_name }}$ +{% else %} +db_name = {{ db_name }} +{% if app_version > 9 %}dbfilter = False{% endif %} list_db = False +{% endif %} addons_path = {{ final_path }}/{{ APPNAME }}/addons,{{ final_path }}/custom-addons proxy_mode = true logfile = /var/log/{{ app }}.log diff --git a/scripts/install b/scripts/install index 4b9f3f6..82e8434 100644 --- a/scripts/install +++ b/scripts/install @@ -25,6 +25,7 @@ fi export db_name=$(ynh_sanitize_dbid $app) export port=$(ynh_find_port 8069) export port_chat=$(ynh_find_port 8072) +export preinstall=0 #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THIS ARGS @@ -38,17 +39,27 @@ ynh_webpath_register $app $domain "/" #================================================= function setup_database() { - + export preinstall=1 + ynh_configure server.conf $conf_file + chown $app:$app $conf_file # Load translation + #param=" --without-demo True --addons-path $final_path/$APPNAME/addons --db_user $app --db_password $db_pass --db_host 127.0.0.1 --db_port 5432 --db-filter '^$app\$' -d $app " + param=" -c $conf_file -d $app " sudo -u $app $bin_file -c $conf_file --stop-after-init -i auth_ldap -d $app - sudo -u $app $bin_file -c $conf_file --stop-after-init -d $app --load-language $lang + sudo -u $app $bin_file -c $conf_file --stop-after-init --load-language $lang -d $app # Configure language, timezone and ldap sudo -u $app $bin_file shell -c $conf_file -d $app <<< \ " self.env['res.users'].search([['login', '=', 'admin']])[0].write({'password': '$admin_password'}) self.env.cr.commit() +" + sudo -u $app $bin_file shell -c $conf_file -d $app <<< \ +" self.write({'tz':'$tz','lang':'$lang'}) self.env.cr.commit() +" + sudo -u $app $bin_file shell -c $conf_file -d $app <<< \ +" template=env['res.users'].create({ 'login':'template', 'password':'', @@ -69,6 +80,9 @@ self.company_id.ldaps.create({ }) self.env.cr.commit() " + export preinstall=0 + ynh_configure server.conf $conf_file + chown $app:$app $conf_file } ynh_save_args domain app_version oca lang tz final_path conf_file db_name port port_chat ynh_system_user_create -u $app -h $final_path diff --git a/scripts/upgrade b/scripts/upgrade index 1008026..f6bc1d5 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -25,6 +25,7 @@ export port_chat=$(ynh_app_setting_get $app port_chat) export is_public=0 export final_path=$(ynh_app_setting_get $app final_path) export conf_file=$(ynh_app_setting_get $app conf_file) +export preinstall=0 #================================================= # CHECK VERSION From 56415520bb3668d60a34862f5664e178ac23bb6a Mon Sep 17 00:00:00 2001 From: "ljf (zamentur)" Date: Thu, 19 Sep 2019 10:27:36 +0200 Subject: [PATCH 11/11] [fix] Blank page on webadmin --- manifest.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/manifest.json b/manifest.json index 72c3188..f52612f 100644 --- a/manifest.json +++ b/manifest.json @@ -35,11 +35,19 @@ }, { "name": "version", "choices": ["8", "9", "10", "11", "12"], - "default": "12" + "default": "12", + "ask": { + "en": "Choose the version you want", + "fr": "Choisissez la version désirée" + } }, { "name": "oca", "type": "boolean", - "default": false + "default": false, + "ask": { + "en": "Do you want to setup OCA instead of LibreERP ? (not yet implemented)", + "fr": "Désirez vous installer OCA à la place des sources de LibreERP (pas encore implémenté)" + } }, { "name": "admin_password", "type": "password",