WeblateOrg / weblate

Web based localization tool with tight version control integration.
https://weblate.org/
GNU General Public License v3.0
4.62k stars 1.02k forks source link

Error when dismissing some checks: "'NoneType' object has no attribute 'ignore_string'" #13020

Open tvogt opened 11 hours ago

tvogt commented 11 hours ago

Describe the issue

My self-hosted Weblate instance throws the following error when I try to dismiss certain checks, but not for others (i.e. dismissing in general works, but not for some checks). The "elipsis ..." check is the one that reliably fails.

I'm attaching the error that I received by mail.

I already tried

Steps to reproduce the behavior

Resolving checks in my community translations. On a check saying "elipsis ..." I pressed the "Dismiss" button. Error. I had not checked the "for all languages" checkbox. I have both before and after successfully dismissed other checks.

Expected behavior

checkdismissed

Screenshots

No response

Exception traceback

AttributeError at /js/ignore-check/1087/source/
'NoneType' object has no attribute 'ignore_string'
Request Method:
POST
Request URL:
https://weblate.lemuria.org/js/ignore-check/1087/source/
Django Version:
5.1.2
Exception Type:
AttributeError
Exception Value:
'NoneType' object has no attribute 'ignore_string'
Exception Location:
/home/weblate/weblate-env/lib/python3.11/site-packages/weblate/trans/views/js.py, line 72, in ignore_check_source
Raised during:
weblate.trans.views.js.ignore_check_source
Python Executable:
/home/weblate/weblate-env/bin/python
Python Version:
3.11.2
Python Path:
['/home/weblate',
 '/usr/lib/python311.zip',
 '/usr/lib/python3.11',
 '/usr/lib/python3.11/lib-dynload',
 '/home/weblate/weblate-env/lib/python3.11/site-packages']
Server time:
Wed, 13 Nov 2024 21:50:42 +0000
Traceback 
        /home/weblate/weblate-env/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner
    55.                 response = get_response(request)
    56.                                ^^^^^^^^^^^^^^^^^^^^^
        
Local Vars

        Variable
        Value
        exc
        AttributeError("'NoneType' object has no attribute 'ignore_string'")

        get_response
        <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7fef8e8f5210>>

        request
        <WSGIRequest: POST '/js/ignore-check/1087/source/'>

        /home/weblate/weblate-env/lib/python3.11/site-packages/django/core/handlers/base.py, line 197, in _get_response
    197.                    response = wrapped_callback(request, *callback_args, **callback_kwargs)
    198.                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
Local Vars

        Variable
        Value
        callback
        <function ignore_check_source at 0x7fef8d8dd120>

        callback_args
        ()

        callback_kwargs
        {'check_id': 1087}

        middleware_method
        <bound method RequireLoginMiddleware.process_view of <weblate.accounts.middleware.RequireLoginMiddleware object at 0x7fef8e888290>>

        request
        <WSGIRequest: POST '/js/ignore-check/1087/source/'>

        response
        None

        self
        <django.core.handlers.wsgi.WSGIHandler object at 0x7fef8e8f5210>

        wrapped_callback
        <function ignore_check_source at 0x7fef8d8dd120>

        /home/weblate/weblate-env/lib/python3.11/site-packages/django/views/decorators/http.py, line 64, in inner
    64.                 return func(request, *args, **kwargs)
    65.                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
Local Vars

        Variable
        Value
        args
        ()

        func
        <function ignore_check_source at 0x7fef8d8dd260>

        kwargs
        {'check_id': 1087}

        request
        <WSGIRequest: POST '/js/ignore-check/1087/source/'>

        request_method_list
        ['POST']

        /home/weblate/weblate-env/lib/python3.11/site-packages/django/contrib/auth/decorators.py, line 60, in _view_wrapper
    60.                     return view_func(request, *args, **kwargs)
    61.                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
Local Vars

        Variable
        Value
        _redirect_to_login
        <function user_passes_test.<locals>.decorator.<locals>._redirect_to_login at 0x7fef8d8dd1c0>

        args
        ()

        kwargs
        {'check_id': 1087}

        request
        <WSGIRequest: POST '/js/ignore-check/1087/source/'>

        test_func
        <function login_required.<locals>.<lambda> at 0x7fef8d8dd080>

        test_pass
        True

        view_func
        <function ignore_check_source at 0x7fef8d8dcfe0>

        /home/weblate/weblate-env/lib/python3.11/site-packages/weblate/trans/views/js.py, line 72, in ignore_check_source
    72.     ignore = obj.check_obj.ignore_string
    73.                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
Local Vars

        Variable
        Value
        check_id
        1087

        obj
        <Check: ellipsis>

        request
        <WSGIRequest: POST '/js/ignore-check/1087/source/'>

        unit
        <Unit: 13784: 50c96350-b3a7-4672-a3ea-24fae68f9ca9>

Request information
USER
Tom
GET
No GET data
POST
Variable
Value
csrfmiddlewaretoken
'wHimrFJ4CNBmkluQ58rDOjYehjvXKlZ4gFwTjVaJ6a53zwMozWTGoD8emVNnLVPQ'
FILES
No FILES data
COOKIES
Variable
Value
sessionid
'********************'
django_language
'en-gb'
META
Variable
Value
CONTENT_LENGTH
'84'
CONTENT_TYPE
'application/x-www-form-urlencoded; charset=UTF-8'
CONTEXT_DOCUMENT_ROOT
'/var/www/html'
CONTEXT_PREFIX
''
CSRF_COOKIE
'U8oH2qBPExERplsIEYCdKukafMsAbK0W'
DOCUMENT_ROOT
'/var/www/html'
GATEWAY_INTERFACE
'CGI/1.1'
H2PUSH
'off'
H2_PUSH
'off'
H2_PUSHED
''
H2_PUSHED_ON
''
H2_STREAM_ID
'13'
H2_STREAM_TAG
'4006622-1930-13'
HTTP2
'on'
HTTP_ACCEPT
'*/*'
HTTP_ACCEPT_ENCODING
'gzip, deflate, br, zstd'
HTTP_ACCEPT_LANGUAGE
'de,en-US;q=0.7,en;q=0.3'
HTTP_COOKIE
'********************'
HTTP_DNT
'1'
HTTP_HOST
'weblate.lemuria.org'
HTTP_ORIGIN
'https://weblate.lemuria.org'
HTTP_PRIORITY
'u=0'
HTTP_REFERER
'https://weblate.lemuria.org/'
HTTP_SEC_FETCH_DEST
'empty'
HTTP_SEC_FETCH_MODE
'cors'
HTTP_SEC_FETCH_SITE
'same-origin'
HTTP_SEC_GPC
'1'
HTTP_TE
'trailers'
HTTP_USER_AGENT
('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:132.0) Gecko/20100101 '
 'Firefox/132.0')
