mirror of
https://github.com/YunoHost-Apps/weblate_ynh.git
synced 2024-10-01 13:35:04 +02:00
upgrade to 3.7
upgrade to 3.7
This commit is contained in:
commit
31b8295095
11 changed files with 1211 additions and 102 deletions
|
@ -19,8 +19,8 @@
|
||||||
setup_private=1
|
setup_private=1
|
||||||
setup_public=1
|
setup_public=1
|
||||||
upgrade=1
|
upgrade=1
|
||||||
upgrade=1 from_commit=f14080cbe65c8b2a8e0cda1c34affe0123a6540d
|
|
||||||
upgrade=1 from_commit=565bfc66719f55b9c6a03cba8ac9991111992c9b
|
upgrade=1 from_commit=565bfc66719f55b9c6a03cba8ac9991111992c9b
|
||||||
|
upgrade=1 from_commit=73a808f7a93e063e652533244fa1657fbc41c4f3
|
||||||
backup_restore=1
|
backup_restore=1
|
||||||
multi_instance=1
|
multi_instance=1
|
||||||
incorrect_path=1
|
incorrect_path=1
|
||||||
|
@ -43,9 +43,9 @@
|
||||||
Email=jean-baptiste@holcroft.fr
|
Email=jean-baptiste@holcroft.fr
|
||||||
Notification=all
|
Notification=all
|
||||||
;;; Upgrade options
|
;;; Upgrade options
|
||||||
; commit=f14080cbe65c8b2a8e0cda1c34affe0123a6540d
|
|
||||||
name=Upgrade from 3.1.1
|
|
||||||
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&is_public=1&github_account=fake&github_token=fake
|
|
||||||
; commit=565bfc66719f55b9c6a03cba8ac9991111992c9b
|
; commit=565bfc66719f55b9c6a03cba8ac9991111992c9b
|
||||||
name=Upgrade from 3.5.1
|
name=Upgrade from 3.5.1
|
||||||
|
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&is_public=1&github_account=fake&github_token=fake
|
||||||
|
; commit=73a808f7a93e063e652533244fa1657fbc41c4f3
|
||||||
|
name=Upgrade from 3.6.1
|
||||||
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&is_public=1&github_account=fake&github_token=fake
|
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&is_public=1&github_account=fake&github_token=fake
|
||||||
|
|
879
conf/settings_history/settings.3.7.py
Normal file
879
conf/settings_history/settings.3.7.py
Normal file
|
@ -0,0 +1,879 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Copyright © 2012 - 2019 Michal Čihař <michal@cihar.com>
|
||||||
|
#
|
||||||
|
# This file is part of Weblate <https://weblate.org/>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import os
|
||||||
|
import platform
|
||||||
|
from logging.handlers import SysLogHandler
|
||||||
|
|
||||||
|
#
|
||||||
|
# Django settings for Weblate project.
|
||||||
|
#
|
||||||
|
|
||||||
|
DEBUG = True
|
||||||
|
|
||||||
|
ADMINS = (
|
||||||
|
# ('Your Name', 'your_email@example.com'),
|
||||||
|
)
|
||||||
|
|
||||||
|
MANAGERS = ADMINS
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
# Use 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
|
||||||
|
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
||||||
|
# Database name or path to database file if using sqlite3.
|
||||||
|
'NAME': '__NAME__',
|
||||||
|
# Database user, not used with sqlite3.
|
||||||
|
'USER': '__NAME__',
|
||||||
|
# Database password, not used with sqlite3.
|
||||||
|
'PASSWORD': '__DB_PWD__',
|
||||||
|
# Set to empty string for localhost. Not used with sqlite3.
|
||||||
|
'HOST': 'localhost',
|
||||||
|
# Set to empty string for default. Not used with sqlite3.
|
||||||
|
'PORT': '5432',
|
||||||
|
# Customizations for databases
|
||||||
|
'OPTIONS': {
|
||||||
|
# In case of using an older MySQL server, which has MyISAM as a default storage
|
||||||
|
# 'init_command': 'SET storage_engine=INNODB',
|
||||||
|
# Uncomment for MySQL older than 5.7:
|
||||||
|
# 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
|
||||||
|
# Set emoji capable charset for MySQL:
|
||||||
|
# 'charset': 'utf8mb4',
|
||||||
|
'sslmode': 'disable'
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BASE_DIR = '__FINALPATH__'
|
||||||
|
|
||||||
|
# Data directory
|
||||||
|
DATA_DIR = os.path.join(BASE_DIR, 'data')
|
||||||
|
TTF_PATH = '__FINALPATH__/venv/lib/python3.5/site-packages/weblate/ttf/'
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
# 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:
|
||||||
|
# http://www.i18nguy.com/unicode/language-identifiers.html
|
||||||
|
LANGUAGE_CODE = 'en-us'
|
||||||
|
|
||||||
|
LANGUAGES = (
|
||||||
|
('ar', 'العربية'),
|
||||||
|
('az', 'Azərbaycan'),
|
||||||
|
('be', 'Беларуская'),
|
||||||
|
('be@latin', 'Biełaruskaja'),
|
||||||
|
('bg', 'Български'),
|
||||||
|
('br', 'Brezhoneg'),
|
||||||
|
('ca', 'Català'),
|
||||||
|
('cs', 'Čeština'),
|
||||||
|
('da', 'Dansk'),
|
||||||
|
('de', 'Deutsch'),
|
||||||
|
('en', 'English'),
|
||||||
|
('en-gb', 'English (United Kingdom)'),
|
||||||
|
('el', 'Ελληνικά'),
|
||||||
|
('es', 'Español'),
|
||||||
|
('fi', 'Suomi'),
|
||||||
|
('fr', 'Français'),
|
||||||
|
('fy', 'Frysk'),
|
||||||
|
('gl', 'Galego'),
|
||||||
|
('he', 'עברית'),
|
||||||
|
('hu', 'Magyar'),
|
||||||
|
('id', 'Indonesia'),
|
||||||
|
('it', 'Italiano'),
|
||||||
|
('ja', '日本語'),
|
||||||
|
('kk', 'Қазақ тілі'),
|
||||||
|
('ko', '한국어'),
|
||||||
|
('ksh', 'Kölsch'),
|
||||||
|
('nb', 'Norsk bokmål'),
|
||||||
|
('nl', 'Nederlands'),
|
||||||
|
('pl', 'Polski'),
|
||||||
|
('pt', 'Português'),
|
||||||
|
('pt-br', 'Português brasileiro'),
|
||||||
|
('ru', 'Русский'),
|
||||||
|
('sk', 'Slovenčina'),
|
||||||
|
('sl', 'Slovenščina'),
|
||||||
|
('sr', 'Српски'),
|
||||||
|
('sv', 'Svenska'),
|
||||||
|
('tr', 'Türkçe'),
|
||||||
|
('uk', 'Українська'),
|
||||||
|
('zh-hans', '简体字'),
|
||||||
|
('zh-hant', '正體字'),
|
||||||
|
)
|
||||||
|
|
||||||
|
SITE_ID = 1
|
||||||
|
|
||||||
|
# If you set this to False, Django will make some optimizations so as not
|
||||||
|
# to load the internationalization machinery.
|
||||||
|
USE_I18N = True
|
||||||
|
|
||||||
|
# If you set this to False, Django will not format dates, numbers and
|
||||||
|
# calendars according to the current locale.
|
||||||
|
USE_L10N = True
|
||||||
|
|
||||||
|
# If you set this to False, Django will not use timezone-aware datetimes.
|
||||||
|
USE_TZ = True
|
||||||
|
|
||||||
|
# URL prefix to use, please see documentation for more details
|
||||||
|
URL_PREFIX = '__PATHURL__'
|
||||||
|
|
||||||
|
# Absolute filesystem path to the directory that will hold user-uploaded files.
|
||||||
|
# Example: "/home/media/media.lawrence.com/media/"
|
||||||
|
MEDIA_ROOT = os.path.join(DATA_DIR, 'media')
|
||||||
|
|
||||||
|
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
|
||||||
|
# trailing slash.
|
||||||
|
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
|
||||||
|
MEDIA_URL = '{0}/media/'.format(URL_PREFIX)
|
||||||
|
|
||||||
|
# Absolute path to the directory static files should be collected to.
|
||||||
|
# Don't put anything in this directory yourself; store your static files
|
||||||
|
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
|
||||||
|
# Example: "/home/media/media.lawrence.com/static/"
|
||||||
|
STATIC_ROOT = os.path.join(DATA_DIR, 'static')
|
||||||
|
|
||||||
|
# URL prefix for static files.
|
||||||
|
# Example: "http://media.lawrence.com/static/"
|
||||||
|
STATIC_URL = '{0}/static/'.format(URL_PREFIX)
|
||||||
|
|
||||||
|
# Additional locations of static files
|
||||||
|
STATICFILES_DIRS = (
|
||||||
|
# Put strings here, like "/home/html/static" or "C:/www/django/static".
|
||||||
|
# Always use forward slashes, even on Windows.
|
||||||
|
# Don't forget to use absolute paths, not relative paths.
|
||||||
|
)
|
||||||
|
|
||||||
|
# List of finder classes that know how to find static files in
|
||||||
|
# various locations.
|
||||||
|
STATICFILES_FINDERS = (
|
||||||
|
'django.contrib.staticfiles.finders.FileSystemFinder',
|
||||||
|
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
|
||||||
|
'compressor.finders.CompressorFinder',
|
||||||
|
)
|
||||||
|
|
||||||
|
# Make this unique, and don't share it with anybody.
|
||||||
|
# You can generate it using weblate/examples/generate-secret-key
|
||||||
|
SECRET_KEY = '__KEY__' # noqa
|
||||||
|
|
||||||
|
TEMPLATES = [
|
||||||
|
{
|
||||||
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||||
|
'DIRS': [
|
||||||
|
os.path.join(BASE_DIR, 'weblate', 'templates'),
|
||||||
|
],
|
||||||
|
'OPTIONS': {
|
||||||
|
'context_processors': [
|
||||||
|
'django.contrib.auth.context_processors.auth',
|
||||||
|
'django.template.context_processors.debug',
|
||||||
|
'django.template.context_processors.i18n',
|
||||||
|
'django.template.context_processors.request',
|
||||||
|
'django.template.context_processors.csrf',
|
||||||
|
'django.contrib.messages.context_processors.messages',
|
||||||
|
'weblate.trans.context_processors.weblate_context',
|
||||||
|
],
|
||||||
|
'loaders': [
|
||||||
|
('django.template.loaders.cached.Loader', [
|
||||||
|
'django.template.loaders.filesystem.Loader',
|
||||||
|
'django.template.loaders.app_directories.Loader',
|
||||||
|
]),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# GitHub username for sending pull requests.
|
||||||
|
# Please see the documentation for more details.
|
||||||
|
GITHUB_USERNAME = "__GITHUBUSER__"
|
||||||
|
|
||||||
|
# Authentication configuration
|
||||||
|
AUTHENTICATION_BACKENDS = (
|
||||||
|
'social_core.backends.email.EmailAuth',
|
||||||
|
# 'social_core.backends.google.GoogleOAuth2',
|
||||||
|
# 'social_core.backends.github.GithubOAuth2',
|
||||||
|
# 'social_core.backends.bitbucket.BitbucketOAuth',
|
||||||
|
'social_core.backends.suse.OpenSUSEOpenId',
|
||||||
|
'social_core.backends.ubuntu.UbuntuOpenId',
|
||||||
|
'social_core.backends.fedora.FedoraOpenId',
|
||||||
|
# 'social_core.backends.facebook.FacebookOAuth2',
|
||||||
|
'weblate.accounts.auth.WeblateUserBackend',
|
||||||
|
)
|
||||||
|
|
||||||
|
# Custom user model
|
||||||
|
AUTH_USER_MODEL = 'weblate_auth.User'
|
||||||
|
|
||||||
|
# Social auth backends setup
|
||||||
|
SOCIAL_AUTH_GITHUB_KEY = ''
|
||||||
|
SOCIAL_AUTH_GITHUB_SECRET = ''
|
||||||
|
SOCIAL_AUTH_GITHUB_SCOPE = ['user:email']
|
||||||
|
|
||||||
|
SOCIAL_AUTH_BITBUCKET_KEY = ''
|
||||||
|
SOCIAL_AUTH_BITBUCKET_SECRET = ''
|
||||||
|
SOCIAL_AUTH_BITBUCKET_VERIFIED_EMAILS_ONLY = True
|
||||||
|
|
||||||
|
SOCIAL_AUTH_FACEBOOK_KEY = ''
|
||||||
|
SOCIAL_AUTH_FACEBOOK_SECRET = ''
|
||||||
|
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email', 'public_profile']
|
||||||
|
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {'fields': 'id,name,email'}
|
||||||
|
SOCIAL_AUTH_FACEBOOK_API_VERSION = '3.1'
|
||||||
|
|
||||||
|
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = ''
|
||||||
|
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = ''
|
||||||
|
|
||||||
|
# Social auth settings
|
||||||
|
SOCIAL_AUTH_PIPELINE = (
|
||||||
|
'social_core.pipeline.social_auth.social_details',
|
||||||
|
'social_core.pipeline.social_auth.social_uid',
|
||||||
|
'social_core.pipeline.social_auth.auth_allowed',
|
||||||
|
'social_core.pipeline.social_auth.social_user',
|
||||||
|
'weblate.accounts.pipeline.store_params',
|
||||||
|
'weblate.accounts.pipeline.verify_open',
|
||||||
|
'social_core.pipeline.user.get_username',
|
||||||
|
'weblate.accounts.pipeline.require_email',
|
||||||
|
'social_core.pipeline.mail.mail_validation',
|
||||||
|
'weblate.accounts.pipeline.revoke_mail_code',
|
||||||
|
'weblate.accounts.pipeline.ensure_valid',
|
||||||
|
'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',
|
||||||
|
'social_core.pipeline.social_auth.load_extra_data',
|
||||||
|
'weblate.accounts.pipeline.cleanup_next',
|
||||||
|
'weblate.accounts.pipeline.user_full_name',
|
||||||
|
'weblate.accounts.pipeline.store_email',
|
||||||
|
'weblate.accounts.pipeline.notify_connect',
|
||||||
|
'weblate.accounts.pipeline.password_reset',
|
||||||
|
)
|
||||||
|
SOCIAL_AUTH_DISCONNECT_PIPELINE = (
|
||||||
|
'social_core.pipeline.disconnect.allowed_to_disconnect',
|
||||||
|
'social_core.pipeline.disconnect.get_entries',
|
||||||
|
'social_core.pipeline.disconnect.revoke_tokens',
|
||||||
|
'weblate.accounts.pipeline.cycle_session',
|
||||||
|
'weblate.accounts.pipeline.adjust_primary_mail',
|
||||||
|
'weblate.accounts.pipeline.notify_disconnect',
|
||||||
|
'social_core.pipeline.disconnect.disconnect',
|
||||||
|
'weblate.accounts.pipeline.cleanup_next',
|
||||||
|
)
|
||||||
|
|
||||||
|
# Custom authentication strategy
|
||||||
|
SOCIAL_AUTH_STRATEGY = 'weblate.accounts.strategy.WeblateStrategy'
|
||||||
|
|
||||||
|
# Raise exceptions so that we can handle them later
|
||||||
|
SOCIAL_AUTH_RAISE_EXCEPTIONS = True
|
||||||
|
|
||||||
|
SOCIAL_AUTH_EMAIL_VALIDATION_FUNCTION = \
|
||||||
|
'weblate.accounts.pipeline.send_validation'
|
||||||
|
SOCIAL_AUTH_EMAIL_VALIDATION_URL = \
|
||||||
|
'{0}/accounts/email-sent/'.format(URL_PREFIX)
|
||||||
|
SOCIAL_AUTH_LOGIN_ERROR_URL = \
|
||||||
|
'{0}/accounts/login/'.format(URL_PREFIX)
|
||||||
|
SOCIAL_AUTH_EMAIL_FORM_URL = \
|
||||||
|
'{0}/accounts/email/'.format(URL_PREFIX)
|
||||||
|
SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL = \
|
||||||
|
'{0}/accounts/profile/#account'.format(URL_PREFIX)
|
||||||
|
SOCIAL_AUTH_PROTECTED_USER_FIELDS = ('email',)
|
||||||
|
SOCIAL_AUTH_SLUGIFY_USERNAMES = True
|
||||||
|
SOCIAL_AUTH_SLUGIFY_FUNCTION = 'weblate.accounts.pipeline.slugify_username'
|
||||||
|
|
||||||
|
# Password validation configuration
|
||||||
|
AUTH_PASSWORD_VALIDATORS = [
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', # noqa: E501, pylint: disable=line-too-long
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
||||||
|
'OPTIONS': {
|
||||||
|
'min_length': 6,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'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', 'full_name')
|
||||||
|
# }
|
||||||
|
# },
|
||||||
|
]
|
||||||
|
|
||||||
|
# Allow new user registrations
|
||||||
|
REGISTRATION_OPEN = True
|
||||||
|
|
||||||
|
# Middleware
|
||||||
|
MIDDLEWARE = [
|
||||||
|
'weblate.middleware.ProxyMiddleware',
|
||||||
|
'django.middleware.security.SecurityMiddleware',
|
||||||
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
'django.middleware.locale.LocaleMiddleware',
|
||||||
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
|
'weblate.accounts.middleware.AuthenticationMiddleware',
|
||||||
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
|
'social_django.middleware.SocialAuthExceptionMiddleware',
|
||||||
|
'weblate.accounts.middleware.RequireLoginMiddleware',
|
||||||
|
'weblate.middleware.SecurityMiddleware',
|
||||||
|
]
|
||||||
|
|
||||||
|
ROOT_URLCONF = 'weblate.urls'
|
||||||
|
|
||||||
|
# Django and Weblate apps
|
||||||
|
INSTALLED_APPS = (
|
||||||
|
'django.contrib.auth',
|
||||||
|
'django.contrib.contenttypes',
|
||||||
|
'django.contrib.sessions',
|
||||||
|
'django.contrib.sites',
|
||||||
|
'django.contrib.messages',
|
||||||
|
'django.contrib.staticfiles',
|
||||||
|
'django.contrib.admin.apps.SimpleAdminConfig',
|
||||||
|
'django.contrib.admindocs',
|
||||||
|
'django.contrib.sitemaps',
|
||||||
|
'social_django',
|
||||||
|
'crispy_forms',
|
||||||
|
'compressor',
|
||||||
|
'rest_framework',
|
||||||
|
'rest_framework.authtoken',
|
||||||
|
'weblate.addons',
|
||||||
|
'weblate.auth',
|
||||||
|
'weblate.checks',
|
||||||
|
'weblate.formats',
|
||||||
|
'weblate.machinery',
|
||||||
|
'weblate.trans',
|
||||||
|
'weblate.lang',
|
||||||
|
'weblate.langdata',
|
||||||
|
'weblate.memory',
|
||||||
|
'weblate.screenshots',
|
||||||
|
'weblate.fonts',
|
||||||
|
'weblate.accounts',
|
||||||
|
'weblate.utils',
|
||||||
|
'weblate.vcs',
|
||||||
|
'weblate.wladmin',
|
||||||
|
'weblate',
|
||||||
|
|
||||||
|
# Optional: Git exporter
|
||||||
|
# 'weblate.gitexport',
|
||||||
|
)
|
||||||
|
|
||||||
|
# Path to locales
|
||||||
|
LOCALE_PATHS = (os.path.join(BASE_DIR, 'weblate', 'locale'), )
|
||||||
|
|
||||||
|
# Custom exception reporter to include some details
|
||||||
|
DEFAULT_EXCEPTION_REPORTER_FILTER = \
|
||||||
|
'weblate.trans.debug.WeblateExceptionReporterFilter'
|
||||||
|
|
||||||
|
# Default logging of Weblate messages
|
||||||
|
# - to syslog in production (if available)
|
||||||
|
# - otherwise to console
|
||||||
|
# - you can also choose 'logfile' to log into separate file
|
||||||
|
# after configuring it below
|
||||||
|
|
||||||
|
# Detect if we can connect to syslog
|
||||||
|
HAVE_SYSLOG = False
|
||||||
|
if platform.system() != 'Windows':
|
||||||
|
try:
|
||||||
|
handler = SysLogHandler(
|
||||||
|
address='/dev/log', facility=SysLogHandler.LOG_LOCAL2
|
||||||
|
)
|
||||||
|
handler.close()
|
||||||
|
HAVE_SYSLOG = True
|
||||||
|
except IOError:
|
||||||
|
HAVE_SYSLOG = False
|
||||||
|
|
||||||
|
if DEBUG or not HAVE_SYSLOG:
|
||||||
|
DEFAULT_LOG = 'console'
|
||||||
|
else:
|
||||||
|
DEFAULT_LOG = 'syslog'
|
||||||
|
|
||||||
|
# A sample logging configuration. The only tangible logging
|
||||||
|
# performed by this configuration is to send an email to
|
||||||
|
# the site admins on every HTTP 500 error when DEBUG=False.
|
||||||
|
# See http://docs.djangoproject.com/en/stable/topics/logging for
|
||||||
|
# more details on how to customize your logging configuration.
|
||||||
|
LOGGING = {
|
||||||
|
'version': 1,
|
||||||
|
'disable_existing_loggers': True,
|
||||||
|
'filters': {
|
||||||
|
'require_debug_false': {
|
||||||
|
'()': 'django.utils.log.RequireDebugFalse'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'formatters': {
|
||||||
|
'syslog': {
|
||||||
|
'format': 'weblate[%(process)d]: %(levelname)s %(message)s'
|
||||||
|
},
|
||||||
|
'simple': {
|
||||||
|
'format': '%(levelname)s %(message)s'
|
||||||
|
},
|
||||||
|
'logfile': {
|
||||||
|
'format': '%(asctime)s %(levelname)s %(message)s'
|
||||||
|
},
|
||||||
|
'django.server': {
|
||||||
|
'()': 'django.utils.log.ServerFormatter',
|
||||||
|
'format': '[%(server_time)s] %(message)s',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'handlers': {
|
||||||
|
'mail_admins': {
|
||||||
|
'level': 'ERROR',
|
||||||
|
'filters': ['require_debug_false'],
|
||||||
|
'class': 'django.utils.log.AdminEmailHandler',
|
||||||
|
'include_html': True,
|
||||||
|
},
|
||||||
|
'console': {
|
||||||
|
'level': 'DEBUG',
|
||||||
|
'class': 'logging.StreamHandler',
|
||||||
|
'formatter': 'simple'
|
||||||
|
},
|
||||||
|
'django.server': {
|
||||||
|
'level': 'INFO',
|
||||||
|
'class': 'logging.StreamHandler',
|
||||||
|
'formatter': 'django.server',
|
||||||
|
},
|
||||||
|
'syslog': {
|
||||||
|
'level': 'DEBUG',
|
||||||
|
'class': 'logging.handlers.SysLogHandler',
|
||||||
|
'formatter': 'syslog',
|
||||||
|
'address': '/dev/log',
|
||||||
|
'facility': SysLogHandler.LOG_LOCAL2,
|
||||||
|
},
|
||||||
|
# Logging to a file
|
||||||
|
# 'logfile': {
|
||||||
|
# 'level':'DEBUG',
|
||||||
|
# 'class':'logging.handlers.RotatingFileHandler',
|
||||||
|
# 'filename': "/var/log/weblate/weblate.log",
|
||||||
|
# 'maxBytes': 100000,
|
||||||
|
# 'backupCount': 3,
|
||||||
|
# 'formatter': 'logfile',
|
||||||
|
# },
|
||||||
|
},
|
||||||
|
'loggers': {
|
||||||
|
'django.request': {
|
||||||
|
'handlers': ['mail_admins', DEFAULT_LOG],
|
||||||
|
'level': 'ERROR',
|
||||||
|
'propagate': True,
|
||||||
|
},
|
||||||
|
'django.server': {
|
||||||
|
'handlers': ['django.server'],
|
||||||
|
'level': 'INFO',
|
||||||
|
'propagate': False,
|
||||||
|
},
|
||||||
|
# Logging database queries
|
||||||
|
# 'django.db.backends': {
|
||||||
|
# 'handlers': [DEFAULT_LOG],
|
||||||
|
# 'level': 'DEBUG',
|
||||||
|
# },
|
||||||
|
'weblate': {
|
||||||
|
'handlers': [DEFAULT_LOG],
|
||||||
|
'level': 'DEBUG',
|
||||||
|
},
|
||||||
|
# Logging search operations
|
||||||
|
'weblate.search': {
|
||||||
|
'handlers': [DEFAULT_LOG],
|
||||||
|
'level': 'INFO',
|
||||||
|
},
|
||||||
|
# Logging VCS operations
|
||||||
|
'weblate.vcs': {
|
||||||
|
'handlers': [DEFAULT_LOG],
|
||||||
|
'level': 'WARNING',
|
||||||
|
},
|
||||||
|
# Python Social Auth logging
|
||||||
|
# 'social': {
|
||||||
|
# 'handlers': [DEFAULT_LOG],
|
||||||
|
# 'level': 'DEBUG',
|
||||||
|
# },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Logging of management commands to console
|
||||||
|
if (os.environ.get('DJANGO_IS_MANAGEMENT_COMMAND', False)
|
||||||
|
and 'console' not in LOGGING['loggers']['weblate']['handlers']):
|
||||||
|
LOGGING['loggers']['weblate']['handlers'].append('console')
|
||||||
|
|
||||||
|
# Remove syslog setup if it's not present
|
||||||
|
if not HAVE_SYSLOG:
|
||||||
|
del LOGGING['handlers']['syslog']
|
||||||
|
|
||||||
|
# List of machine translations
|
||||||
|
# MT_SERVICES = (
|
||||||
|
# 'weblate.machinery.apertium.ApertiumAPYTranslation',
|
||||||
|
# 'weblate.machinery.baidu.BaiduTranslation',
|
||||||
|
# 'weblate.machinery.deepl.DeepLTranslation',
|
||||||
|
# 'weblate.machinery.glosbe.GlosbeTranslation',
|
||||||
|
# 'weblate.machinery.google.GoogleTranslation',
|
||||||
|
# 'weblate.machinery.microsoft.MicrosoftCognitiveTranslation',
|
||||||
|
# 'weblate.machinery.microsoftterminology.MicrosoftTerminologyService',
|
||||||
|
# 'weblate.machinery.mymemory.MyMemoryTranslation',
|
||||||
|
# 'weblate.machinery.netease.NeteaseSightTranslation',
|
||||||
|
# 'weblate.machinery.tmserver.AmagamaTranslation',
|
||||||
|
# 'weblate.machinery.tmserver.TMServerTranslation',
|
||||||
|
# 'weblate.machinery.yandex.YandexTranslation',
|
||||||
|
# 'weblate.machinery.weblatetm.WeblateTranslation',
|
||||||
|
# 'weblate.machinery.saptranslationhub.SAPTranslationHub',
|
||||||
|
# 'weblate.machinery.youdao.YoudaoTranslation',
|
||||||
|
# 'weblate.memory.machine.WeblateMemory',
|
||||||
|
# )
|
||||||
|
|
||||||
|
# Machine translation API keys
|
||||||
|
|
||||||
|
# URL of the Apertium APy server
|
||||||
|
MT_APERTIUM_APY = None
|
||||||
|
|
||||||
|
# DeepL API key
|
||||||
|
MT_DEEPL_KEY = None
|
||||||
|
|
||||||
|
# Microsoft Cognitive Services Translator API, register at
|
||||||
|
# https://portal.azure.com/
|
||||||
|
MT_MICROSOFT_COGNITIVE_KEY = None
|
||||||
|
|
||||||
|
# MyMemory identification email, see
|
||||||
|
# https://mymemory.translated.net/doc/spec.php
|
||||||
|
MT_MYMEMORY_EMAIL = None
|
||||||
|
|
||||||
|
# Optional MyMemory credentials to access private translation memory
|
||||||
|
MT_MYMEMORY_USER = None
|
||||||
|
MT_MYMEMORY_KEY = None
|
||||||
|
|
||||||
|
# Google API key for Google Translate API
|
||||||
|
MT_GOOGLE_KEY = None
|
||||||
|
|
||||||
|
# Baidu app key and secret
|
||||||
|
MT_BAIDU_ID = None
|
||||||
|
MT_BAIDU_SECRET = None
|
||||||
|
|
||||||
|
# Youdao Zhiyun app key and secret
|
||||||
|
MT_YOUDAO_ID = None
|
||||||
|
MT_YOUDAO_SECRET = None
|
||||||
|
|
||||||
|
# Netease Sight (Jianwai) app key and secret
|
||||||
|
MT_NETEASE_KEY = None
|
||||||
|
MT_NETEASE_SECRET = None
|
||||||
|
|
||||||
|
# API key for Yandex Translate API
|
||||||
|
MT_YANDEX_KEY = None
|
||||||
|
|
||||||
|
# tmserver URL
|
||||||
|
MT_TMSERVER = None
|
||||||
|
|
||||||
|
# SAP Translation Hub
|
||||||
|
MT_SAP_BASE_URL = None
|
||||||
|
MT_SAP_SANDBOX_APIKEY = None
|
||||||
|
MT_SAP_USERNAME = None
|
||||||
|
MT_SAP_PASSWORD = None
|
||||||
|
MT_SAP_USE_MT = True
|
||||||
|
|
||||||
|
# Title of site to use
|
||||||
|
SITE_TITLE = 'Weblate'
|
||||||
|
|
||||||
|
# Whether site uses https
|
||||||
|
ENABLE_HTTPS = True
|
||||||
|
|
||||||
|
# Use HTTPS when creating redirect URLs for social authentication, see
|
||||||
|
# documentation for more details:
|
||||||
|
# https://python-social-auth-docs.readthedocs.io/en/latest/configuration/settings.html#processing-redirects-and-urlopen
|
||||||
|
SOCIAL_AUTH_REDIRECT_IS_HTTPS = ENABLE_HTTPS
|
||||||
|
|
||||||
|
# Make CSRF cookie HttpOnly, see documentation for more details:
|
||||||
|
# https://docs.djangoproject.com/en/1.11/ref/settings/#csrf-cookie-httponly
|
||||||
|
CSRF_COOKIE_HTTPONLY = True
|
||||||
|
CSRF_COOKIE_SECURE = ENABLE_HTTPS
|
||||||
|
# Store CSRF token in session
|
||||||
|
CSRF_USE_SESSIONS = True
|
||||||
|
# Customize CSRF failure view
|
||||||
|
CSRF_FAILURE_VIEW = 'weblate.trans.views.error.csrf_failure'
|
||||||
|
SESSION_COOKIE_SECURE = ENABLE_HTTPS
|
||||||
|
# SSL redirect
|
||||||
|
SECURE_SSL_REDIRECT = ENABLE_HTTPS
|
||||||
|
# Session cookie age (in seconds)
|
||||||
|
SESSION_COOKIE_AGE = 1209600
|
||||||
|
|
||||||
|
# Some security headers
|
||||||
|
SECURE_BROWSER_XSS_FILTER = True
|
||||||
|
X_FRAME_OPTIONS = 'DENY'
|
||||||
|
SECURE_CONTENT_TYPE_NOSNIFF = True
|
||||||
|
|
||||||
|
# Optionally enable HSTS
|
||||||
|
SECURE_HSTS_SECONDS = 0
|
||||||
|
SECURE_HSTS_PRELOAD = False
|
||||||
|
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
|
||||||
|
|
||||||
|
# URL of login
|
||||||
|
LOGIN_URL = '{0}/accounts/login/'.format(URL_PREFIX)
|
||||||
|
|
||||||
|
# URL of logout
|
||||||
|
LOGOUT_URL = '{0}/accounts/logout/'.format(URL_PREFIX)
|
||||||
|
|
||||||
|
# Default location for login
|
||||||
|
LOGIN_REDIRECT_URL = '{0}/'.format(URL_PREFIX)
|
||||||
|
|
||||||
|
# Anonymous user name
|
||||||
|
ANONYMOUS_USER_NAME = 'anonymous'
|
||||||
|
|
||||||
|
# Reverse proxy settings
|
||||||
|
IP_PROXY_HEADER = 'HTTP_X_FORWARDED_FOR'
|
||||||
|
IP_BEHIND_REVERSE_PROXY = False
|
||||||
|
IP_PROXY_OFFSET = 0
|
||||||
|
|
||||||
|
# Sending HTML in mails
|
||||||
|
EMAIL_SEND_HTML = True
|
||||||
|
|
||||||
|
# Subject of emails includes site title
|
||||||
|
EMAIL_SUBJECT_PREFIX = '[{0}] '.format(SITE_TITLE)
|
||||||
|
|
||||||
|
EMAIL_BACKEND = 'django_sendmail_backend.backends.EmailBackend'
|
||||||
|
|
||||||
|
# Enable remote hooks
|
||||||
|
ENABLE_HOOKS = True
|
||||||
|
|
||||||
|
# Number of nearby messages to show in each direction
|
||||||
|
NEARBY_MESSAGES = 5
|
||||||
|
|
||||||
|
# By default the length of a given translation is limited to the length of
|
||||||
|
# the source string * 10 characters. Set this option to False to allow longer
|
||||||
|
# translations (up to 10.000 characters)
|
||||||
|
LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH = True
|
||||||
|
|
||||||
|
# Use simple language codes for default language/country combinations
|
||||||
|
SIMPLIFY_LANGUAGES = True
|
||||||
|
|
||||||
|
# Render forms using bootstrap
|
||||||
|
CRISPY_TEMPLATE_PACK = 'bootstrap3'
|
||||||
|
|
||||||
|
# List of quality checks
|
||||||
|
# CHECK_LIST = (
|
||||||
|
# 'weblate.checks.same.SameCheck',
|
||||||
|
# 'weblate.checks.chars.BeginNewlineCheck',
|
||||||
|
# 'weblate.checks.chars.EndNewlineCheck',
|
||||||
|
# 'weblate.checks.chars.BeginSpaceCheck',
|
||||||
|
# 'weblate.checks.chars.EndSpaceCheck',
|
||||||
|
# 'weblate.checks.chars.EndStopCheck',
|
||||||
|
# 'weblate.checks.chars.EndColonCheck',
|
||||||
|
# 'weblate.checks.chars.EndQuestionCheck',
|
||||||
|
# 'weblate.checks.chars.EndExclamationCheck',
|
||||||
|
# 'weblate.checks.chars.EndEllipsisCheck',
|
||||||
|
# 'weblate.checks.chars.EndSemicolonCheck',
|
||||||
|
# 'weblate.checks.chars.MaxLengthCheck',
|
||||||
|
# 'weblate.checks.chars.KashidaCheck',
|
||||||
|
# 'weblate.checks.format.PythonFormatCheck',
|
||||||
|
# 'weblate.checks.format.PythonBraceFormatCheck',
|
||||||
|
# 'weblate.checks.format.PHPFormatCheck',
|
||||||
|
# 'weblate.checks.format.CFormatCheck',
|
||||||
|
# 'weblate.checks.format.PerlFormatCheck',
|
||||||
|
# 'weblate.checks.format.JavaScriptFormatCheck',
|
||||||
|
# 'weblate.checks.format.CSharpFormatCheck',
|
||||||
|
# 'weblate.checks.format.JavaFormatCheck',
|
||||||
|
# 'weblate.checks.format.JavaMessageFormatCheck',
|
||||||
|
# 'weblate.checks.angularjs.AngularJSInterpolationCheck',
|
||||||
|
# 'weblate.checks.consistency.PluralsCheck',
|
||||||
|
# 'weblate.checks.consistency.SamePluralsCheck',
|
||||||
|
# 'weblate.checks.consistency.ConsistencyCheck',
|
||||||
|
# 'weblate.checks.consistency.TranslatedCheck',
|
||||||
|
# 'weblate.checks.chars.NewlineCountingCheck',
|
||||||
|
# 'weblate.checks.markup.BBCodeCheck',
|
||||||
|
# 'weblate.checks.chars.ZeroWidthSpaceCheck',
|
||||||
|
# 'weblate.checks.render.MaxSizeCheck',
|
||||||
|
# 'weblate.checks.markup.XMLValidityCheck',
|
||||||
|
# 'weblate.checks.markup.XMLTagsCheck',
|
||||||
|
# 'weblate.checks.markup.MarkdownRefLinkCheck',
|
||||||
|
# 'weblate.checks.markup.MarkdownLinkCheck',
|
||||||
|
# 'weblate.checks.markup.MarkdownSyntaxCheck',
|
||||||
|
# 'weblate.checks.markup.URLCheck',
|
||||||
|
# 'weblate.checks.source.OptionalPluralCheck',
|
||||||
|
# 'weblate.checks.source.EllipsisCheck',
|
||||||
|
# 'weblate.checks.source.MultipleFailingCheck',
|
||||||
|
# )
|
||||||
|
|
||||||
|
# List of automatic fixups
|
||||||
|
# AUTOFIX_LIST = (
|
||||||
|
# 'weblate.trans.autofixes.whitespace.SameBookendingWhitespace',
|
||||||
|
# 'weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis',
|
||||||
|
# 'weblate.trans.autofixes.chars.RemoveZeroSpace',
|
||||||
|
# 'weblate.trans.autofixes.chars.RemoveControlChars',
|
||||||
|
# )
|
||||||
|
|
||||||
|
# List of enabled addons
|
||||||
|
# WEBLATE_ADDONS = (
|
||||||
|
# 'weblate.addons.gettext.GenerateMoAddon',
|
||||||
|
# 'weblate.addons.gettext.UpdateLinguasAddon',
|
||||||
|
# 'weblate.addons.gettext.UpdateConfigureAddon',
|
||||||
|
# 'weblate.addons.gettext.MsgmergeAddon',
|
||||||
|
# 'weblate.addons.gettext.GettextCustomizeAddon',
|
||||||
|
# 'weblate.addons.gettext.GettextAuthorComments',
|
||||||
|
# 'weblate.addons.cleanup.CleanupAddon',
|
||||||
|
# 'weblate.addons.consistency.LangaugeConsistencyAddon',
|
||||||
|
# 'weblate.addons.discovery.DiscoveryAddon',
|
||||||
|
# 'weblate.addons.flags.SourceEditAddon',
|
||||||
|
# 'weblate.addons.flags.TargetEditAddon',
|
||||||
|
# 'weblate.addons.flags.SameEditAddon',
|
||||||
|
# 'weblate.addons.generate.GenerateFileAddon',
|
||||||
|
# 'weblate.addons.json.JSONCustomizeAddon',
|
||||||
|
# 'weblate.addons.properties.PropertiesSortAddon',
|
||||||
|
# 'weblate.addons.git.GitSquashAddon',
|
||||||
|
# 'weblate.addons.removal.RemoveComments',
|
||||||
|
# 'weblate.addons.removal.RemoveSuggestions',
|
||||||
|
# )
|
||||||
|
|
||||||
|
# E-mail address that error messages come from.
|
||||||
|
SERVER_EMAIL = 'noreply@__DOMAIN__'
|
||||||
|
|
||||||
|
# Default email address to use for various automated correspondence from
|
||||||
|
# the site managers. Used for registration emails.
|
||||||
|
DEFAULT_FROM_EMAIL = '__ADMINMAIL__'
|
||||||
|
|
||||||
|
# List of URLs your site is supposed to serve
|
||||||
|
ALLOWED_HOSTS = ['__DOMAIN__']
|
||||||
|
|
||||||
|
CACHES = {
|
||||||
|
'default': {
|
||||||
|
'BACKEND': 'django_redis.cache.RedisCache',
|
||||||
|
'LOCATION': 'redis://127.0.0.1:6379/__REDIS_DB__',
|
||||||
|
'OPTIONS': {
|
||||||
|
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
|
||||||
|
'PARSER_CLASS': 'redis.connection.HiredisParser',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'avatar': {
|
||||||
|
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
|
||||||
|
'LOCATION': os.path.join(BASE_DIR, 'avatar-cache'),
|
||||||
|
'TIMEOUT': 3600,
|
||||||
|
'OPTIONS': {
|
||||||
|
'MAX_ENTRIES': 1000,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Example configuration for caching
|
||||||
|
# CACHES = {
|
||||||
|
# 'default': {
|
||||||
|
# 'BACKEND': 'django_redis.cache.RedisCache',
|
||||||
|
# 'LOCATION': 'redis://127.0.0.1:6379/0',
|
||||||
|
# # If redis is running on same host as Weblate, you might
|
||||||
|
# # want to use unix sockets instead:
|
||||||
|
# # 'LOCATION': 'unix:///var/run/redis/redis.sock?db=0',
|
||||||
|
# 'OPTIONS': {
|
||||||
|
# 'CLIENT_CLASS': 'django_redis.client.DefaultClient',
|
||||||
|
# 'PARSER_CLASS': 'redis.connection.HiredisParser',
|
||||||
|
# }
|
||||||
|
# },
|
||||||
|
# 'avatar': {
|
||||||
|
# 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
|
||||||
|
# 'LOCATION': os.path.join(DATA_DIR, 'avatar-cache'),
|
||||||
|
# 'TIMEOUT': 3600,
|
||||||
|
# 'OPTIONS': {
|
||||||
|
# 'MAX_ENTRIES': 1000,
|
||||||
|
# },
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
||||||
|
# REST framework settings for API
|
||||||
|
REST_FRAMEWORK = {
|
||||||
|
# Use Django's standard `django.contrib.auth` permissions,
|
||||||
|
# or allow read-only access for unauthenticated users.
|
||||||
|
'DEFAULT_PERMISSION_CLASSES': [
|
||||||
|
'rest_framework.permissions.IsAuthenticatedOrReadOnly'
|
||||||
|
],
|
||||||
|
'DEFAULT_AUTHENTICATION_CLASSES': (
|
||||||
|
'rest_framework.authentication.TokenAuthentication',
|
||||||
|
'weblate.api.authentication.BearerAuthentication',
|
||||||
|
'rest_framework.authentication.SessionAuthentication',
|
||||||
|
),
|
||||||
|
'DEFAULT_THROTTLE_CLASSES': (
|
||||||
|
'rest_framework.throttling.AnonRateThrottle',
|
||||||
|
'rest_framework.throttling.UserRateThrottle'
|
||||||
|
),
|
||||||
|
'DEFAULT_THROTTLE_RATES': {
|
||||||
|
'anon': '100/day',
|
||||||
|
'user': '1000/day'
|
||||||
|
},
|
||||||
|
'DEFAULT_PAGINATION_CLASS': (
|
||||||
|
'rest_framework.pagination.PageNumberPagination'
|
||||||
|
),
|
||||||
|
'PAGE_SIZE': 20,
|
||||||
|
'VIEW_DESCRIPTION_FUNCTION': 'weblate.api.views.get_view_description',
|
||||||
|
'UNAUTHENTICATED_USER': 'weblate.auth.models.get_anonymous',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Example for restricting access to logged in users
|
||||||
|
# LOGIN_REQUIRED_URLS = (
|
||||||
|
# r'/(.*)$',
|
||||||
|
# )
|
||||||
|
|
||||||
|
# In such case you will want to include some of the exceptions
|
||||||
|
# LOGIN_REQUIRED_URLS_EXCEPTIONS = (
|
||||||
|
# r'/accounts/(.*)$', # Required for login
|
||||||
|
# r'/admin/login/(.*)$', # Required for admin login
|
||||||
|
# r'/static/(.*)$', # Required for development mode
|
||||||
|
# r'/widgets/(.*)$', # Allowing public access to widgets
|
||||||
|
# r'/data/(.*)$', # Allowing public access to data exports
|
||||||
|
# r'/hooks/(.*)$', # Allowing public access to notification hooks
|
||||||
|
# r'/healthz/$', # Allowing public access to health check
|
||||||
|
# r'/api/(.*)$', # Allowing access to API
|
||||||
|
# r'/js/i18n/$', # JavaScript localization
|
||||||
|
# r'/contact/$', # Optional for contact form
|
||||||
|
# r'/legal/(.*)$', # Optional for legal app
|
||||||
|
# )
|
||||||
|
|
||||||
|
# Silence some of the Django system checks
|
||||||
|
SILENCED_SYSTEM_CHECKS = [
|
||||||
|
# We have modified django.contrib.auth.middleware.AuthenticationMiddleware
|
||||||
|
# as weblate.accounts.middleware.AuthenticationMiddleware
|
||||||
|
'admin.E408',
|
||||||
|
]
|
||||||
|
|
||||||
|
# Celery worker configuration for testing
|
||||||
|
# CELERY_TASK_ALWAYS_EAGER = True
|
||||||
|
# CELERY_BROKER_URL = 'memory://'
|
||||||
|
# CELERY_TASK_EAGER_PROPAGATES = True
|
||||||
|
# Celery worker configuration for production
|
||||||
|
CELERY_TASK_ALWAYS_EAGER = False
|
||||||
|
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/__REDIS_DB__'
|
||||||
|
CELERY_RESULT_BACKEND = CELERY_BROKER_URL
|
||||||
|
|
||||||
|
# Celery settings, it is not recommended to change these
|
||||||
|
CELERY_WORKER_PREFETCH_MULTIPLIER = 0
|
||||||
|
CELERY_WORKER_MAX_MEMORY_PER_CHILD = 200000
|
||||||
|
CELERY_BEAT_SCHEDULE_FILENAME = os.path.join(
|
||||||
|
DATA_DIR, 'celery', 'beat-schedule'
|
||||||
|
)
|
||||||
|
CELERY_TASK_ROUTES = {
|
||||||
|
'weblate.trans.search.*': {'queue': 'search'},
|
||||||
|
'weblate.trans.tasks.optimize_fulltext': {'queue': 'search'},
|
||||||
|
'weblate.trans.tasks.cleanup_fulltext': {'queue': 'search'},
|
||||||
|
'weblate.memory.tasks.*': {'queue': 'memory'},
|
||||||
|
'weblate.accounts.tasks.notify_change': {'queue': 'notify'},
|
||||||
|
}
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
"id": "weblate",
|
"id": "weblate",
|
||||||
"packaging_format": 1,
|
"packaging_format": 1,
|
||||||
"requirements": {
|
"requirements": {
|
||||||
"yunohost": ">= 3.4.0"
|
"yunohost": ">= 3.5.0"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "A translation platform using Git and Python"
|
"en": "A translation platform using Git and Python"
|
||||||
},
|
},
|
||||||
"version": "3.6.1~ynh1",
|
"version": "3.7.0~ynh1",
|
||||||
"url": "https://weblate.org",
|
"url": "https://weblate.org",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
|
@ -44,6 +44,9 @@
|
||||||
"ask": {
|
"ask": {
|
||||||
"en": "Should Weblate be public accessible?"
|
"en": "Should Weblate be public accessible?"
|
||||||
},
|
},
|
||||||
|
"help": {
|
||||||
|
"en": "Any YunoHost user and anonymous people from the web will be able to access the application"
|
||||||
|
},
|
||||||
"default": "0"
|
"default": "0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,22 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
current_version="3.6.1"
|
#=================================================
|
||||||
|
# COMMON VARIABLES
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# dependencies used by the app
|
||||||
|
pkg_dependencies="libxml2-dev libxslt-dev libfreetype6-dev \
|
||||||
|
libjpeg-dev libz-dev libyaml-dev python3-dev python3-pip python3-virtualenv \
|
||||||
|
postgresql libpq-dev uwsgi uwsgi-plugin-python3 \
|
||||||
|
libpango1.0-dev libcairo2-dev libglib2.0-dev libgirepository1.0-dev \
|
||||||
|
mailutils python-celery-common virtualenv redis-server"
|
||||||
|
|
||||||
|
# Weblate's version for PIP and settings file
|
||||||
|
current_version="3.7"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# PERSONAL HELPERS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
weblate_fill_settings() {
|
weblate_fill_settings() {
|
||||||
local settings="$1"
|
local settings="$1"
|
||||||
|
@ -144,3 +159,74 @@ ynh_redis_remove_db() {
|
||||||
local db=$1
|
local db=$1
|
||||||
redis-cli -n "$db" flushall
|
redis-cli -n "$db" flushall
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# EXPERIMENTAL HELPERS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Print a message as INFO and show progression during an app script
|
||||||
|
#
|
||||||
|
# usage: ynh_script_progression --message=message [--weight=weight] [--time]
|
||||||
|
# | arg: -m, --message= - The text to print
|
||||||
|
# | arg: -w, --weight= - The weight for this progression. This value is 1 by default. Use a bigger value for a longer part of the script.
|
||||||
|
# | arg: -t, --time= - Print the execution time since the last call to this helper. Especially usefull to define weights.
|
||||||
|
# | arg: -l, --last= - Use for the last call of the helper, to fill te progression bar.
|
||||||
|
increment_progression=0
|
||||||
|
previous_weight=0
|
||||||
|
ynh_script_progression () {
|
||||||
|
# Declare an array to define the options of this helper.
|
||||||
|
declare -Ar args_array=( [m]=message= [w]=weight= [t]=time [l]=last )
|
||||||
|
local message
|
||||||
|
local weight
|
||||||
|
local time
|
||||||
|
local last
|
||||||
|
# Manage arguments with getopts
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
weight=${weight:-1}
|
||||||
|
time=${time:-0}
|
||||||
|
last=${last:-0}
|
||||||
|
|
||||||
|
|
||||||
|
# Get the number of occurrences of 'ynh_script_progression' in the script. Except those are commented.
|
||||||
|
local helper_calls="$(grep --count "^[^#]*ynh_script_progression" $0)"
|
||||||
|
# Get the number of call with a weight value
|
||||||
|
local weight_calls=$(grep --perl-regexp --count "^[^#]*ynh_script_progression.*(--weight|-w )" $0)
|
||||||
|
|
||||||
|
# Get the weight of each occurrences of 'ynh_script_progression' in the script using --weight
|
||||||
|
local weight_valuesA="$(grep --perl-regexp "^[^#]*ynh_script_progression.*--weight" $0 | sed 's/.*--weight[= ]\([[:digit:]].*\)/\1/g')"
|
||||||
|
# Get the weight of each occurrences of 'ynh_script_progression' in the script using -w
|
||||||
|
local weight_valuesB="$(grep --perl-regexp "^[^#]*ynh_script_progression.*-w " $0 | sed 's/.*-w[= ]\([[:digit:]].*\)/\1/g')"
|
||||||
|
# Each value will be on a different line.
|
||||||
|
# Remove each 'end of line' and replace it by a '+' to sum the values.
|
||||||
|
local weight_values=$(( $(echo "$weight_valuesA" | tr '\n' '+') + $(echo "$weight_valuesB" | tr '\n' '+') 0 ))
|
||||||
|
|
||||||
|
# max_progression is a total number of calls to this helper.
|
||||||
|
# Less the number of calls with a weight value.
|
||||||
|
# Plus the total of weight values
|
||||||
|
local max_progression=$(( $helper_calls - $weight_calls + $weight_values ))
|
||||||
|
|
||||||
|
# Increment each execution of ynh_script_progression in this script by the weight of the previous call.
|
||||||
|
increment_progression=$(( $increment_progression + $previous_weight ))
|
||||||
|
# Store the weight of the current call in $previous_weight for next call
|
||||||
|
previous_weight=$weight
|
||||||
|
|
||||||
|
# Set the scale of the progression bar
|
||||||
|
local scale=20
|
||||||
|
# progress_string(1,2) should have the size of the scale.
|
||||||
|
local progress_string1="####################"
|
||||||
|
local progress_string0="...................."
|
||||||
|
|
||||||
|
# Reduce $increment_progression to the size of the scale
|
||||||
|
if [ $last -eq 0 ]
|
||||||
|
then
|
||||||
|
local effective_progression=$(( $increment_progression * $scale / $max_progression ))
|
||||||
|
# If last is specified, fill immediately the progression_bar
|
||||||
|
else
|
||||||
|
local effective_progression=$scale
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build $progression_bar from progress_string(1,2) according to $effective_progression
|
||||||
|
local progression_bar="${progress_string1:0:$effective_progression}${progress_string0:0:$(( $scale - $effective_progression ))}"
|
||||||
|
|
||||||
|
ynh_print_info "[$progression_bar] > ${message}"
|
||||||
|
}
|
||||||
|
|
|
@ -15,6 +15,8 @@ ynh_abort_if_errors
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Loading installation settings..." --time --weight=1
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
final_path=$(ynh_app_setting_get "$app" final_path)
|
final_path=$(ynh_app_setting_get "$app" final_path)
|
||||||
|
@ -23,22 +25,37 @@ db_name=$(ynh_app_setting_get "$app" db_name)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD BACKUP STEPS
|
# STANDARD BACKUP STEPS
|
||||||
|
#=================================================
|
||||||
|
# STOP SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Stopping systemd services..." --time --weight=1
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name="$app" --action="stop"
|
||||||
|
ynh_systemd_action --service_name="$app-celery" --action="stop"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE APP MAIN DIR
|
# BACKUP THE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Backing up the main app directory..." --time --weight=1
|
||||||
|
|
||||||
ynh_backup "$final_path"
|
ynh_backup "$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE NGINX CONFIGURATION
|
# BACKUP THE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Backing up nginx web server configuration..." --time --weight=1
|
||||||
|
|
||||||
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
|
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE PostgreSQL DATABASE
|
# BACKUP THE PostgreSQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Backing up the PostgreSQL database..." --time --weight=1
|
||||||
|
|
||||||
ynh_psql_dump_db "$db_name" > db.sql
|
ynh_psql_dump_db "$db_name" > db.sql
|
||||||
ynh_backup "db.sql"
|
ynh_backup "db.sql"
|
||||||
|
|
||||||
|
@ -48,18 +65,45 @@ ynh_backup "db.sql"
|
||||||
# BACKUP THE CRON FILE
|
# BACKUP THE CRON FILE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Backing up systemd configuration..." --time --weight=1
|
||||||
|
|
||||||
ynh_backup "/etc/cron.d/$app"
|
ynh_backup "/etc/cron.d/$app"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE uwsgi files
|
# BACKUP THE uwsgi files
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Backing up uwsgi configuration..." --time --weight=1
|
||||||
|
|
||||||
ynh_backup "/etc/uwsgi/apps-available/$app.ini"
|
ynh_backup "/etc/uwsgi/apps-available/$app.ini"
|
||||||
ynh_backup "/etc/systemd/system/$app.service"
|
ynh_backup "/etc/systemd/system/$app.service"
|
||||||
ynh_backup "/etc/systemd/system/$app-celery.service"
|
ynh_backup "/etc/systemd/system/$app-celery.service"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# BACKUP THE celery files
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# nothing to do because it is inside $finalpath
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE hub binary file
|
# BACKUP THE hub binary file
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Backing up uwsgi configuration..." --time --weight=1
|
||||||
|
|
||||||
ynh_backup /usr/bin/hub
|
ynh_backup /usr/bin/hub
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# START SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Starting systemd services..." --time --weight=1
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name="$app" --action="start"
|
||||||
|
ynh_systemd_action --service_name="$app-celery" --action="start"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --time --last
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
# IMPORT GENERIC HELPERS
|
# IMPORT GENERIC HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
set -eu
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
@ -20,19 +20,15 @@ new_domain=$YNH_APP_NEW_DOMAIN
|
||||||
new_path=$YNH_APP_NEW_PATH
|
new_path=$YNH_APP_NEW_PATH
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
final_path=/var/www/$app
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# LOAD SETTINGS
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Loading installation settings..." --time --weight=1
|
||||||
|
|
||||||
|
final_path=$(ynh_app_setting_get "$app" final_path)
|
||||||
is_public=$(ynh_app_setting_get "$app" is_public)
|
is_public=$(ynh_app_setting_get "$app" is_public)
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# CHECK THE SYNTAX OF THE PATHS
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
test -n "$old_path" || old_path="/"
|
|
||||||
test -n "$new_path" || new_path="/"
|
|
||||||
new_path=$(ynh_normalize_url_path $new_path)
|
|
||||||
old_path=$(ynh_normalize_url_path $old_path)
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK WHICH PARTS SHOULD BE CHANGED
|
# CHECK WHICH PARTS SHOULD BE CHANGED
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -50,17 +46,15 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
# STANDARD MODIFICATIONS
|
||||||
|
#=================================================
|
||||||
|
# STOP SYSTEMD SERVICE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Backup the current version of the app
|
ynh_script_progression --message="Stopping systemd services..." --time --weight=1
|
||||||
# ynh_backup_before_upgrade
|
|
||||||
# ynh_clean_setup () {
|
ynh_systemd_action --service_name="$app" --action="stop"
|
||||||
# # restore it if the upgrade fails
|
ynh_systemd_action --service_name="$app-celery" --action="stop"
|
||||||
# ynh_restore_upgradebackup
|
|
||||||
# }
|
|
||||||
# # Exit if an error occurs during the execution of the script
|
|
||||||
# ynh_abort_if_errors
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD MODIFICATIONS
|
# STANDARD MODIFICATIONS
|
||||||
|
@ -68,19 +62,22 @@ fi
|
||||||
# MODIFY URL IN NGINX CONF
|
# MODIFY URL IN NGINX CONF
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Updating nginx web server configuration..." --time --weight=1
|
||||||
|
|
||||||
nginx_conf_path="/etc/nginx/conf.d/$old_domain.d/$app.conf"
|
nginx_conf_path="/etc/nginx/conf.d/$old_domain.d/$app.conf"
|
||||||
finalnginxconf=$nginx_conf_path
|
finalnginxconf=$nginx_conf_path
|
||||||
|
|
||||||
# Change the path in the nginx config file
|
# Change the path in the nginx config file
|
||||||
if [ $change_path -eq 1 ]
|
if [ $change_path -eq 1 ]
|
||||||
then
|
then
|
||||||
ynh_replace_string "location $old_path" "location $new_path" "$nginx_conf_path"
|
ynh_replace_string "location $old_path" "location $new_path" "$nginx_conf_path"
|
||||||
ynh_replace_string "SCRIPT_NAME $old_path" "SCRIPT_NAME $new_path" "$nginx_conf_path"
|
ynh_replace_string "SCRIPT_NAME $old_path" "SCRIPT_NAME $new_path" "$nginx_conf_path"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Change the domain for nginx
|
# Change the domain for nginx
|
||||||
if [ $change_domain -eq 1 ]
|
if [ $change_domain -eq 1 ]
|
||||||
then
|
then
|
||||||
|
|
||||||
finalnginxconf="/etc/nginx/conf.d/${new_domain}.d/${app}.conf"
|
finalnginxconf="/etc/nginx/conf.d/${new_domain}.d/${app}.conf"
|
||||||
mv "$nginx_conf_path" "$finalnginxconf"
|
mv "$nginx_conf_path" "$finalnginxconf"
|
||||||
fi
|
fi
|
||||||
|
@ -88,8 +85,7 @@ fi
|
||||||
#=================================================
|
#=================================================
|
||||||
# Edit specific content from nginx configuration
|
# Edit specific content from nginx configuration
|
||||||
#=================================================
|
#=================================================
|
||||||
|
settings="$final_path/venv/lib/python3.5/site-packages/weblate/settings.py"
|
||||||
settings="$final_path/venv/lib/python2.7/site-packages/weblate/settings.py"
|
|
||||||
|
|
||||||
if [ "$old_path" == "/" ] && [ "$new_path" != "/" ]
|
if [ "$old_path" == "/" ] && [ "$new_path" != "/" ]
|
||||||
then
|
then
|
||||||
|
@ -99,10 +95,6 @@ then
|
||||||
# ynh panel is useless for public websites
|
# ynh panel is useless for public websites
|
||||||
ynh_replace_string " #include conf.d/" " include conf.d/" "$finalnginxconf"
|
ynh_replace_string " #include conf.d/" " include conf.d/" "$finalnginxconf"
|
||||||
fi
|
fi
|
||||||
# root install as an empty PATHURL to prevent '//static'
|
|
||||||
ynh_replace_string "URL_PREFIX = ''" "URL_PREFIX = '$new_path'" "$settings"
|
|
||||||
|
|
||||||
ynh_store_file_checksum "$finalnginxconf"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$old_path" != "/" ] && [ "$new_path" == "/" ]
|
if [ "$old_path" != "/" ] && [ "$new_path" == "/" ]
|
||||||
|
@ -110,37 +102,47 @@ then
|
||||||
|
|
||||||
# ynh panel is only comptable with non-root installation
|
# ynh panel is only comptable with non-root installation
|
||||||
ynh_replace_string " include conf.d/" " #include conf.d/" "$finalnginxconf"
|
ynh_replace_string " include conf.d/" " #include conf.d/" "$finalnginxconf"
|
||||||
|
|
||||||
# root install as an empty PATHURL to prevent '//static'
|
|
||||||
ynh_replace_string "URL_PREFIX = '$old_path'" "URL_PREFIX = ''" "$settings"
|
|
||||||
|
|
||||||
ynh_store_file_checksum "$finalnginxconf"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
ynh_store_file_checksum "$finalnginxconf"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# MODIFY settings.py
|
# MODIFY settings.py
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Modify weblate's config file..." --time --weight=1
|
||||||
settingspy_conf_path="$final_path/venv/lib/python2.7/site-packages/weblate/settings.py"
|
|
||||||
|
|
||||||
# Change the path in the nginx config file
|
# Change the path in the nginx config file
|
||||||
if [ $change_path -eq 1 ]
|
if [ $change_path -eq 1 ]
|
||||||
then
|
then
|
||||||
ynh_replace_string "URL_PREFIX = '$old_path" "URL_PREFIX = '$new_path" "$settingspy_conf_path"
|
ynh_replace_string "URL_PREFIX = '$old_path" "URL_PREFIX = '$new_path" "$settings"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Change the domain for nginx
|
# Change the domain for nginx
|
||||||
if [ $change_domain -eq 1 ]
|
if [ $change_domain -eq 1 ]
|
||||||
then
|
then
|
||||||
# replace SERVER_EMAIL
|
# replace SERVER_EMAIL
|
||||||
ynh_replace_string "noreply@$old_domain" "noreply@$new_domain" "$settingspy_conf_path"
|
ynh_replace_string "noreply@$old_domain" "noreply@$new_domain" "$settings"
|
||||||
# replace ALLOWED_HOSTS
|
# replace ALLOWED_HOSTS
|
||||||
ynh_replace_string "['$old_domain']" "['$new_domain']" "$settingspy_conf_path"
|
ynh_replace_string "['$old_domain']" "['$new_domain']" "$settings"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$old_path" == "/" ] && [ "$new_path" != "/" ]
|
||||||
|
then
|
||||||
|
ynh_replace_string "URL_PREFIX = ''" "URL_PREFIX = '$new_path'" "$settings"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$old_path" != "/" ] && [ "$new_path" == "/" ]
|
||||||
|
then
|
||||||
|
# root install as an empty PATHURL to prevent '//static'
|
||||||
|
ynh_replace_string "URL_PREFIX = '$old_path'" "URL_PREFIX = ''" "$settings"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ynh_store_file_checksum "$settings"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# ChangeSite inside weblate
|
# ChangeSite inside weblate
|
||||||
#==========================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Run weblate's command changesite..." --time --weight=1
|
||||||
(
|
(
|
||||||
set +eu
|
set +eu
|
||||||
source "${final_path}/venv/bin/activate"
|
source "${final_path}/venv/bin/activate"
|
||||||
|
@ -151,9 +153,22 @@ fi
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALISATION
|
# GENERIC FINALISATION
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX and Weblate
|
# START SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting systemd services..." --time --weight=1
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name="$app" --action="start"
|
||||||
|
ynh_systemd_action --service_name="$app-celery" --action="start"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RELOAD NGINX
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Reloading nginx web server..." --time --weight=1
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Change of URL completed for $app" --time --last
|
||||||
|
|
||||||
systemctl reload nginx
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
# IMPORT GENERIC HELPERS
|
# IMPORT GENERIC HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
set -eu
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
@ -42,12 +42,8 @@ app=$YNH_APP_INSTANCE_NAME
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Validating installation parameters..." --time --weight=1
|
||||||
|
|
||||||
# Normalize the url path syntax
|
|
||||||
path_url=$(ynh_normalize_url_path "$path_url")
|
|
||||||
|
|
||||||
# Check web path availability
|
|
||||||
ynh_webpath_available "$domain" "$path_url"
|
|
||||||
# Register (book) web path
|
# Register (book) web path
|
||||||
ynh_webpath_register "$app" "$domain" "$path_url"
|
ynh_webpath_register "$app" "$domain" "$path_url"
|
||||||
|
|
||||||
|
@ -60,6 +56,8 @@ mkdir -p "$final_path"
|
||||||
# STORE SETTINGS FROM MANIFEST
|
# STORE SETTINGS FROM MANIFEST
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Storing installation settings..." --time --weight=1
|
||||||
|
|
||||||
ynh_app_setting_set "$app" domain "$domain"
|
ynh_app_setting_set "$app" domain "$domain"
|
||||||
ynh_app_setting_set "$app" path "$path_url"
|
ynh_app_setting_set "$app" path "$path_url"
|
||||||
ynh_app_setting_set "$app" admin "$admin"
|
ynh_app_setting_set "$app" admin "$admin"
|
||||||
|
@ -76,14 +74,14 @@ ynh_app_setting_set "$app" github_token "$github_token"
|
||||||
# INSTALL DEPENDENCIES
|
# INSTALL DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_install_app_dependencies libxml2-dev libxslt-dev libfreetype6-dev \
|
ynh_script_progression --message="Installing dependencies..." --time --weight=1
|
||||||
libjpeg-dev libz-dev libyaml-dev python3-dev python3-pip python3-virtualenv \
|
|
||||||
postgresql libpq-dev uwsgi uwsgi-plugin-python3 \
|
ynh_install_app_dependencies "$pkg_dependencies"
|
||||||
mailutils python-celery-common virtualenv redis-server
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE A PostgreSQL DATABASE
|
# CREATE A PostgreSQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Creating a PostgreSQL database..." --time --weight=1
|
||||||
|
|
||||||
db_name=$(ynh_sanitize_dbid "$app")
|
db_name=$(ynh_sanitize_dbid "$app")
|
||||||
ynh_app_setting_set "$app" db_name "$db_name"
|
ynh_app_setting_set "$app" db_name "$db_name"
|
||||||
|
@ -93,12 +91,14 @@ ynh_psql_test_if_first_run
|
||||||
# Initialize database and store postgres password for upgrade
|
# Initialize database and store postgres password for upgrade
|
||||||
ynh_psql_setup_db "$db_name" "$app"
|
ynh_psql_setup_db "$db_name" "$app"
|
||||||
|
|
||||||
systemctl reload postgresql
|
ynh_systemd_action --service_name=postgresql --action=reload
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# NGINX CONFIGURATION
|
# NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Configuring nginx web server..." --time --weight=1
|
||||||
|
|
||||||
# Create a dedicated nginx config
|
# Create a dedicated nginx config
|
||||||
ynh_add_nginx_config
|
ynh_add_nginx_config
|
||||||
|
|
||||||
|
@ -117,6 +117,8 @@ fi
|
||||||
# CREATE DEDICATED USER
|
# CREATE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Configuring system user..." --time --weight=1
|
||||||
|
|
||||||
# Hub needs a home directory with a config file
|
# Hub needs a home directory with a config file
|
||||||
ynh_system_user_create "$app" "$final_path"
|
ynh_system_user_create "$app" "$final_path"
|
||||||
# Allow bash for our user, so he can use Hub
|
# Allow bash for our user, so he can use Hub
|
||||||
|
@ -126,6 +128,8 @@ chsh --shell /bin/bash "$app"
|
||||||
# Download and install hub
|
# Download and install hub
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Download and install hub..." --time --weight=1
|
||||||
|
|
||||||
arch=$(dpkg --print-architecture)
|
arch=$(dpkg --print-architecture)
|
||||||
# Rasberry Pi: Debian armhf (ARM hard float) refers to the ARMv7
|
# Rasberry Pi: Debian armhf (ARM hard float) refers to the ARMv7
|
||||||
[[ $arch = "armhf" ]] && arch="arm"
|
[[ $arch = "armhf" ]] && arch="arm"
|
||||||
|
@ -172,6 +176,9 @@ EOF
|
||||||
#=================================================
|
#=================================================
|
||||||
# PIP INSTALLATION
|
# PIP INSTALLATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Install weblate using PIP..." --time --weight=10
|
||||||
|
|
||||||
virtualenv --python=python3 "${final_path}/venv"
|
virtualenv --python=python3 "${final_path}/venv"
|
||||||
#run source in a 'sub shell'
|
#run source in a 'sub shell'
|
||||||
(
|
(
|
||||||
|
@ -192,6 +199,9 @@ virtualenv --python=python3 "${final_path}/venv"
|
||||||
# https://docs.weblate.org/en/latest/admin/install.html#installation
|
# https://docs.weblate.org/en/latest/admin/install.html#installation
|
||||||
# TODO: use --extra-search-dir=/path/to/dists
|
# TODO: use --extra-search-dir=/path/to/dists
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Create weblate configuration file..." --time --weight=1
|
||||||
|
|
||||||
db_pwd=$(ynh_app_setting_get "$app" psqlpwd)
|
db_pwd=$(ynh_app_setting_get "$app" psqlpwd)
|
||||||
admin_mail=$(ynh_user_get_info "$admin" mail)
|
admin_mail=$(ynh_user_get_info "$admin" mail)
|
||||||
key=$(ynh_string_random 24)$(ynh_string_random 24)$(ynh_string_random 2)
|
key=$(ynh_string_random 24)$(ynh_string_random 24)$(ynh_string_random 2)
|
||||||
|
@ -207,6 +217,7 @@ ynh_app_setting_set "$app" redis_db "$redis_db"
|
||||||
# SPECIFIC SETUP Filling up the database
|
# SPECIFIC SETUP Filling up the database
|
||||||
# https://docs.weblate.org/en/latest/admin/install.html#filling-up-the-database
|
# https://docs.weblate.org/en/latest/admin/install.html#filling-up-the-database
|
||||||
#==========================================
|
#==========================================
|
||||||
|
ynh_script_progression --message="Filling up the database..." --time --weight=1
|
||||||
(
|
(
|
||||||
set +o nounset
|
set +o nounset
|
||||||
source "${final_path}/venv/bin/activate"
|
source "${final_path}/venv/bin/activate"
|
||||||
|
@ -226,6 +237,9 @@ ynh_app_setting_set "$app" redis_db "$redis_db"
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP CRON
|
# SETUP CRON
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Configure cron file..." --time --weight=1
|
||||||
|
|
||||||
cp ../conf/cron "/etc/cron.d/$app"
|
cp ../conf/cron "/etc/cron.d/$app"
|
||||||
ynh_replace_string "__APP__" "$app" "/etc/cron.d/$app"
|
ynh_replace_string "__APP__" "$app" "/etc/cron.d/$app"
|
||||||
ynh_replace_string "__FINALPATH__" "$final_path/" "/etc/cron.d/$app"
|
ynh_replace_string "__FINALPATH__" "$final_path/" "/etc/cron.d/$app"
|
||||||
|
@ -235,11 +249,12 @@ ynh_replace_string "__FINALPATH__" "$final_path/" "/etc/cron.d/$app"
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Calculate and store the config file checksum into the app settings
|
# Calculate and store the config file checksum into the app settings
|
||||||
ynh_store_file_checksum "$final_path/venv/lib/python3.5/site-packages/weblate/settings.py"
|
ynh_store_file_checksum "$settings"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC SETUP uwsgi
|
# SPECIFIC SETUP uwsgi
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Configure uwsgi..." --time --weight=1
|
||||||
|
|
||||||
finaluwsgiini="/etc/uwsgi/apps-available/$app.ini"
|
finaluwsgiini="/etc/uwsgi/apps-available/$app.ini"
|
||||||
cp ../conf/uwsgi.ini "$finaluwsgiini"
|
cp ../conf/uwsgi.ini "$finaluwsgiini"
|
||||||
|
@ -263,6 +278,8 @@ ynh_store_file_checksum "$finaluwsgiini"
|
||||||
# ACTIVATE CELERY
|
# ACTIVATE CELERY
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Configure celery..." --time --weight=1
|
||||||
|
|
||||||
celeryconf="$final_path/celery-weblate"
|
celeryconf="$final_path/celery-weblate"
|
||||||
cp ../conf/celery-weblate "$celeryconf"
|
cp ../conf/celery-weblate "$celeryconf"
|
||||||
|
|
||||||
|
@ -287,6 +304,8 @@ chown -R "$app": "$final_path/avatar-cache"
|
||||||
# SETUP SSOWAT
|
# SETUP SSOWAT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Configuring SSOwat..." --time --weight=1
|
||||||
|
|
||||||
if [ "$is_public" -eq 0 ]
|
if [ "$is_public" -eq 0 ]
|
||||||
then # Remove the public access
|
then # Remove the public access
|
||||||
ynh_app_setting_delete "$app" skipped_uris
|
ynh_app_setting_delete "$app" skipped_uris
|
||||||
|
@ -313,15 +332,18 @@ yunohost service add "$app-celery" --log "/var/log/$app-celery"
|
||||||
#=================================================
|
#=================================================
|
||||||
# Start weblate
|
# Start weblate
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting weblate's services..." --time --weight=1
|
||||||
|
|
||||||
systemctl start "$app"
|
ynh_systemd_action --service_name="$app" --action="start"
|
||||||
systemctl start "$app-celery"
|
ynh_systemd_action --service_name="$app-celery" --action="start"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
systemctl reload nginx
|
ynh_script_progression --message="Reloading nginx web server..." --time --weight=1
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name="nginx" --action="reload"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SEND A README FOR THE ADMIN
|
# SEND A README FOR THE ADMIN
|
||||||
|
@ -333,3 +355,5 @@ If you facing an issue or want to improve this app, please open a new issue in t
|
||||||
"
|
"
|
||||||
|
|
||||||
ynh_send_readme_to_admin "$message" "$admin"
|
ynh_send_readme_to_admin "$message" "$admin"
|
||||||
|
|
||||||
|
ynh_script_progression --message="Installation of $app completed" --time --last
|
||||||
|
|
|
@ -12,10 +12,12 @@ source /usr/share/yunohost/helpers
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Loading installation settings..." --time --weight=1
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
domain=$(ynh_app_setting_get "$app" domain)
|
domain=$(ynh_app_setting_get "$app" domain)
|
||||||
db_name=$(ynh_app_setting_get "$app" db_name)
|
db_name=$(ynh_app_setting_get "$app" db_name)
|
||||||
|
final_path=$(ynh_app_setting_get "$app" final_path)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD REMOVE
|
# STANDARD REMOVE
|
||||||
|
@ -24,22 +26,23 @@ db_name=$(ynh_app_setting_get "$app" db_name)
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Remove a service from the admin panel, added by `yunohost service add`
|
# Remove a service from the admin panel, added by `yunohost service add`
|
||||||
if yunohost service status | grep -q "$app"
|
if yunohost service status "$app" >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
echo "Remove $app service"
|
ynh_script_progression --message="Removing $app service..." --time --weight=1
|
||||||
yunohost service remove "$app"
|
yunohost service remove "$app"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove a service from the admin panel, added by `yunohost service add`
|
# Remove a service from the admin panel, added by `yunohost service add`
|
||||||
if yunohost service status | grep -q "$app-celery"
|
if yunohost service status "$app-celery" >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
echo "Remove $app service"
|
ynh_script_progression --message="Removing $app-celery service..." --time --weight=1
|
||||||
yunohost service remove "$app-celery"
|
yunohost service remove "$app-celery"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STOP WEBLATE'S SERVICES
|
# STOP WEBLATE'S SERVICES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Stopping and removing systemd services..." --time --weight=1
|
||||||
|
|
||||||
ynh_remove_systemd_config "$app"
|
ynh_remove_systemd_config "$app"
|
||||||
ynh_remove_systemd_config "$app-celery"
|
ynh_remove_systemd_config "$app-celery"
|
||||||
|
@ -47,6 +50,7 @@ ynh_remove_systemd_config "$app-celery"
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE THE PostgreSQL DATABASE
|
# REMOVE THE PostgreSQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing the PostgreSQL database..." --time --weight=1
|
||||||
|
|
||||||
# Remove a database if it exists, along with the associated user
|
# Remove a database if it exists, along with the associated user
|
||||||
ynh_psql_remove_db "$db_name" "$app"
|
ynh_psql_remove_db "$db_name" "$app"
|
||||||
|
@ -54,6 +58,7 @@ ynh_psql_remove_db "$db_name" "$app"
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE DEPENDENCIES
|
# REMOVE DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing dependencies..." --time --weight=1
|
||||||
|
|
||||||
# Remove metapackage and its dependencies
|
# Remove metapackage and its dependencies
|
||||||
ynh_remove_app_dependencies
|
ynh_remove_app_dependencies
|
||||||
|
@ -61,13 +66,15 @@ ynh_remove_app_dependencies
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE APP MAIN DIR
|
# REMOVE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing app main directory..." --time --weight=1
|
||||||
|
|
||||||
# Remove the app directory securely
|
# Remove the app directory securely
|
||||||
ynh_secure_remove "/var/www/$app"
|
ynh_secure_remove "$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE NGINX CONFIGURATION
|
# REMOVE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing nginx web server configuration..." --time --weight=1
|
||||||
|
|
||||||
# Remove the dedicated nginx config
|
# Remove the dedicated nginx config
|
||||||
ynh_remove_nginx_config
|
ynh_remove_nginx_config
|
||||||
|
@ -92,6 +99,12 @@ ynh_secure_remove "/var/run/$app-celery"
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE DEDICATED USER
|
# REMOVE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing the dedicated system user..." --time --weight=1
|
||||||
|
|
||||||
# Delete a system user
|
# Delete a system user
|
||||||
ynh_system_user_delete "$app"
|
ynh_system_user_delete "$app"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removal of $app completed" --time --last
|
||||||
|
|
|
@ -9,11 +9,16 @@
|
||||||
source ../settings/scripts/_common.sh
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# MANAGE SCRIPT FAILURE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
ynh_abort_if_errors
|
ynh_abort_if_errors
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Loading settings..." --time --weight=1
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
|
@ -26,11 +31,12 @@ db_pwd=$(ynh_app_setting_get "$app" psqlpwd)
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK IF THE APP CAN BE RESTORED
|
# CHECK IF THE APP CAN BE RESTORED
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Validating restoration parameters..." --time --weight=1
|
||||||
|
|
||||||
# Check web path availability
|
# Check web path availability
|
||||||
ynh_webpath_available "$domain" "$path_url"
|
ynh_webpath_available "$domain" "$path_url" || ynh_die "Path not available: ${domain}${path_url}"
|
||||||
|
|
||||||
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
test ! -e "$final_path" || ynh_die "There is already a directory: $final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD RESTORATION STEPS
|
# STANDARD RESTORATION STEPS
|
||||||
|
@ -43,12 +49,14 @@ ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE APP MAIN DIR
|
# RESTORE THE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring the app main directory..." --time --weight=1
|
||||||
|
|
||||||
ynh_restore_file "$final_path"
|
ynh_restore_file "$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RECREATE THE DEDICATED USER
|
# RECREATE THE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Recreating the dedicated system user..." --time --weight=1
|
||||||
|
|
||||||
# Create the dedicated user (if not existing)
|
# Create the dedicated user (if not existing)
|
||||||
ynh_system_user_create "$app" "/home/$app"
|
ynh_system_user_create "$app" "/home/$app"
|
||||||
|
@ -67,23 +75,23 @@ chown -R "$app": "$final_path"
|
||||||
#=================================================
|
#=================================================
|
||||||
# REINSTALL DEPENDENCIES
|
# REINSTALL DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Reinstalling dependencies..." --time --weight=1
|
||||||
|
|
||||||
ynh_install_app_dependencies libxml2-dev libxslt-dev libfreetype6-dev \
|
ynh_install_app_dependencies "$pkg_dependencies"
|
||||||
libjpeg-dev libz-dev libyaml-dev python3-dev python3-pip python3-virtualenv \
|
|
||||||
postgresql libpq-dev uwsgi uwsgi-plugin-python3 memcached \
|
|
||||||
mailutils python-celery-common virtualenv redis-server
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE PostgreSQL DATABASE
|
# RESTORE THE PostgreSQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring the PostgreSQL database..." --time --weight=1
|
||||||
|
|
||||||
ynh_psql_test_if_first_run
|
ynh_psql_test_if_first_run
|
||||||
ynh_psql_create_db "$db_name" "$db_name" "$db_pwd"
|
ynh_psql_setup_db "$db_name" "$db_name" "$db_pwd"
|
||||||
ynh_psql_execute_file_as_root ./db.sql "$db_name"
|
ynh_psql_execute_file_as_root ./db.sql "$db_name"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE Weblate service
|
# RESTORE Weblate service
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring systemd configurations..." --time --weight=1
|
||||||
|
|
||||||
usermod --append --groups www-data "$app"
|
usermod --append --groups www-data "$app"
|
||||||
|
|
||||||
|
@ -112,7 +120,7 @@ ynh_restore_file "/etc/cron.d/$app"
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE HUB BINARY FILE
|
# RESTORE THE HUB BINARY FILE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restore hub's binary file..." --time --weight=1
|
||||||
ynh_restore_file "/usr/bin/hub"
|
ynh_restore_file "/usr/bin/hub"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -120,12 +128,19 @@ ynh_restore_file "/usr/bin/hub"
|
||||||
#=================================================
|
#=================================================
|
||||||
# Start weblate
|
# Start weblate
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting a systemd service..." --time --weight=1
|
||||||
|
|
||||||
systemctl start "$app"
|
ynh_systemd_action --service_name="$app" --action="start"
|
||||||
systemctl start "$app-celery"
|
ynh_systemd_action --service_name="$app-celery" --action="start"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX & uwsgi
|
# RELOAD NGINX
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Reloading nginx web server and php-fpm..." --time --weight=1
|
||||||
|
|
||||||
systemctl reload nginx
|
ynh_systemd_action --service_name="nginx" --action="reload"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoration completed for $app" --time --last
|
||||||
|
|
|
@ -11,6 +11,7 @@ source /usr/share/yunohost/helpers
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Loading installation settings..." --time --weight=1
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
|
@ -31,6 +32,7 @@ redis_db=$(ynh_app_setting_get "$app" redis_db)
|
||||||
#=================================================
|
#=================================================
|
||||||
# Get previous version number
|
# Get previous version number
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Get previous version number..." --time --weight=1
|
||||||
|
|
||||||
(
|
(
|
||||||
set +o nounset
|
set +o nounset
|
||||||
|
@ -49,6 +51,7 @@ test -e "$previous_version_template" || ynh_die "Previous version unknown: $prev
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --time --weight=1
|
||||||
|
|
||||||
# Backup the current version of the app
|
# Backup the current version of the app
|
||||||
ynh_backup_before_upgrade
|
ynh_backup_before_upgrade
|
||||||
|
@ -62,6 +65,7 @@ ynh_abort_if_errors
|
||||||
#=================================================
|
#=================================================
|
||||||
# ENSURE DOWNWARD COMPATIBILITY
|
# ENSURE DOWNWARD COMPATIBILITY
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Ensuring downward compatibility..." --time --weight=1
|
||||||
|
|
||||||
if [ "$is_public" = "Yes" ]; then
|
if [ "$is_public" = "Yes" ]; then
|
||||||
ynh_app_setting_set "$app" is_public 1 # Fix is_public as a boolean value
|
ynh_app_setting_set "$app" is_public 1 # Fix is_public as a boolean value
|
||||||
|
@ -171,6 +175,18 @@ path_url=$(ynh_normalize_url_path "$path_url")
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD UPGRADE STEPS
|
# STANDARD UPGRADE STEPS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
# STOP SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Stopping systemd services..." --time --weight=1
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name="$app" --action="stop"
|
||||||
|
ynh_systemd_action --service_name="$app-celery" --action="stop"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# NGINX CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Upgrading nginx web server configuration..." --time --weight=1
|
||||||
|
|
||||||
# Create a dedicated nginx config
|
# Create a dedicated nginx config
|
||||||
ynh_add_nginx_config
|
ynh_add_nginx_config
|
||||||
|
@ -186,35 +202,34 @@ then
|
||||||
ynh_store_file_checksum "$finalnginxconf"
|
ynh_store_file_checksum "$finalnginxconf"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SPECIFIC UPGRADE
|
||||||
|
#=================================================
|
||||||
|
# Update dependencies
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_install_app_dependencies "$pkg_dependencies"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE DEDICATED USER
|
# CREATE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Making sure dedicated system user exists..." --time --weight=1
|
||||||
|
|
||||||
# Create a system user
|
# Create a system user
|
||||||
ynh_system_user_create "$app" "/home/$app"
|
ynh_system_user_create "$app" "/home/$app"
|
||||||
chsh --shell /bin/bash "$app"
|
chsh --shell /bin/bash "$app"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# SPECIFIC UPGRADE
|
|
||||||
#=================================================
|
|
||||||
# Update dependencies
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_install_app_dependencies libxml2-dev libxslt-dev libfreetype6-dev \
|
|
||||||
libjpeg-dev libz-dev libyaml-dev python3-dev python3-pip python3-virtualenv \
|
|
||||||
postgresql libpq-dev uwsgi uwsgi-plugin-python3 memcached \
|
|
||||||
mailutils python-celery-common virtualenv redis-server
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC SETUP uwsgi
|
# SPECIFIC SETUP uwsgi
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Configure uwsgi..." --time --weight=1
|
||||||
|
|
||||||
finaluwsgiini="/etc/uwsgi/apps-available/$app.ini"
|
finaluwsgiini="/etc/uwsgi/apps-available/$app.ini"
|
||||||
cp ../conf/uwsgi.ini "$finaluwsgiini"
|
cp ../conf/uwsgi.ini "$finaluwsgiini"
|
||||||
|
|
||||||
ynh_replace_string "__FINALPATH__" "$final_path" "$finaluwsgiini"
|
ynh_replace_string "__FINALPATH__" "$final_path" "$finaluwsgiini"
|
||||||
ynh_replace_string "__PATH__" "$path_url" "$finaluwsgiini"
|
ynh_replace_string "__PATH__" "$path_url" "$finaluwsgiini"
|
||||||
ynh_replace_string "__APP__" "$app" "$finaluwsgiini"
|
ynh_replace_string "__APP__" "$app" "$finaluwsgiini"
|
||||||
|
|
||||||
|
|
||||||
# root install doesn't require uwsgi to handle script names
|
# root install doesn't require uwsgi to handle script names
|
||||||
|
@ -233,11 +248,13 @@ ynh_store_file_checksum "$finaluwsgiini"
|
||||||
|
|
||||||
if [ "$migrate_to_python3" -eq 1 ]
|
if [ "$migrate_to_python3" -eq 1 ]
|
||||||
then
|
then
|
||||||
|
ynh_script_progression --message="Rebuild the virtualenv with Python3..." --time --weight=1
|
||||||
ynh_secure_remove "${final_path}/venv"
|
ynh_secure_remove "${final_path}/venv"
|
||||||
virtualenv --python=python3 "${final_path}/venv"
|
virtualenv --python=python3 "${final_path}/venv"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
(
|
(
|
||||||
|
ynh_script_progression --message="Install weblate using PIP..." --time --weight=10
|
||||||
set +o nounset
|
set +o nounset
|
||||||
source "${final_path}/venv/bin/activate"
|
source "${final_path}/venv/bin/activate"
|
||||||
set -o nounset
|
set -o nounset
|
||||||
|
@ -259,7 +276,7 @@ fi
|
||||||
#=================================================
|
#=================================================
|
||||||
# CONFIG FILE UPGRADE
|
# CONFIG FILE UPGRADE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Create weblate configuration file..." --time --weight=1
|
||||||
# save old settings file
|
# save old settings file
|
||||||
|
|
||||||
old_settings="$final_path/settings.$previous_version.old.py"
|
old_settings="$final_path/settings.$previous_version.old.py"
|
||||||
|
@ -314,6 +331,7 @@ ynh_secure_remove "$old_settings"
|
||||||
#=================================================
|
#=================================================
|
||||||
# ACTIVATE CELERY
|
# ACTIVATE CELERY
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Configure celery..." --time --weight=1
|
||||||
|
|
||||||
celeryconf="$final_path/celery-weblate"
|
celeryconf="$final_path/celery-weblate"
|
||||||
cp ../conf/celery-weblate "$celeryconf"
|
cp ../conf/celery-weblate "$celeryconf"
|
||||||
|
@ -326,7 +344,7 @@ ynh_add_systemd_config "$app-celery" "celery-weblate.service"
|
||||||
#=================================================
|
#=================================================
|
||||||
# Run migration scripts
|
# Run migration scripts
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Run migration scripts..." --time --weight=1
|
||||||
(
|
(
|
||||||
set +o nounset
|
set +o nounset
|
||||||
source "${final_path}/venv/bin/activate"
|
source "${final_path}/venv/bin/activate"
|
||||||
|
@ -373,6 +391,8 @@ ynh_store_file_checksum "$final_path/venv/lib/python3.5/site-packages/weblate/se
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP CRON
|
# SETUP CRON
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Configure cron file..." --time --weight=1
|
||||||
|
|
||||||
cp ../conf/cron "/etc/cron.d/$app"
|
cp ../conf/cron "/etc/cron.d/$app"
|
||||||
ynh_replace_string "__APP__" "$app" "/etc/cron.d/$app"
|
ynh_replace_string "__APP__" "$app" "/etc/cron.d/$app"
|
||||||
ynh_replace_string "__FINALPATH__" "$final_path/" "/etc/cron.d/$app"
|
ynh_replace_string "__FINALPATH__" "$final_path/" "/etc/cron.d/$app"
|
||||||
|
@ -393,6 +413,7 @@ chown -R "$app": "$final_path/avatar-cache"
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SSOWAT
|
# SETUP SSOWAT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Configuring SSOwat..." --time --weight=1
|
||||||
|
|
||||||
if [ $is_public -eq 0 ]
|
if [ $is_public -eq 0 ]
|
||||||
then # Remove the public access
|
then # Remove the public access
|
||||||
|
@ -413,12 +434,21 @@ fi
|
||||||
#=================================================
|
#=================================================
|
||||||
# Restart weblate
|
# Restart weblate
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting weblate's services..." --time --weight=1
|
||||||
|
|
||||||
systemctl start "$app"
|
ynh_systemd_action --service_name="$app" --action="start"
|
||||||
systemctl start "$app-celery"
|
ynh_systemd_action --service_name="$app-celery" --action="start"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
systemctl reload nginx
|
ynh_script_progression --message="Reloading nginx web server..." --time --weight=1
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name="nginx" --action="reload"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Upgrade of $app completed" --time --last
|
||||||
|
|
Loading…
Reference in a new issue