1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/weblate_ynh.git synced 2024-10-01 13:35:04 +02:00

Add upgrade support to 2.17.1

This commit is contained in:
Jean-Baptiste Holcroft 2017-10-18 23:10:32 +02:00
parent d8cbc1526a
commit 5743eb663a
5 changed files with 133 additions and 35 deletions

View file

@ -60,10 +60,7 @@ DATA_DIR = os.path.join(BASE_DIR, 'data')
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as your
# system time zone.
# In a Windows environment this must be set to your system time zone.
TIME_ZONE = 'UTC'
# Language code for this installation. All choices can be found here:
@ -235,8 +232,9 @@ SOCIAL_AUTH_PIPELINE = (
'social_core.pipeline.mail.mail_validation',
'weblate.accounts.pipeline.revoke_mail_code',
'weblate.accounts.pipeline.ensure_valid',
'weblate.accounts.pipeline.reauthenticate',
'weblate.accounts.pipeline.remove_account',
'social_core.pipeline.social_auth.associate_by_email',
'weblate.accounts.pipeline.reauthenticate',
'weblate.accounts.pipeline.verify_username',
'social_core.pipeline.user.create_user',
'social_core.pipeline.social_auth.associate_user',
@ -298,6 +296,17 @@ AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'weblate.accounts.password_validation.CharsPasswordValidator',
},
{
'NAME': 'weblate.accounts.password_validation.PastPasswordsValidator',
},
# Optional password strength validation by django-zxcvbn-password
# {
# 'NAME': 'zxcvbn_password.ZXCVBNValidator',
# 'OPTIONS': {
# 'min_score': 3,
# 'user_attributes': ('username', 'email', 'first_name')
# }
# },
]
# Middleware
@ -316,10 +325,8 @@ MIDDLEWARE_CLASSES = (
ROOT_URLCONF = 'weblate.urls'
# Django and Weblate apps
INSTALLED_APPS = (
# Has to be first to override Django admin templates:
'weblate.wladmin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
@ -340,16 +347,15 @@ INSTALLED_APPS = (
'weblate.screenshots',
'weblate.accounts',
'weblate.utils',
'weblate.wladmin',
'weblate',
# Optional: Git exporter
# 'weblate.gitexport',
# This application has to be placed last!
'weblate',
)
# Path to locales
LOCALE_PATHS = (os.path.join(BASE_DIR, 'locale'), )
LOCALE_PATHS = (os.path.join(BASE_DIR, 'weblate', 'locale'), )
# Custom exception reporter to include some details
DEFAULT_EXCEPTION_REPORTER_FILTER = \
@ -576,6 +582,9 @@ AUTO_LOCK = True
AUTO_LOCK_TIME = 60
LOCK_TIME = 15 * 60
# Use simple language codes for default language/country combinations
SIMPLIFY_LANGUAGES = True
# Render forms using bootstrap
CRISPY_TEMPLATE_PACK = 'bootstrap3'

View file

@ -8,7 +8,7 @@
"description": {
"en": "A translation platform using Git and Python"
},
"version": "2.16.0",
"version": "2.17.1",
"url": "https://weblate.org",
"license": "AGPL-3.0",
"maintainer": {

View file

@ -1,5 +1,29 @@
#!/bin/bash
current_version="2.17.1"
weblate_fill_settings() {
settings="$1"
ynh_replace_string "__NAME__" "$app" "$settings"
ynh_replace_string "__DB_PWD__" "$db_pwd" "$settings"
ynh_replace_string "__ADMIN__" "$admin" "$settings"
ynh_replace_string "__ADMINMAIL__" "$admin_mail" "$settings"
ynh_replace_string "__DOMAIN__" "$domain" "$settings"
ynh_replace_string "__KEY__" "$key" "$settings"
ynh_replace_string "__FINALPATH__" "$final_path" "$settings"
ynh_replace_string "__MEMCPORT__" "$memc_port" "$settings"
ynh_replace_string "__GITHUBUSER__" "$github_account" "$settings"
# root install as an empty PATHURL to prevent '//static'
if [ "$path_url" == "/" ]
then
ynh_replace_string "__PATHURL__" "" "$settings"
else
ynh_replace_string "__PATHURL__" "$path_url" "$settings"
fi
}
ynh_psql_test_if_first_run() {
if [ -f /etc/yunohost/psql ];
then

View file

@ -200,7 +200,7 @@ virtualenv "${final_path}/venv"
(
set +eu
source "${final_path}/venv/bin/activate"
"${final_path}/venv/bin/pip" install Weblate==2.16
"${final_path}/venv/bin/pip" install Weblate=="$current_version"
"${final_path}/venv/bin/pip" install pytz python-bidi PyYaML Babel pyuca pylibravatar pydns psycopg2 python-memcached
# specific to YunoHost package:
"${final_path}/venv/bin/pip" install django_sendmail_backend
@ -218,23 +218,8 @@ memc_port=$(ynh_find_port 8080)
settings="$final_path/venv/lib/python2.7/site-packages/weblate/settings.py"
cp ../conf/settings.py "$settings"
ynh_replace_string "__NAME__" "$app" "$settings"
ynh_replace_string "__DB_PWD__" "$db_pwd" "$settings"
ynh_replace_string "__ADMIN__" "$admin" "$settings"
ynh_replace_string "__ADMINMAIL__" "$admin_mail" "$settings"
ynh_replace_string "__DOMAIN__" "$domain" "$settings"
ynh_replace_string "__KEY__" "$key" "$settings"
ynh_replace_string "__FINALPATH__" "$final_path" "$settings"
ynh_replace_string "__MEMCPORT__" "$memc_port" "$settings"
ynh_replace_string "__GITHUBUSER__" "$github_account" "$settings"
# root install as an empty PATHURL to prevent '//static'
if [ "$path_url" == "/" ]
then
ynh_replace_string "__PATHURL__" "" "$settings"
else
ynh_replace_string "__PATHURL__" "$path_url" "$settings"
fi
weblate_fill_settings "$settings"
ynh_app_setting_set "$app" memc_port "$memc_port"
#=================================================
# SPECIFIC SETUP Filling up the database
@ -300,6 +285,8 @@ then
# ynh panel is not needed
ynh_replace_string " include conf.d/" " #include conf.d/" "$finalnginxconf"
ynh_store_file_checksum "$finalnginxconf"
fi
#=================================================

View file

@ -22,6 +22,21 @@ final_path=$(ynh_app_setting_get "$app" final_path)
db_name=$(ynh_app_setting_get "$app" db_name)
domain=$(ynh_app_setting_get "$app" domain)
#=================================================
# Get previous version number
#=================================================
(
set +eu
source "${final_path}/venv/bin/activate"
"${final_path}/venv/bin/pip" install --upgrade pip
"${final_path}/venv/bin/pip" freeze --local > freeze.pip
)
previous_version=$(cat freeze.pip | grep "Weblate==" | sed "s|Weblate==||")
previous_version_file="../conf/settings_history/settings.$previous_version.py"
test -e "$previous_version_file" || ynh_die "Previous version unknown: $previous_version"
#=================================================
# ENSURE DOWNWARD COMPATIBILITY
#=================================================
@ -87,17 +102,77 @@ chsh --shell /bin/bash "$app"
# PIP INSTALLATION
#=================================================
old_settings="./settings.$previous_version.old.py"
settings_diff="./settings.diff"
settings="$final_path/venv/lib/python2.7/site-packages/weblate/settings.py"
db_pwd=$(ynh_app_setting_get "$app" psqlpwd)
admin=$(ynh_app_setting_get "$app" admin)
admin_mail=$(ynh_user_get_info "$admin" mail)
key=$(ynh_string_random)
memc_port=$(ynh_app_setting_get "$app" memc_port)
github_account=$(ynh_app_setting_get "$app" github_account)
#save memc_port if it doesn't exist
if [[ -z "$memc_port" ]]
then
memc_port=$(cat "$settings" \
| grep "'LOCATION': '127.0.0.1:" \
| sed "s|.*:\\(.*\\)'.*|\\1|")
ynh_app_setting_set "$app" memc_port "$memc_port"
fi
(
set +eu
source "${final_path}/venv/bin/activate"
"${final_path}/venv/bin/pip" install Weblate==2.16
"${final_path}/venv/bin/pip" install Weblate=="$current_version"
"${final_path}/venv/bin/pip" install pytz python-bidi PyYaML Babel pyuca pylibravatar pydns psycopg2 python-memcached
# specific to YunoHost package:
"${final_path}/venv/bin/pip" install django_sendmail_backend
)
# generate previous defaults settings
cp "$previous_version_file" "$old_settings"
weblate_fill_settings "$old_settings"
# store diff between defaults and local settings
diff --unified "$old_settings" "$settings" > "$settings_diff"
# generate new defaults settings
cp ../conf/settings.py "$settings"
weblate_fill_settings "$settings"
# send diff to the server administrator
mail_subject="'$app' settings diff from $previous_version to $current_version"
mail_message="
Weblate was updated from version $previous_version to $current_version
A new settings.py has been created in:
$settings
You may have changed your defaults settings.
To help you to apply it again, here is a diff file with every changes you did.
Please note secret key is updated, this is normal.
For any issue, please file a bug in: https://github.com/YunoHost-Apps/weblate_ynh
"
echo "$mail_message" | mail -s "$mail_subject" root -u root -a "$settings_diff"
# inform weblate's admin
mail_subject="'$app' was updated from $previous_version to $current_version"
mail_message="
Weblate was updated from version $previous_version to $current_version
A new settings.py has been created and a diff has been sent to root user.
Your administrator may have to update your settings.py to have a fully working installation.
"
echo "$mail_subject" | mail -s "$mail_subject" "$admin_mail"
#=================================================
# Migrate databases
# Run migration scripts
#=================================================
(
@ -106,10 +181,11 @@ chsh --shell /bin/bash "$app"
export DJANGO_SETTINGS_MODULE="weblate.settings"
cd "${final_path}"
weblate migrate --noinput
weblate collectstatic --noinput
weblate setuplang
weblate setupgroups
)
# Verify the checksum and backup the file if it's different
ynh_backup_if_checksum_is_different "$final_path/venv/lib/python2.7/site-packages/weblate/settings.py"
# Recalculate and store the config file checksum into the app settings
ynh_store_file_checksum "$final_path/venv/lib/python2.7/site-packages/weblate/settings.py"
@ -140,6 +216,8 @@ then
# ynh panel is not needed
ynh_replace_string " include conf.d/" " #include conf.d/" "$finalnginxconf"
ynh_store_file_checksum "$finalnginxconf"
fi
#=================================================