HTTP_X_REQUESTED_WITH
'XMLHttpRequest'
PATH_INFO
'/js/ignore-check/1087/source/'
PATH_TRANSLATED
'/home/weblate/weblate-env/lib/python3.11/site-packages/weblate/wsgi.py/js/ignore-check/1087/source/'
QUERY_STRING
''
REMOTE_ADDR
'62.46.241.215'
REMOTE_PORT
'62090'
REQUEST_METHOD
'POST'
REQUEST_SCHEME
'https'
REQUEST_URI
'/js/ignore-check/1087/source/'
SCRIPT_FILENAME
'/home/weblate/weblate-env/lib/python3.11/site-packages/weblate/wsgi.py'
SCRIPT_NAME
''
SERVER_ADDR
'92.205.226.242'
SERVER_ADMIN
'[no address given]'
SERVER_NAME
'weblate.lemuria.org'
SERVER_PORT
'443'
SERVER_PROTOCOL
'HTTP/2.0'
SERVER_SIGNATURE
'********************'
SERVER_SOFTWARE
'Apache/2.4.62 (Debian)'
SSL_TLS_SNI
'weblate.lemuria.org'
WEBLATE_LANGUAGE
''
WEBLATE_USER
"'Tom'"
WEBLATE_VERSION:Cython
'3.0.11'
WEBLATE_VERSION:Django
'5.1.2'
WEBLATE_VERSION:Git
'2.39.5'
WEBLATE_VERSION:GitPython
'3.1.43'
WEBLATE_VERSION:PostgreSQL server
'15.8'
WEBLATE_VERSION:PyGObject
'3.50.0'
WEBLATE_VERSION:Python
'3.11.2'
WEBLATE_VERSION:RapidFuzz
'********************'
WEBLATE_VERSION:Weblate
'5.8.1'
WEBLATE_VERSION:aeidon
'1.15'
WEBLATE_VERSION:ahocorasick_rs
'0.22.1'
WEBLATE_VERSION:borgbackup
'1.4.0'
WEBLATE_VERSION:celery
'5.4.0'
WEBLATE_VERSION:charset-normalizer
'3.4.0'
WEBLATE_VERSION:cyrtranslit
'1.1.1'
WEBLATE_VERSION:diff-match-patch
'20230430'
WEBLATE_VERSION:django-appconf
'1.0.6'
WEBLATE_VERSION:django-celery-beat
'2.7.0'
WEBLATE_VERSION:django-compressor
'4.5.1'
WEBLATE_VERSION:django-crispy-forms
'2.3'
WEBLATE_VERSION:django-filter
'24.3'
WEBLATE_VERSION:django-redis
'5.4.0'
WEBLATE_VERSION:djangorestframework
'3.15.2'
WEBLATE_VERSION:drf-spectacular
'0.27.2'
WEBLATE_VERSION:filelock
'3.16.1'
WEBLATE_VERSION:hiredis
'3.0.0'
WEBLATE_VERSION:html2text
'2024.2.26'
WEBLATE_VERSION:iniparse
'0.5'
WEBLATE_VERSION:kombu
'5.4.2'
WEBLATE_VERSION:lxml
'5.3.0'
WEBLATE_VERSION:mistletoe
'1.4.0'
WEBLATE_VERSION:nh3
'0.2.18'
WEBLATE_VERSION:oauthlib
'3.2.2'
WEBLATE_VERSION:openpyxl
'3.1.5'
WEBLATE_VERSION:phply
'1.2.6'
WEBLATE_VERSION:pillow
'10.4.0'
WEBLATE_VERSION:psycopg
'3.2.3'
WEBLATE_VERSION:psycopg-binary
'3.2.3'
WEBLATE_VERSION:pycairo
'1.27.0'
WEBLATE_VERSION:pyparsing
'3.2.0'
WEBLATE_VERSION:python-dateutil
'2.9.0.post0'
WEBLATE_VERSION:python-redis-lock
'4.0.0'
WEBLATE_VERSION:requests
'2.32.3'
WEBLATE_VERSION:ruamel.yaml
'0.18.6'
WEBLATE_VERSION:sentry-sdk
'2.17.0'
WEBLATE_VERSION:siphashc
'2.5'
WEBLATE_VERSION:social-auth-app-django
'5.4.2'
WEBLATE_VERSION:social-auth-core
'4.5.4'
WEBLATE_VERSION:tesserocr
'2.7.1'
WEBLATE_VERSION:translate-toolkit
'3.14.1'
WEBLATE_VERSION:translation-finder
'2.16'
WEBLATE_VERSION:user-agents
'2.2.0'
WEBLATE_VERSION:weblate-language-data
'2024.9'
apache.version
(2, 4, 55)
mod_wsgi.application_group
''
mod_wsgi.callable_object
'application'
mod_wsgi.daemon_connects
'1'
mod_wsgi.daemon_restarts
'0'
mod_wsgi.daemon_start
'1731534642537607'
mod_wsgi.enable_sendfile
'0'
mod_wsgi.handler_script
''
mod_wsgi.ignore_activity
'0'
mod_wsgi.listener_host
''
mod_wsgi.listener_port
'443'
mod_wsgi.path_info
'/js/ignore-check/1087/source/'
mod_wsgi.process_group
'weblate'
mod_wsgi.queue_start
'1731534642537531'
mod_wsgi.request_handler
'wsgi-script'
mod_wsgi.request_id
'T+NIU2IoG5U'
mod_wsgi.request_start
'1731534642537295'
mod_wsgi.script_name
''
mod_wsgi.script_reloading
'1'
mod_wsgi.script_start
'1731534642537734'
mod_wsgi.thread_id
2
mod_wsgi.thread_requests
51
mod_wsgi.total_requests
270
mod_wsgi.version
(4, 9, 4)
wsgi.errors
<_io.TextIOWrapper name='<wsgi.errors>' encoding='utf-8'>
wsgi.file_wrapper
<class 'mod_wsgi.FileWrapper'>
wsgi.input
<mod_wsgi.Input object at 0x7fef85761140>
wsgi.input_terminated
True
wsgi.multiprocess
False
wsgi.multithread
True
wsgi.run_once
False
wsgi.url_scheme
'https'
wsgi.version
(1, 0)
Settings
Using settings module weblate.settings
Setting
Value
ABSOLUTE_URL_OVERRIDES
{}
ADDON_ACTIVITY_LOG_EXPIRY
180
ADMINS
(('Tom', 'tom@lemuria.org'),)
ADMINS_BILLING
[]
ADMINS_CONTACT
[]
ADMINS_HOSTING
[]
AKISMET_API_KEY
'********************'
ALLOWED_HOSTS
['*']
ANONYMOUS_USER_NAME
'anonymous'
APPEND_SLASH
True
AUDITLOG_EXPIRY
180
AUTHENTICATION_BACKENDS
('social_core.backends.email.EmailAuth',
 'weblate.accounts.auth.WeblateUserBackend')
AUTH_LOCK_ATTEMPTS
10
AUTH_PASSWORD_DAYS
'********************'
AUTH_PASSWORD_VALIDATORS
'********************'
AUTH_RESTRICT_ADMINS
{}
AUTH_TOKEN_VALID
'********************'
AUTH_USER_MODEL
'weblate_auth.User'
AUTOFIX_LIST
('weblate.trans.autofixes.whitespace.SameBookendingWhitespace',
 'weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis',
 'weblate.trans.autofixes.chars.RemoveZeroSpace',
 'weblate.trans.autofixes.chars.RemoveControlChars',
 'weblate.trans.autofixes.chars.DevanagariDanda',
 'weblate.trans.autofixes.chars.PunctuationSpacing',
 'weblate.trans.autofixes.html.BleachHTML')
