testapp/settings.py (144 lines of code) (raw):
"""
Django settings for temp project.
For more information on this file, see
https://docs.djangoproject.com/en/stable/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/stable/ref/settings/
"""
import os
import typing
import dj_database_url
if typing.TYPE_CHECKING:
from wagtail_localize_smartling.models import Job
# Build paths inside the project like this: os.path.join(PROJECT_DIR, ...)
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/stable/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = "not-a-secure-key" # noqa: S105
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = ["localhost", "testserver"]
# Application definition
INSTALLED_APPS = [
"testapp",
"wagtail.contrib.search_promotions",
"wagtail_localize_smartling",
"wagtail_localize",
"wagtail_localize.locales",
"wagtail.contrib.forms",
"wagtail.contrib.redirects",
"wagtail.embeds",
"wagtail.users",
"wagtail.snippets",
"wagtail.documents",
"wagtail.images",
"wagtail.search",
"wagtail.admin",
"wagtail.api.v2",
"wagtail.contrib.routable_page",
"wagtail.contrib.styleguide",
"wagtail.sites",
"wagtail",
"taggit",
"rest_framework",
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"django.contrib.sitemaps",
]
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
"django.middleware.locale.LocaleMiddleware",
"wagtail.contrib.redirects.middleware.RedirectMiddleware",
]
ROOT_URLCONF = "testapp.urls"
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
]
},
}
]
# Using DatabaseCache to make sure that the cache is cleared between tests.
# This prevents false-positives in some wagtail core tests where we are
# changing the 'wagtail_root_paths' key which may cause future tests to fail.
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.db.DatabaseCache",
"LOCATION": "cache",
}
}
# don't use the intentionally slow default password hasher
PASSWORD_HASHERS = ("django.contrib.auth.hashers.MD5PasswordHasher",)
# Database
# https://docs.djangoproject.com/en/stable/ref/settings/#databases
DATABASES = {
"default": dj_database_url.config(
default="sqlite:///wagtail_localize_smartling.db"
),
}
# Password validation
# https://docs.djangoproject.com/en/stable/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator" # noqa: E501
},
{"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator"},
{"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"},
{"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator"},
]
# Internationalization
# https://docs.djangoproject.com/en/stable/topics/i18n/
USE_I18N = True
USE_L10N = True
LANGUAGE_CODE = "en-us"
WAGTAIL_I18N_ENABLED = True
WAGTAIL_CONTENT_LANGUAGES = [
("en", "English"),
("fr", "French"),
("de", "German"),
]
USE_TZ = True
TIME_ZONE = "UTC"
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/stable/howto/static-files/
STATICFILES_FINDERS = [
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
]
STATIC_ROOT = os.path.join(PROJECT_DIR, "test-static")
STATIC_URL = "/static/"
MEDIA_ROOT = os.path.join(PROJECT_DIR, "test-media")
# Wagtail settings
WAGTAIL_SITE_NAME = "Wagtail Localize Smartling test site"
WAGTAILADMIN_BASE_URL = "http://localhost:8000/"
# Logging
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"handlers": {
# Send logs with at least INFO level to the console.
"console": {
"level": "DEBUG",
"class": "logging.StreamHandler",
"formatter": "verbose",
},
},
"formatters": {
"verbose": {
"format": "[%(asctime)s][%(process)d][%(levelname)s][%(name)s] %(message)s"
}
},
"loggers": {
"wagtail_localize_smartling": {
"handlers": ["console"],
"level": "DEBUG",
"propagate": False,
},
},
}
# Smartling settings
WAGTAIL_LOCALIZE_SMARTLING = {
"PROJECT_ID": os.getenv("SMARTLING_PROJECT_ID", "test-project-id"),
"USER_IDENTIFIER": os.getenv("SMARTLING_USER_IDENTIFIER", "test-user-identifier"),
"USER_SECRET": os.getenv("SMARTLING_USER_SECRET", "test-user-secret"),
"REQUIRED": os.getenv("SMARTLING_REQUIRED", "false").lower() == "true",
}
def map_project_locale_to_smartling(locale: str) -> str:
if locale == "fr":
return "fr-FR"
return locale
def job_description_callback(description: str, translation_source, translations) -> str:
return "1337"
def visual_context_callback(job: "Job") -> tuple[str, str]:
return "https://example.com/path/to/page/", "<html><body>test</body></html>"