From 95a641f8bd4d273727b9754dc4ed34b43ddd63c9 Mon Sep 17 00:00:00 2001 From: Thomas <51749973+Thovi98@users.noreply.github.com> Date: Sat, 20 Jan 2024 11:51:14 +0100 Subject: [PATCH 1/4] fix settings.py --- conf/settings.py | 151 ++++++++++++++--------------------------------- 1 file changed, 44 insertions(+), 107 deletions(-) diff --git a/conf/settings.py b/conf/settings.py index 343688e..c91a08e 100644 --- a/conf/settings.py +++ b/conf/settings.py @@ -15,6 +15,10 @@ # # SPDX-License-Identifier: GPL-3.0-or-later +# Copyright © Michal Čihař +# +# SPDX-License-Identifier: GPL-3.0-or-later + import os import platform from logging.handlers import SysLogHandler @@ -70,7 +74,8 @@ DATABASES = { # "connect_timeout": 28800, }, # Persistent connections - "CONN_MAX_AGE": 0, + "CONN_MAX_AGE": None, + "CONN_HEALTH_CHECKS": True, # Disable server-side cursors, might be needed with pgbouncer "DISABLE_SERVER_SIDE_CURSORS": False, } @@ -78,7 +83,7 @@ DATABASES = { # Data directory, you can use following for the development purposes: # os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "data") -DATA_DIR = os.path.join("__FINALPATH__", "data") +DATA_DIR = "__FINALPATH__/data" CACHE_DIR = f"{DATA_DIR}/cache" # Local time zone for this installation. Choices can be found here: @@ -95,11 +100,12 @@ LANGUAGES = ( ("ar", "العربية"), ("az", "Azərbaycan"), ("be", "Беларуская"), - ("be@latin", "Biełaruskaja"), + ("be-latn", "Biełaruskaja"), ("bg", "Български"), ("br", "Brezhoneg"), ("ca", "Català"), ("cs", "Čeština"), + ("cy", "Cymraeg"), ("da", "Dansk"), ("de", "Deutsch"), ("en", "English"), @@ -145,10 +151,6 @@ SITE_ID = 1 # 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 @@ -219,6 +221,9 @@ GITHUB_CREDENTIALS = { "token": "__GITHUB_TOKEN__", } } +# Azure DevOps username and token for sending pull requests. +# Please see the documentation for more details. +AZURE_DEVOPS_CREDENTIALS = {} # GitLab username and token for sending merge requests. # Please see the documentation for more details. @@ -238,6 +243,7 @@ AUTHENTICATION_BACKENDS = ( "social_core.backends.email.EmailAuth", # "social_core.backends.google.GoogleOAuth2", # "social_core.backends.github.GithubOAuth2", + # "social_core.backends.github_enterprise.GithubEnterpriseOAuth2", # "social_core.backends.bitbucket.BitbucketOAuth2", # "social_core.backends.suse.OpenSUSEOpenId", # "social_core.backends.ubuntu.UbuntuOpenId", @@ -262,6 +268,12 @@ SOCIAL_AUTH_GITHUB_TEAM_KEY = "" SOCIAL_AUTH_GITHUB_TEAM_SECRET = "" SOCIAL_AUTH_GITHUB_TEAM_ID = "" +SOCIAL_AUTH_GITHUB_ENTERPRISE_KEY = "" +SOCIAL_AUTH_GITHUB_ENTERPRISE_SECRET = "" +SOCIAL_AUTH_GITHUB_ENTERPRISE_URL = "" +SOCIAL_AUTH_GITHUB_ENTERPRISE_API_URL = "" +SOCIAL_AUTH_GITHUB_ENTERPRISE_SCOPE = "" + SOCIAL_AUTH_BITBUCKET_OAUTH2_KEY = "" SOCIAL_AUTH_BITBUCKET_OAUTH2_SECRET = "" SOCIAL_AUTH_BITBUCKET_OAUTH2_VERIFIED_EMAILS_ONLY = True @@ -298,6 +310,7 @@ SOCIAL_AUTH_PIPELINE = ( "weblate.accounts.pipeline.user_full_name", "weblate.accounts.pipeline.store_email", "weblate.accounts.pipeline.notify_connect", + "weblate.accounts.pipeline.handle_invite", "weblate.accounts.pipeline.password_reset", ) SOCIAL_AUTH_DISCONNECT_PIPELINE = ( @@ -329,7 +342,7 @@ 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.UserAttributeSimilarityValidator" }, { "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", @@ -443,8 +456,11 @@ HAVE_SYSLOG = False if platform.system() != "Windows": try: handler = SysLogHandler(address="/dev/log", facility=SysLogHandler.LOG_LOCAL2) + # Since Python 3.7 connect failures are silently discarded, so + # the exception is almost never raised here. Instead we look whether the socket + # to syslog is open after init. + HAVE_SYSLOG = handler.socket.fileno() != -1 handler.close() - HAVE_SYSLOG = True except OSError: HAVE_SYSLOG = False @@ -519,6 +535,7 @@ LOGGING = { # "handlers": [DEFAULT_LOG], # "level": "DEBUG", # }, + "redis_lock": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL}, "weblate": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL}, # Logging VCS operations "weblate.vcs": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL}, @@ -535,89 +552,6 @@ LOGGING = { 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.googlev3.GoogleV3Translation", - # "weblate.machinery.libretranslate.LibreTranslateTranslation", - # "weblate.machinery.microsoft.MicrosoftCognitiveTranslation", - # "weblate.machinery.microsoftterminology.MicrosoftTerminologyService", - # "weblate.machinery.modernmt.ModernMTTranslation", - # "weblate.machinery.mymemory.MyMemoryTranslation", - # "weblate.machinery.netease.NeteaseSightTranslation", - # "weblate.machinery.tmserver.AmagamaTranslation", - # "weblate.machinery.tmserver.TMServerTranslation", - # "weblate.machinery.yandex.YandexTranslation", - # "weblate.machinery.saptranslationhub.SAPTranslationHub", - # "weblate.machinery.youdao.YoudaoTranslation", - "weblate.machinery.weblatetm.WeblateTranslation", - "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 - -# LibreTranslate -MT_LIBRETRANSLATE_API_URL = None -MT_LIBRETRANSLATE_KEY = None - -# Microsoft Cognitive Services Translator API, register at -# https://portal.azure.com/ -MT_MICROSOFT_COGNITIVE_KEY = None -MT_MICROSOFT_REGION = None - -# ModernMT -MT_MODERNMT_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 v2 -MT_GOOGLE_KEY = None - -# Google Translate API3 credentials and project id -MT_GOOGLE_CREDENTIALS = None -MT_GOOGLE_PROJECT = 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 - # 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 @@ -636,7 +570,7 @@ SESSION_COOKIE_HTTPONLY = True # SSL redirect SECURE_SSL_REDIRECT = ENABLE_HTTPS SECURE_SSL_HOST = SITE_DOMAIN -# Sent referrrer only for same origin links +# Sent referrer only for same origin links SECURE_REFERRER_POLICY = "same-origin" # SSL redirect URL exemption list SECURE_REDIRECT_EXEMPT = (r"healthz/$",) # Allowing HTTP access to health check @@ -683,7 +617,7 @@ ANONYMOUS_USER_NAME = "anonymous" # Reverse proxy settings IP_PROXY_HEADER = "HTTP_X_FORWARDED_FOR" IP_BEHIND_REVERSE_PROXY = False -IP_PROXY_OFFSET = 0 +IP_PROXY_OFFSET = -1 # Sending HTML in mails EMAIL_SEND_HTML = True @@ -728,6 +662,7 @@ CRISPY_TEMPLATE_PACK = "bootstrap3" # "weblate.checks.format.PHPFormatCheck", # "weblate.checks.format.CFormatCheck", # "weblate.checks.format.PerlFormatCheck", +# "weblate.checks.format.PerlBraceFormatCheck", # "weblate.checks.format.JavaScriptFormatCheck", # "weblate.checks.format.LuaFormatCheck", # "weblate.checks.format.ObjectPascalFormatCheck", @@ -748,6 +683,7 @@ CRISPY_TEMPLATE_PACK = "bootstrap3" # "weblate.checks.consistency.PluralsCheck", # "weblate.checks.consistency.SamePluralsCheck", # "weblate.checks.consistency.ConsistencyCheck", +# "weblate.checks.consistency.ReusedCheck", # "weblate.checks.consistency.TranslatedCheck", # "weblate.checks.chars.EscapedNewlineCountingCheck", # "weblate.checks.chars.NewLineCountCheck", @@ -770,6 +706,12 @@ CRISPY_TEMPLATE_PACK = "bootstrap3" # "weblate.checks.source.LongUntranslatedCheck", # "weblate.checks.format.MultipleUnnamedFormatsCheck", # "weblate.checks.glossary.GlossaryCheck", +# "weblate.checks.fluent.syntax.FluentSourceSyntaxCheck", +# "weblate.checks.fluent.syntax.FluentTargetSyntaxCheck", +# "weblate.checks.fluent.parts.FluentPartsCheck", +# "weblate.checks.fluent.references.FluentReferencesCheck", +# "weblate.checks.fluent.inner_html.FluentSourceInnerHTMLCheck", +# "weblate.checks.fluent.inner_html.FluentTargetInnerHTMLCheck", # ) # List of automatic fixups @@ -778,6 +720,8 @@ CRISPY_TEMPLATE_PACK = "bootstrap3" # "weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis", # "weblate.trans.autofixes.chars.RemoveZeroSpace", # "weblate.trans.autofixes.chars.RemoveControlChars", +# "weblate.trans.autofixes.chars.DevanagariDanda", +# "weblate.trans.autofixes.html.BleachHTML", # ) # List of enabled addons @@ -800,6 +744,7 @@ CRISPY_TEMPLATE_PACK = "bootstrap3" # "weblate.addons.generate.GenerateFileAddon", # "weblate.addons.generate.PseudolocaleAddon", # "weblate.addons.generate.PrefillAddon", +# "weblate.addons.generate.FillReadOnlyAddon", # "weblate.addons.json.JSONCustomizeAddon", # "weblate.addons.xml.XMLCustomizeAddon", # "weblate.addons.properties.PropertiesSortAddon", @@ -824,14 +769,13 @@ ALLOWED_HOSTS = ["__DOMAIN__"] # Configuration for caching CACHES = { "default": { - "BACKEND": "django_redis.cache.RedisCache", + "BACKEND": "redis_lock.django_cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/__REDIS_DB__", # 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=1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", - "PARSER_CLASS": "redis.connection.HiredisParser", # If you set password here, adjust CELERY_BROKER_URL as well "PASSWORD": None, "CONNECTION_POOL_KWARGS": {}, @@ -883,10 +827,8 @@ FONTS_CDN_URL = None # Django compressor offline mode COMPRESS_OFFLINE = False -COMPRESS_OFFLINE_CONTEXT = [ - {"fonts_cdn_url": FONTS_CDN_URL, "STATIC_URL": STATIC_URL, "LANGUAGE_BIDI": True}, - {"fonts_cdn_url": FONTS_CDN_URL, "STATIC_URL": STATIC_URL, "LANGUAGE_BIDI": False}, -] +COMPRESS_OFFLINE_CONTEXT = "weblate.utils.compress.offline_context" +COMPRESS_CSS_HASHING_METHOD = "content" # Require login for all URLs if REQUIRE_LOGIN: @@ -897,7 +839,7 @@ if REQUIRE_LOGIN: # rf"{URL_PREFIX}/accounts/(.*)$", # Required for login # rf"{URL_PREFIX}/admin/login/(.*)$", # Required for admin login # rf"{URL_PREFIX}/static/(.*)$", # Required for development mode -# rf"{URL_PREFIX}/widgets/(.*)$", # Allowing public access to widgets +# rf"{URL_PREFIX}/widget/(.*)$", # Allowing public access to widgets # rf"{URL_PREFIX}/data/(.*)$", # Allowing public access to data exports # rf"{URL_PREFIX}/hooks/(.*)$", # Allowing public access to notification hooks # rf"{URL_PREFIX}/healthz/$", # Allowing public access to health check @@ -957,9 +899,4 @@ MATOMO_URL = None GOOGLE_ANALYTICS_ID = None SENTRY_DSN = None SENTRY_ENVIRONMENT = SITE_DOMAIN -AKISMET_API_KEY = None - -try: - from .local_settings import * -except ImportError: - pass +AKISMET_API_KEY = None \ No newline at end of file From d8009cd4b2951c750515384b883a16270517a4d4 Mon Sep 17 00:00:00 2001 From: Thomas <51749973+Thovi98@users.noreply.github.com> Date: Sat, 20 Jan 2024 11:57:54 +0100 Subject: [PATCH 2/4] fix line-match --- scripts/change_url | 2 +- scripts/upgrade | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/change_url b/scripts/change_url index 7bbb34d..e678edc 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -72,7 +72,7 @@ fi ynh_script_progression --message="Stopping systemd services..." --weight=1 ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/weblate.log" --line_match="goodbye to uWSGI" -ynh_systemd_action --service_name="$app-celery" --action="stop" --log_path="systemd" --line_match="Stopped" +ynh_systemd_action --service_name="$app-celery" --action="stop" --log_path="systemd" #================================================= # MODIFY URL IN NGINX CONF diff --git a/scripts/upgrade b/scripts/upgrade index 253c470..e097eea 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -60,7 +60,7 @@ ynh_abort_if_errors ynh_script_progression --message="Stopping systemd services..." --weight=5 ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/weblate.log" --line_match="goodbye to uWSGI" -ynh_systemd_action --service_name="$app-celery" --action="stop" --log_path="systemd" --line_match="Stopped" +ynh_systemd_action --service_name="$app-celery" --action="stop" --log_path="systemd" #================================================= # ENSURE DOWNWARD COMPATIBILITY From dc6f750667731656f06b75b9d5f47dbcf3b708da Mon Sep 17 00:00:00 2001 From: Thomas <51749973+Thovi98@users.noreply.github.com> Date: Sat, 20 Jan 2024 13:08:50 +0100 Subject: [PATCH 3/4] remove failing test --- check_process | 4 ---- 1 file changed, 4 deletions(-) diff --git a/check_process b/check_process index 53afd2b..fb7caa6 100644 --- a/check_process +++ b/check_process @@ -25,7 +25,3 @@ ;;; Options Email= Notification=all -;;; Upgrade options - ; commit=3f8363cdc588e609a775cb8b78b9d080f96405d9 - name=Upgrade from 4.6.1 - manifest_arg=domain=DOMAIN&path=PATH&admin=USER&is_public=1&github_account=fake&github_token=fake From bf06a207d869f6d2c27dd8230b80ccacd4558384 Mon Sep 17 00:00:00 2001 From: Thomas <51749973+Thovi98@users.noreply.github.com> Date: Sat, 20 Jan 2024 14:23:20 +0100 Subject: [PATCH 4/4] Update check_process --- check_process | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/check_process b/check_process index fb7caa6..b5398bd 100644 --- a/check_process +++ b/check_process @@ -16,9 +16,7 @@ setup_private=1 setup_public=1 upgrade=1 - # 4.9~ynh1 - upgrade=1 from_commit=7fec5a47a80e00458a31f1270c4ace822961e7bf - backup_restore=1 + backup_restore=1 multi_instance=1 port_already_use=0 change_url=1