AUTO_UPDATE
False
AVATAR_DEFAULT_IMAGE
'identicon'
AVATAR_URL_PREFIX
'https://www.gravatar.com/'
AZURE_DEVOPS_CREDENTIALS
{}
BACKGROUND_ADMIN_CHECKS
True
BACKGROUND_TASKS
'monthly'
BASIC_LANGUAGES
None
BITBUCKETCLOUD_CREDENTIALS
{}
BITBUCKETSERVER_CREDENTIALS
{}
BORG_EXTRA_ARGS
None
CACHES
{'avatar': {'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
            'LOCATION': '/home/weblate/data/cache/avatar',
            'OPTIONS': {'MAX_ENTRIES': 1000},
            'TIMEOUT': 86400},
 'default': {'BACKEND': 'redis_lock.django_cache.RedisCache',
             'KEY_PREFIX': '********************',
             'LOCATION': 'redis://127.0.0.1:6379/1',
             'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient',
                         'CONNECTION_POOL_KWARGS': {},
                         'PASSWORD': '********************'},
             'TIMEOUT': 3600}}
CACHE_DIR
'/home/weblate/data/cache'
CACHE_MIDDLEWARE_ALIAS
'default'
CACHE_MIDDLEWARE_KEY_PREFIX
'********************'
CACHE_MIDDLEWARE_SECONDS
600
CELERY_BEAT_SCHEDULER
'django_celery_beat.schedulers:DatabaseScheduler'
CELERY_BROKER_CONNECTION_RETRY
True
CELERY_BROKER_CONNECTION_RETRY_ON_STARTUP
True
CELERY_BROKER_URL
'redis://localhost:6379'
CELERY_RESULT_BACKEND
'redis://localhost:6379'
CELERY_TASK_ALWAYS_EAGER
False
CELERY_TASK_ROUTES
{'weblate.accounts.tasks.notify_*': {'queue': 'notify'},
 'weblate.accounts.tasks.send_mails': {'queue': 'notify'},
 'weblate.memory.tasks.*': {'queue': 'memory'},
 'weblate.trans.tasks.auto_translate*': {'queue': 'translate'},
 'weblate.utils.tasks.database_backup': {'queue': 'backup'},
 'weblate.utils.tasks.settings_backup': {'queue': 'backup'},
 'weblate.wladmin.tasks.backup': {'queue': 'backup'},
 'weblate.wladmin.tasks.backup_service': {'queue': 'backup'}}
CELERY_WORKER_MAX_MEMORY_PER_CHILD
200000
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.DoubleSpaceCheck',
 'weblate.checks.chars.EndStopCheck',
 'weblate.checks.chars.EndColonCheck',
 'weblate.checks.chars.EndQuestionCheck',
 'weblate.checks.chars.EndExclamationCheck',
 'weblate.checks.chars.EndInterrobangCheck',
 'weblate.checks.chars.EndEllipsisCheck',
 'weblate.checks.chars.EndSemicolonCheck',
 'weblate.checks.chars.MaxLengthCheck',
 'weblate.checks.chars.KashidaCheck',
 'weblate.checks.chars.PunctuationSpacingCheck',
 'weblate.checks.format.PythonFormatCheck',
 'weblate.checks.format.PythonBraceFormatCheck',
 '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',
 'weblate.checks.format.SchemeFormatCheck',
 'weblate.checks.format.CSharpFormatCheck',
 'weblate.checks.format.JavaFormatCheck',
 'weblate.checks.format.JavaMessageFormatCheck',
 'weblate.checks.format.PercentPlaceholdersCheck',
 'weblate.checks.format.VueFormattingCheck',
 'weblate.checks.format.I18NextInterpolationCheck',
 'weblate.checks.format.ESTemplateLiteralsCheck',
 'weblate.checks.angularjs.AngularJSInterpolationCheck',
 'weblate.checks.icu.ICUMessageFormatCheck',
 'weblate.checks.icu.ICUSourceCheck',
 'weblate.checks.qt.QtFormatCheck',
 'weblate.checks.qt.QtPluralCheck',
 'weblate.checks.ruby.RubyFormatCheck',
 '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',
 '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.markup.SafeHTMLCheck',
 'weblate.checks.placeholders.PlaceholderCheck',
 'weblate.checks.placeholders.RegexCheck',
 'weblate.checks.duplicate.DuplicateCheck',
 'weblate.checks.source.OptionalPluralCheck',
 'weblate.checks.source.MultipleFailingCheck',
 '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')
COMMENT_CLEANUP_DAYS
None
COMMIT_PENDING_HOURS
24
COMPRESSORS
{'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'}
COMPRESS_CACHEABLE_PRECOMPILERS
()
COMPRESS_CACHE_BACKEND
'default'
COMPRESS_CACHE_KEY_FUNCTION
'********************'
COMPRESS_CLEAN_CSS_ARGUMENTS
''
COMPRESS_CLEAN_CSS_BINARY
'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS
''
COMPRESS_CLOSURE_COMPILER_BINARY
'java -jar compiler.jar'
COMPRESS_CSS_HASHING_METHOD
'content'
COMPRESS_DATA_URI_MAX_SIZE
1024
COMPRESS_DEBUG_TOGGLE
None
COMPRESS_ENABLED
True
COMPRESS_FILTERS
{'css': ['compressor.filters.css_default.CssAbsoluteFilter',
         'compressor.filters.cssmin.rCSSMinFilter'],
 'js': ['compressor.filters.jsmin.rJSMinFilter']}
COMPRESS_JINJA2_GET_ENVIRONMENT
<function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7fef8e9b34c0>
COMPRESS_MINT_DELAY
30
COMPRESS_MTIME_DELAY
10
COMPRESS_OFFLINE
False
COMPRESS_OFFLINE_CONTEXT
'weblate.utils.compress.offline_context'
COMPRESS_OFFLINE_MANIFEST
'manifest.json'
COMPRESS_OFFLINE_MANIFEST_STORAGE
'compressor.storage.OfflineManifestFileStorage'
COMPRESS_OFFLINE_MANIFEST_STORAGE_ALIAS
'compressor-offine'
COMPRESS_OFFLINE_TIMEOUT
31536000
COMPRESS_OUTPUT_DIR
'CACHE'
COMPRESS_PARSER
'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS
()
COMPRESS_REBUILD_TIMEOUT
2592000
COMPRESS_ROOT
'/home/weblate/data/cache/static'
COMPRESS_STORAGE
'compressor.storage.CompressorFileStorage'
COMPRESS_STORAGE_ALIAS
'compressor'
COMPRESS_TEMPLATE_FILTER_CONTEXT
{'STATIC_URL': '/static/'}
COMPRESS_URL
'/static/'
COMPRESS_URL_PLACEHOLDER
'/__compressor_url_placeholder__/'
COMPRESS_VERBOSE
False
COMPRESS_YUGLIFY_BINARY
'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS
'--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS
'--terminal'
COMPRESS_YUI_BINARY
'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS
''
COMPRESS_YUI_JS_ARGUMENTS
''
CONTACT_FORM
'reply-to'
CORS_ALLOWED_ORIGINS
[]
CORS_URLS_REGEX
'^/api/.*$'
CREATE_GLOSSARIES
True
CRISPY_ALLOWED_TEMPLATE_PACKS
'bootstrap3'
CRISPY_TEMPLATE_PACK
'bootstrap3'
CSP_CONNECT_SRC
[]
CSP_FONT_SRC
[]
CSP_FORM_SRC
[]
CSP_IMG_SRC
[]
CSP_SCRIPT_SRC
[]
CSP_STYLE_SRC
[]
CSRF_COOKIE_AGE
31449600
CSRF_COOKIE_DOMAIN
None
CSRF_COOKIE_HTTPONLY
True
CSRF_COOKIE_NAME
'csrftoken'
CSRF_COOKIE_PATH
'/'
CSRF_COOKIE_SAMESITE
'Lax'
CSRF_COOKIE_SECURE
True
CSRF_FAILURE_VIEW
'weblate.trans.views.error.csrf_failure'
CSRF_HEADER_NAME
'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS
[]
CSRF_USE_SESSIONS
True
DATABASES
{'default': {'ATOMIC_REQUESTS': False,
             'AUTOCOMMIT': True,
             'CONN_HEALTH_CHECKS': True,
             'CONN_MAX_AGE': None,
             'DISABLE_SERVER_SIDE_CURSORS': False,
             'ENGINE': 'django.db.backends.postgresql',
             'HOST': '127.0.0.1',
             'NAME': 'weblate',
             'OPTIONS': {},
             'PASSWORD': '********************',
             'PORT': '',
             'TEST': {'CHARSET': None,
                      'COLLATION': None,
                      'MIGRATE': True,
                      'MIRROR': None,
                      'NAME': None},
             'TIME_ZONE': None,
             'USER': 'weblate'}}
