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>"