DATABASE_BACKUP
'plain'
DATABASE_ROUTERS
[]
DATA_DIR
'/home/weblate/data'
DATA_UPLOAD_MAX_MEMORY_SIZE
50000000
DATA_UPLOAD_MAX_NUMBER_FIELDS
2000
DATA_UPLOAD_MAX_NUMBER_FILES
100
DATETIME_FORMAT
'N j, Y, P'
DATETIME_INPUT_FORMATS
['%Y-%m-%d %H:%M:%S',
 '%Y-%m-%d %H:%M:%S.%f',
 '%Y-%m-%d %H:%M',
 '%m/%d/%Y %H:%M:%S',
 '%m/%d/%Y %H:%M:%S.%f',
 '%m/%d/%Y %H:%M',
 '%m/%d/%y %H:%M:%S',
 '%m/%d/%y %H:%M:%S.%f',
 '%m/%d/%y %H:%M']
DATE_FORMAT
'N j, Y'
DATE_INPUT_FORMATS
['%Y-%m-%d',
 '%m/%d/%Y',
 '%m/%d/%y',
 '%b %d %Y',
 '%b %d, %Y',
 '%d %b %Y',
 '%d %b, %Y',
 '%B %d %Y',
 '%B %d, %Y',
 '%d %B %Y',
 '%d %B, %Y']
DEBUG
False
DEBUG_PROPAGATE_EXCEPTIONS
False
DECIMAL_SEPARATOR
'.'
DEFAULT_ACCESS_CONTROL
0
DEFAULT_ADDONS
{}
DEFAULT_ADDON_MESSAGE
('Update translation files\n'
 '\n'
 'Updated by "{{ addon_name }}" add-on in Weblate.\n'
 '\n'
 'Translation: {{ project_name }}/{{ component_name }}\n'
 'Translate-URL: {{ url }}')
DEFAULT_ADD_MESSAGE
'Added translation using Weblate ({{ language_name }})\n\n'
DEFAULT_AUTO_FIELD
'django.db.models.AutoField'
DEFAULT_AUTO_LOCK_ERROR
True
DEFAULT_AUTO_WATCH
True
DEFAULT_CHARSET
'utf-8'
DEFAULT_COMMITER_EMAIL
'noreply@weblate.org'
DEFAULT_COMMITER_NAME
'Weblate'
DEFAULT_COMMIT_MESSAGE
('Translated using Weblate ({{ language_name }})\n'
 '\n'
 'Currently translated at {{ stats.translated_percent }}% ({{ stats.translated '
 '}} of {{ stats.all }} strings)\n'
 '\n'
 'Translation: {{ project_name }}/{{ component_name }}\n'
 'Translate-URL: {{ url }}')
DEFAULT_DELETE_MESSAGE
'Deleted translation using Weblate ({{ language_name }})\n\n'
DEFAULT_EXCEPTION_REPORTER
'django.views.debug.ExceptionReporter'
DEFAULT_EXCEPTION_REPORTER_FILTER
'weblate.trans.debug.WeblateExceptionReporterFilter'
DEFAULT_FROM_EMAIL
'noreply@lemuria.org'
DEFAULT_INDEX_TABLESPACE
''
DEFAULT_LANGUAGE
'en'
DEFAULT_LOG
'syslog'
DEFAULT_LOGLEVEL
'INFO'
DEFAULT_MERGE_MESSAGE
"Merge branch '{{ component_remote_branch }}' into Weblate.\n\n"
DEFAULT_MERGE_STYLE
'rebase'
DEFAULT_PAGE_LIMIT
100
DEFAULT_PULL_MESSAGE
('Translations update from {{ site_title }}\n'
 '\n'
 'Translations update from [{{ site_title }}]({{ site_url }}) for [{{ '
 'project_name }}/{{ component_name }}]({{url}}).\n'
 '\n'
 '{% if component_linked_childs %}\n'
 'It also includes following components:\n'
 '{% for linked in component_linked_childs %}\n'
 '* [{{ linked.project_name }}/{{ linked.name }}]({{ linked.url }})\n'
 '{% endfor %}\n'
 '{% endif %}\n'
 '\n'
 'Current translation status:\n'
 '\n'
 '![Weblate translation status]({{widget_url}})\n')
DEFAULT_PUSH_ON_COMMIT
True
DEFAULT_RESTRICTED_COMPONENT
False
DEFAULT_SHARED_TM
True
DEFAULT_TABLESPACE
''
DEFAULT_TRANSLATION_PROPAGATION
True
DEFAULT_VCS
'git'
DISALLOWED_USER_AGENTS
[]
EMAIL_BACKEND
'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST
'localhost'
EMAIL_HOST_PASSWORD
'********************'
EMAIL_HOST_USER
''
EMAIL_PORT
25
EMAIL_SEND_HTML
True
EMAIL_SSL_CERTFILE
None
EMAIL_SSL_KEYFILE
'********************'
EMAIL_SUBJECT_PREFIX
'[Weblate] '
EMAIL_TIMEOUT
None
EMAIL_USE_LOCALTIME
False
EMAIL_USE_SSL
False
EMAIL_USE_TLS
False
ENABLE_AVATARS
True
ENABLE_HOOKS
True
ENABLE_HTTPS
True
ENABLE_SHARING
True
EXTRA_HTML_HEAD
''
FILE_UPLOAD_DIRECTORY_PERMISSIONS
None
FILE_UPLOAD_HANDLERS
['django.core.files.uploadhandler.MemoryFileUploadHandler',
 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE
2621440
FILE_UPLOAD_PERMISSIONS
420
FILE_UPLOAD_TEMP_DIR
None
FIRST_DAY_OF_WEEK
0
FIXTURE_DIRS
[]
FONTS_CDN_URL
None
FORCE_SCRIPT_NAME
None
FORMAT_MODULE_PATH
None
FORMS_URLFIELD_ASSUME_HTTPS
True
FORM_RENDERER
'django.forms.renderers.DjangoTemplates'
GET_HELP_URL
None
GITEA_CREDENTIALS
{}
GITHUB_CREDENTIALS
{}
GITLAB_CREDENTIALS
{}
GOOGLE_ANALYTICS_ID
None
HAVE_SYSLOG
True
HIDE_REPO_CREDENTIALS
True
HIDE_VERSION
False
IGNORABLE_404_URLS
[]
INSTALLED_APPS
['weblate.addons',
 'weblate.auth',
 'weblate.checks',
 'weblate.formats',
 'weblate.glossary',
 'weblate.machinery',
 'weblate.trans',
 'weblate.lang',
 'weblate_language_data',
 'weblate.memory',
 'weblate.screenshots',
 'weblate.fonts',
 'weblate.accounts',
 'weblate.configuration',
 'weblate.utils',
 'weblate.vcs',
 'weblate.wladmin',
 'weblate.metrics',
 'weblate',
 'weblate.gitexport',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'django.contrib.sitemaps',
 'django.contrib.humanize',
 'social_django',
 'crispy_forms',
 'crispy_bootstrap3',
 'compressor',
 'rest_framework',
 'rest_framework.authtoken',
 'django_filters',
 'django_celery_beat',
 'corsheaders',
 'django_otp',
 'django_otp.plugins.otp_static',
 'django_otp.plugins.otp_totp',
 'django_otp_webauthn',
 'drf_spectacular',
 'drf_spectacular_sidecar']
INTERLEDGER_PAYMENT_POINTERS
['$ilp.uphold.com/ENU7fREdeZi9']
INTERNAL_IPS
[]
INVOICE_PATH
''
IP_ADDRESSES
[]
IP_BEHIND_REVERSE_PROXY
False
IP_PROXY_HEADER
'HTTP_X_FORWARDED_FOR'
IP_PROXY_OFFSET
-1
LANGUAGES
(('ar', 'العربية'),
 ('az', 'Azərbaycan'),
 ('be', 'Беларуская'),
 ('be-latn', 'Biełaruskaja'),
 ('bg', 'Български'),
 ('br', 'Brezhoneg'),
 ('ca', 'Català'),
 ('cs', 'Čeština'),
 ('cy', 'Cymraeg'),
 ('da', 'Dansk'),
 ('de', 'Deutsch'),
 ('en', 'English'),
 ('el', 'Ελληνικά'),
 ('en-gb', 'English (United Kingdom)'),
 ('es', 'Español'),
 ('fi', 'Suomi'),
 ('fr', 'Français'),
 ('ga', 'Gaeilge'),
 ('gl', 'Galego'),
 ('he', 'עברית'),
 ('hu', 'Magyar'),
 ('hr', 'Hrvatski'),
 ('id', 'Indonesia'),
 ('is', 'Íslenska'),
 ('it', 'Italiano'),
 ('ja', '日本語'),
 ('kab', 'Taqbaylit'),
 ('kk', 'Қазақ тілі'),
 ('ko', '한국어'),
 ('nb', 'Norsk bokmål'),
 ('nl', 'Nederlands'),
 ('pl', 'Polski'),
 ('pt', 'Português'),
 ('pt-br', 'Português brasileiro'),
 ('ro', 'Română'),
 ('ru', 'Русский'),
 ('sk', 'Slovenčina'),
 ('sl', 'Slovenščina'),
 ('sq', 'Shqip'),
 ('sr', 'Српски'),
 ('sr-latn', 'Srpski'),
 ('sv', 'Svenska'),
 ('ta', 'தமிழ்'),
 ('th', 'ไทย'),
 ('tr', 'Türkçe'),
 ('uk', 'Українська'),
 ('zh-hans', '简体中文'),
 ('zh-hant', '正體中文'))
LANGUAGES_BIDI
['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']
LANGUAGE_CODE
'en-us'
LANGUAGE_COOKIE_AGE
12096000
LANGUAGE_COOKIE_DOMAIN
None
LANGUAGE_COOKIE_HTTPONLY
True
LANGUAGE_COOKIE_NAME
'django_language'
LANGUAGE_COOKIE_PATH
'/'
LANGUAGE_COOKIE_SAMESITE
'Lax'
LANGUAGE_COOKIE_SECURE
True
LEGAL_URL
None
LICENSE_EXTRA
[]
LICENSE_FILTER
None
LICENSE_REQUIRED
False
LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH
True
LOCALE_PATHS
[]
LOCALIZE_CDN_PATH
None
LOCALIZE_CDN_URL
None
LOGGING
{'disable_existing_loggers': True,
 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}},
 'formatters': {'django.server': {'()': 'django.utils.log.ServerFormatter',
                                  'format': '[%(server_time)s] %(message)s'},
                'logfile': {'format': '%(asctime)s %(levelname)s %(message)s'},
                'simple': {'format': '[%(asctime)s: %(levelname)s/%(process)s] '
                                     '%(message)s'},
                'syslog': {'format': 'weblate[%(process)d]: %(levelname)s '
                                     '%(message)s'}},
 'handlers': {'console': {'class': 'logging.StreamHandler',
                          'formatter': 'simple',
                          'level': 'DEBUG'},
              'django.server': {'class': 'logging.StreamHandler',
                                'formatter': 'django.server',
                                'level': 'INFO'},
              'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',
                              'filters': ['require_debug_false'],
                              'include_html': True,
                              'level': 'ERROR'},
              'syslog': {'address': '/dev/log',
                         'class': 'logging.handlers.SysLogHandler',
                         'facility': 18,
                         'formatter': 'syslog',
                         'level': 'DEBUG'}},
 'loggers': {'django.request': {'handlers': ['mail_admins', 'syslog'],
                                'level': 'ERROR',
                                'propagate': True},
             'django.server': {'handlers': ['django.server'],
                               'level': 'INFO',
                               'propagate': False},
             'django_auth_ldap': {'handlers': ['syslog'], 'level': 'INFO'},
             'djangosaml2idp': {'handlers': ['syslog'], 'level': 'INFO'},
             'redis_lock': {'handlers': ['syslog'], 'level': 'INFO'},
             'social': {'handlers': ['syslog'], 'level': 'INFO'},
             'weblate': {'handlers': ['syslog'], 'level': 'INFO'},
             'weblate.vcs': {'handlers': ['syslog'], 'level': 'INFO'}},
 'version': 1}
LOGGING_CONFIG
'logging.config.dictConfig'
LOGIN_REDIRECT_URL
'/'
LOGIN_REQUIRED_URLS
[]
LOGIN_REQUIRED_URLS_EXCEPTIONS
('{URL_PREFIX}/accounts/(.*)$',
 '{URL_PREFIX}/admin/login/(.*)$',
 '{URL_PREFIX}/static/(.*)$',
 '{URL_PREFIX}/widgets/(.*)$',
 '{URL_PREFIX}/data/(.*)$',
 '{URL_PREFIX}/hooks/(.*)$',
 '{URL_PREFIX}/healthz/$',
 '{URL_PREFIX}/api/(.*)$',
 '{URL_PREFIX}/js/i18n/$',
 '{URL_PREFIX}/contact/$',
 '{URL_PREFIX}/legal/(.*)$',
 '{URL_PREFIX}/avatar/(.*)$')
LOGIN_URL
'/accounts/login/'
LOGOUT_REDIRECT_URL
None
LOGOUT_URL
'/accounts/logout/'
MANAGERS
(('Tom', 'tom@lemuria.org'),)
MATOMO_SITE_ID
None
MATOMO_URL
None
MEDIA_ROOT
'/home/weblate/data/media'
MEDIA_URL
'/media/'
MESSAGE_STORAGE
'django.contrib.messages.storage.session.SessionStorage'
MIDDLEWARE
['weblate.middleware.RedirectMiddleware',
 'weblate.middleware.ProxyMiddleware',
 'corsheaders.middleware.CorsMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'weblate.accounts.middleware.AuthenticationMiddleware',
 'django_otp.middleware.OTPMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'social_django.middleware.SocialAuthExceptionMiddleware',
 'weblate.accounts.middleware.RequireLoginMiddleware',
 'weblate.api.middleware.ThrottlingMiddleware',
 'weblate.middleware.SecurityMiddleware',
 'weblate.wladmin.middleware.ManageMiddleware']
MIGRATION_MODULES
{}
MONTH_DAY_FORMAT
'F j'
NEARBY_MESSAGES
15
NUMBER_GROUPING
0
OFFER_HOSTING
False
OTP_WEBAUTHN_ALLOWED_ORIGINS
['https://weblate.lemuria.org']
OTP_WEBAUTHN_ALLOW_PASSWORDLESS_LOGIN
'********************'
OTP_WEBAUTHN_HELPER_CLASS
'weblate.accounts.utils.WeblateWebAuthnHelper'
OTP_WEBAUTHN_RP_ID
'weblate.lemuria.org'
OTP_WEBAUTHN_RP_NAME
'Weblate'
PAGURE_CREDENTIALS
{}
PASSWORD_HASHERS
'********************'
PASSWORD_RESET_TIMEOUT
'********************'
PREPEND_WWW
False
PRIVACY_URL
None
PRIVATE_COMMIT_EMAIL_OPT_IN
True
PRIVATE_COMMIT_EMAIL_TEMPLATE
'{username}@users.noreply.{site_domain}'
PROJECT_BACKUP_KEEP_COUNT
3
PROJECT_BACKUP_KEEP_DAYS
30
PROJECT_NAME_RESTRICT_RE
None
PROJECT_WEB_RESTRICT_HOST
{'localhost'}
PROJECT_WEB_RESTRICT_NUMERIC
True
PROJECT_WEB_RESTRICT_RE
None
RATELIMIT_ATTEMPTS
5
RATELIMIT_COMMENT_ATTEMPTS
30
RATELIMIT_COMMENT_WINDOW
60
RATELIMIT_GLOSSARY_ATTEMPTS
30
RATELIMIT_GLOSSARY_WINDOW
60
RATELIMIT_LANGUAGE_ATTEMPTS
2
RATELIMIT_LANGUAGE_LOCKOUT
600
RATELIMIT_LANGUAGE_WINDOW
300
RATELIMIT_LOCKOUT
600
RATELIMIT_MESSAGE_ATTEMPTS
2
RATELIMIT_PROJECT_ATTEMPTS
5
RATELIMIT_PROJECT_LOCKOUT
600
RATELIMIT_PROJECT_WINDOW
600
RATELIMIT_SEARCH_ATTEMPTS
30
RATELIMIT_SEARCH_LOCKOUT
60
RATELIMIT_SEARCH_WINDOW
60
RATELIMIT_TRANSLATE_ATTEMPTS
30
RATELIMIT_TRANSLATE_WINDOW
60
RATELIMIT_TRIAL_ATTEMPTS
1
RATELIMIT_TRIAL_LOCKOUT
600
RATELIMIT_TRIAL_WINDOW
60
RATELIMIT_WINDOW
300
REGISTRATION_ALLOW_BACKENDS
[]
REGISTRATION_CAPTCHA
True
REGISTRATION_EMAIL_MATCH
'.*'
REGISTRATION_HINTS
{}
REGISTRATION_OPEN
True
REGISTRATION_REBIND
False
REPOSITORY_ALERT_THRESHOLD
25
REQUIRE_LOGIN
False
REST_FRAMEWORK
{'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.TokenAuthentication',
                                    'weblate.api.authentication.BearerAuthentication',
                                    'rest_framework.authentication.SessionAuthentication'),
 'DEFAULT_PAGINATION_CLASS': 'weblate.api.pagination.StandardPagination',
 'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.IsAuthenticatedOrReadOnly'],
 'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
 'DEFAULT_THROTTLE_CLASSES': ('weblate.api.throttling.UserRateThrottle',
                              'weblate.api.throttling.AnonRateThrottle'),
 'DEFAULT_THROTTLE_RATES': {'anon': '100/day', 'user': '5000/hour'},
 'EXCEPTION_HANDLER': 'weblate.api.views.weblate_exception_handler',
 'PAGE_SIZE': 50,
 'UNAUTHENTICATED_USER': 'weblate.auth.models.get_anonymous',
 'VIEW_DESCRIPTION_FUNCTION': 'weblate.api.views.get_view_description'}
ROOT_URLCONF
'weblate.urls'
SECRET_KEY
'********************'
SECRET_KEY_FALLBACKS
'********************'
SECURE_BROWSER_XSS_FILTER
True
SECURE_CONTENT_TYPE_NOSNIFF
True
SECURE_CROSS_ORIGIN_OPENER_POLICY
'same-origin'
SECURE_HSTS_INCLUDE_SUBDOMAINS
True
SECURE_HSTS_PRELOAD
True
SECURE_HSTS_SECONDS
31536000
SECURE_PROXY_SSL_HEADER
None
SECURE_REDIRECT_EXEMPT
('healthz/$',)
SECURE_REFERRER_POLICY
'same-origin'
SECURE_SSL_HOST
'weblate.lemuria.org'
SECURE_SSL_REDIRECT
True
SENTRY_DSN
None
SENTRY_ENVIRONMENT
'weblate.lemuria.org'
SENTRY_EXTRA_ARGS
{}
SENTRY_PROFILES_SAMPLE_RATE
0
SENTRY_PROJECTS
['weblate']
SENTRY_RELEASES_API_URL
'********************'
SENTRY_SECURITY
None
SENTRY_SEND_PII
False
SENTRY_TOKEN
'********************'
SENTRY_TRACES_SAMPLE_RATE
0
SERVER_EMAIL
'noreply@lemuria.org'
SESSION_CACHE_ALIAS
'default'
SESSION_COOKIE_AGE
1000
SESSION_COOKIE_AGE_AUTHENTICATED
1209600
SESSION_COOKIE_DOMAIN
None
SESSION_COOKIE_HTTPONLY
True
SESSION_COOKIE_NAME
'sessionid'
SESSION_COOKIE_PATH
'/'
SESSION_COOKIE_SAMESITE
'Lax'
SESSION_COOKIE_SECURE
True
SESSION_ENGINE
'django.contrib.sessions.backends.cache'
SESSION_EXPIRE_AT_BROWSER_CLOSE
False
SESSION_FILE_PATH
None
SESSION_SAVE_EVERY_REQUEST
False
SESSION_SERIALIZER
'django.contrib.sessions.serializers.JSONSerializer'
SETTINGS_MODULE
'weblate.settings'
SHORT_DATETIME_FORMAT
'm/d/Y P'
SHORT_DATE_FORMAT
'm/d/Y'
SIGNING_BACKEND
'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS
['admin.E408', 'drf_spectacular.W001', 'drf_spectacular.W002']
SIMILAR_MESSAGES
5
SIMPLIFY_LANGUAGES
True
SINGLE_PROJECT
False
SITE_DOMAIN
'weblate.lemuria.org'
SITE_ID
1
SITE_TITLE
'Weblate'
SITE_URL
'https://weblate.lemuria.org'
SOCIAL_AUTH_AUTH0_IMAGE
'auth0.svg'
SOCIAL_AUTH_AUTH0_TITLE
'Auth0'
SOCIAL_AUTH_BITBUCKET_OAUTH2_KEY
'********************'
SOCIAL_AUTH_BITBUCKET_OAUTH2_SECRET
'********************'
SOCIAL_AUTH_BITBUCKET_OAUTH2_VERIFIED_EMAILS_ONLY
True
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')
SOCIAL_AUTH_EMAIL_FORM_URL
'/accounts/email/'
SOCIAL_AUTH_EMAIL_VALIDATION_FUNCTION
'weblate.accounts.pipeline.send_validation'
SOCIAL_AUTH_EMAIL_VALIDATION_URL
'/accounts/email-sent/'
SOCIAL_AUTH_FACEBOOK_KEY
'********************'
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS
{'fields': 'id,name,email'}
SOCIAL_AUTH_FACEBOOK_SCOPE
['email', 'public_profile']
SOCIAL_AUTH_FACEBOOK_SECRET
'********************'
SOCIAL_AUTH_GITHUB_ENTERPRISE_API_URL
'********************'
SOCIAL_AUTH_GITHUB_ENTERPRISE_KEY
'********************'
SOCIAL_AUTH_GITHUB_ENTERPRISE_SCOPE
''
SOCIAL_AUTH_GITHUB_ENTERPRISE_SECRET
'********************'
SOCIAL_AUTH_GITHUB_ENTERPRISE_URL
''
SOCIAL_AUTH_GITHUB_KEY
'********************'
SOCIAL_AUTH_GITHUB_ORG_KEY
'********************'
SOCIAL_AUTH_GITHUB_ORG_NAME
''
SOCIAL_AUTH_GITHUB_ORG_SECRET
'********************'
SOCIAL_AUTH_GITHUB_SCOPE
['user:email']
SOCIAL_AUTH_GITHUB_SECRET
'********************'
SOCIAL_AUTH_GITHUB_TEAM_ID
''
SOCIAL_AUTH_GITHUB_TEAM_KEY
'********************'
SOCIAL_AUTH_GITHUB_TEAM_SECRET
'********************'
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY
'********************'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET
'********************'
SOCIAL_AUTH_LOGIN_ERROR_URL
'/accounts/login/'
SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL
'/accounts/profile/#account'
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.second_factor',
 'weblate.accounts.pipeline.cleanup_next',
 '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_PROTECTED_USER_FIELDS
('email',)
SOCIAL_AUTH_RAISE_EXCEPTIONS
True
SOCIAL_AUTH_REDIRECT_IS_HTTPS
True
SOCIAL_AUTH_SAML_IMAGE
'saml.svg'
SOCIAL_AUTH_SAML_TITLE
'SAML'
SOCIAL_AUTH_SLUGIFY_FUNCTION
'weblate.accounts.pipeline.slugify_username'
SOCIAL_AUTH_SLUGIFY_USERNAMES
True
SOCIAL_AUTH_STRATEGY
'weblate.accounts.strategy.WeblateStrategy'
SPECIAL_CHARS
('\t', '\n', '\xa0', '…')
SPECTACULAR_SETTINGS
{'DESCRIPTION': '\n'
                'The API is accessible on the ``/api/`` URL and it is based on '
                '[Django REST '
                'framework](https://www.django-rest-framework.org/).\n'
                '\n'
                'The OpenAPI specification is available as feature preview, '
                'feedback welcome!\n'
                '    ',
 'ENUM_NAME_OVERRIDES': {'ColorEnum': 'weblate.utils.colors.ColorChoices.choices'},
 'EXTENSIONS_INFO': {'x-logo': {'url': '/static/weblate.svg'}},
 'LICENSE': {'name': 'GNU General Public License v3 or later',
             'url': 'https://docs.weblate.org/en/latest/contributing/license.html'},
 'POSTPROCESSING_HOOKS': ['drf_spectacular.hooks.postprocess_schema_enums',
                          'weblate.api.docs.add_middleware_headers'],
 'REDOC_DIST': 'SIDECAR',
 'REDOC_UI_SETTINGS': {'theme': {'logo': {'margin': 'auto',
                                          'maxHeight': '50vh',
                                          'maxWidth': '150px'},
                                 'typography': {'code': {'fontFamily': '"Source '
                                                                       'Code '
                                                                       'Pro", '
                                                                       'monospace'},
                                                'fontFamily': '"Source Sans '
                                                              '3", sans-serif',
                                                'headings': {'fontFamily': '"Source '
                                                                           'Sans '
                                                                           '3", '
                                                                           'sans-serif'}}}},
 'SERVERS': [{'description': 'Weblate', 'url': 'https://weblate.lemuria.org'}],
 'SERVE_URLCONF': 'weblate.api.urls',
 'TITLE': "Weblate's REST API",
 'VERSION': None}
SSH_EXTRA_ARGS
''
STATICFILES_DIRS
()
STATICFILES_FINDERS
('django.contrib.staticfiles.finders.FileSystemFinder',
 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
 'compressor.finders.CompressorFinder')
STATIC_ROOT
'/home/weblate/data/cache/static'
STATIC_URL
'/static/'
STATS_LAZY
False
STATUS_URL
None
STORAGES
{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},
 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage'}}
SUGGESTION_CLEANUP_DAYS
None
SUPPORT_API_URL
'********************'
SUPPORT_STATUS_CHECK
True
TEMPLATES
[{'APP_DIRS': True,
  'BACKEND': 'django.template.backends.django.DjangoTemplates',
  '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']}}]
TEST_NON_SERIALIZED_APPS
[]
TEST_RUNNER
'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR
','
TIME_FORMAT
'P'
TIME_INPUT_FORMATS
['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE
'UTC'
UNUSED_ALERT_DAYS
365
UPDATE_LANGUAGES
True
URL_PREFIX
''
USE_I18N
True
USE_THOUSAND_SEPARATOR
False
USE_TZ
True
USE_X_FORWARDED_HOST
False
USE_X_FORWARDED_PORT
False
VAT_RATE
1.21
VCS_API_DELAY
'********************'
VCS_BACKENDS
('weblate.vcs.git.GitRepository',
 'weblate.vcs.git.GitWithGerritRepository',
 'weblate.vcs.git.SubversionRepository',
 'weblate.vcs.git.GithubRepository',
 'weblate.vcs.git.AzureDevOpsRepository',
 'weblate.vcs.git.GiteaRepository',
 'weblate.vcs.git.GitLabRepository',
 'weblate.vcs.git.PagureRepository',
 'weblate.vcs.git.LocalRepository',
 'weblate.vcs.git.GitForcePushRepository',
 'weblate.vcs.git.BitbucketServerRepository',
 'weblate.vcs.git.BitbucketCloudRepository',
 'weblate.vcs.mercurial.HgRepository')
VCS_CLONE_DEPTH
1
VCS_FILE_PROTOCOL
False
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.cleanup.RemoveBlankAddon',
 'weblate.addons.consistency.LangaugeConsistencyAddon',
 'weblate.addons.discovery.DiscoveryAddon',
 'weblate.addons.autotranslate.AutoTranslateAddon',
 'weblate.addons.flags.SourceEditAddon',
 'weblate.addons.flags.TargetEditAddon',
 'weblate.addons.flags.SameEditAddon',
 'weblate.addons.flags.BulkEditAddon',
 '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',
 'weblate.addons.git.GitSquashAddon',
 'weblate.addons.removal.RemoveComments',
 'weblate.addons.removal.RemoveSuggestions',
 'weblate.addons.resx.ResxUpdateAddon',
 'weblate.addons.yaml.YAMLCustomizeAddon',
 'weblate.addons.cdn.CDNJSAddon')
WEBLATE_EXPORTERS
('weblate.formats.exporters.PoExporter',
 'weblate.formats.exporters.PoXliffExporter',
 'weblate.formats.exporters.XliffExporter',
 'weblate.formats.exporters.TBXExporter',
 'weblate.formats.exporters.TMXExporter',
 'weblate.formats.exporters.MoExporter',
 'weblate.formats.exporters.CSVExporter',
 'weblate.formats.exporters.XlsxExporter',
 'weblate.formats.exporters.JSONExporter',
 'weblate.formats.exporters.JSONNestedExporter',
 'weblate.formats.exporters.AndroidResourceExporter',
 'weblate.formats.exporters.StringsExporter')
WEBLATE_FORMATS
('weblate.formats.ttkit.PoFormat',
 'weblate.formats.ttkit.PoMonoFormat',
 'weblate.formats.ttkit.TSFormat',
 'weblate.formats.ttkit.XliffFormat',
 'weblate.formats.ttkit.RichXliffFormat',
 'weblate.formats.ttkit.PoXliffFormat',
 'weblate.formats.ttkit.StringsFormat',
 'weblate.formats.ttkit.StringsUtf8Format',
 'weblate.formats.ttkit.PropertiesUtf8Format',
 'weblate.formats.ttkit.PropertiesUtf16Format',
 'weblate.formats.ttkit.PropertiesFormat',
 'weblate.formats.ttkit.JoomlaFormat',
 'weblate.formats.ttkit.GWTFormat',
 'weblate.formats.ttkit.GWTISOFormat',
 'weblate.formats.ttkit.PhpFormat',
 'weblate.formats.ttkit.LaravelPhpFormat',
 'weblate.formats.ttkit.RESXFormat',
 'weblate.formats.ttkit.AndroidFormat',
 'weblate.formats.ttkit.MOKOFormat',
 'weblate.formats.ttkit.JSONFormat',
 'weblate.formats.ttkit.JSONNestedFormat',
 'weblate.formats.ttkit.WebExtensionJSONFormat',
 'weblate.formats.ttkit.I18NextFormat',
 'weblate.formats.ttkit.I18NextV4Format',
 'weblate.formats.ttkit.GoI18JSONFormat',
 'weblate.formats.ttkit.GoI18V2JSONFormat',
 'weblate.formats.ttkit.GoTextFormat',
 'weblate.formats.ttkit.ARBFormat',
 'weblate.formats.ttkit.FormatJSFormat',
 'weblate.formats.ttkit.CSVFormat',
 'weblate.formats.ttkit.CSVUtf8Format',
 'weblate.formats.ttkit.CSVSimpleFormat',
 'weblate.formats.ttkit.CSVUtf8SimpleFormat',
 'weblate.formats.ttkit.CSVSimpleFormatISO',
 'weblate.formats.ttkit.YAMLFormat',
 'weblate.formats.ttkit.RubyYAMLFormat',
 'weblate.formats.ttkit.SubRipFormat',
 'weblate.formats.ttkit.MicroDVDFormat',
 'weblate.formats.ttkit.AdvSubStationAlphaFormat',
 'weblate.formats.ttkit.SubStationAlphaFormat',
 'weblate.formats.ttkit.DTDFormat',
 'weblate.formats.ttkit.FlatXMLFormat',
 'weblate.formats.ttkit.ResourceDictionaryFormat',
 'weblate.formats.ttkit.INIFormat',
 'weblate.formats.ttkit.InnoSetupINIFormat',
 'weblate.formats.ttkit.PropertiesMi18nFormat',
 'weblate.formats.external.XlsxFormat',
 'weblate.formats.txt.AppStoreFormat',
 'weblate.formats.convert.HTMLFormat',
 'weblate.formats.convert.IDMLFormat',
 'weblate.formats.convert.OpenDocumentFormat',
 'weblate.formats.convert.PlainTextFormat',
 'weblate.formats.convert.DokuWikiFormat',
 'weblate.formats.convert.MarkdownFormat',
 'weblate.formats.convert.MediaWikiFormat',
 'weblate.formats.convert.WindowsRCFormat',
 'weblate.formats.ttkit.XWikiPropertiesFormat',
 'weblate.formats.ttkit.XWikiPagePropertiesFormat',
 'weblate.formats.ttkit.XWikiFullPageFormat',
 'weblate.formats.ttkit.TBXFormat',
 'weblate.formats.ttkit.StringsdictFormat',
 'weblate.formats.ttkit.FluentFormat',
 'weblate.formats.multi.MultiCSVUtf8Format')
WEBLATE_GPG_ALGO
'default'
WEBLATE_GPG_IDENTITY
None
WEBLATE_MACHINERY
('weblate.machinery.apertium.ApertiumAPYTranslation',
 'weblate.machinery.aws.AWSTranslation',
 'weblate.machinery.alibaba.AlibabaTranslation',
 '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.modernmt.ModernMTTranslation',
 'weblate.machinery.mymemory.MyMemoryTranslation',
 'weblate.machinery.netease.NeteaseSightTranslation',
 'weblate.machinery.tmserver.TMServerTranslation',
 'weblate.machinery.yandex.YandexTranslation',
 'weblate.machinery.yandexv2.YandexV2Translation',
 'weblate.machinery.saptranslationhub.SAPTranslationHub',
 'weblate.machinery.youdao.YoudaoTranslation',
 'weblate.machinery.ibm.IBMTranslation',
 'weblate.machinery.systran.SystranTranslation',
 'weblate.machinery.openai.OpenAITranslation',
 'weblate.machinery.openai.AzureOpenAITranslation',
 'weblate.machinery.weblatetm.WeblateTranslation',
 'weblate.memory.machine.WeblateMemory',
 'weblate.machinery.cyrtranslit.CyrTranslitTranslation')
WEBSITE_REQUIRED
True
WSGI_APPLICATION
None
X_FRAME_OPTIONS
'DENY'
YEAR_MONTH_FORMAT
'F Y'

How do you run Weblate?

Git checkout

Weblate versions

Weblate deploy checks

System check identified some issues:

WARNINGS:
?: (weblate.W033.Gerrit) Failure in loading VCS module for Gerrit: git: 'review' is not a git command. See 'git --help'.
 (1)
    HINT: https://docs.weblate.org/en/weblate-5.8.1/vcs.html
?: (weblate.W033.Mercurial) Failure in loading VCS module for Mercurial: [Errno 2] No such file or directory: 'hg'
    HINT: https://docs.weblate.org/en/weblate-5.8.1/vcs.html
?: (weblate.W033.Subversion) Failure in loading VCS module for Subversion: git: 'svn' is not a git command. See 'git --help'.

The most similar commands are
    fsck
    mv
    show
 (1)
    HINT: https://docs.weblate.org/en/weblate-5.8.1/vcs.html
?: (weblate.W039.AlibabaTranslation) Error importing module 'weblate.machinery.alibaba' in WEBLATE_MACHINERY: No module named 'aliyunsdkalimt'
    HINT: https://docs.weblate.org/en/weblate-5.8.1/admin/machine.html
?: (weblate.W039.GoogleV3Translation) Error importing module 'weblate.machinery.googlev3' in WEBLATE_MACHINERY: No module named 'google'
    HINT: https://docs.weblate.org/en/weblate-5.8.1/admin/machine.html

INFOS:
?: (weblate.I021) Error collection is not set up, it is highly recommended for production use
    HINT: https://docs.weblate.org/en/weblate-5.8.1/admin/install.html#collecting-errors
?: (weblate.I031) New Weblate version is available, please upgrade to 5.8.3.
    HINT: https://docs.weblate.org/en/weblate-5.8.1/admin/upgrade.html

Additional context

No response

nijel commented 10 hours ago

Did you disable that check in the configuration? How is it displayed in the UI?