diff options
Diffstat (limited to 'src/pootle_it/settings.py')
-rw-r--r-- | src/pootle_it/settings.py | 262 |
1 files changed, 262 insertions, 0 deletions
diff --git a/src/pootle_it/settings.py b/src/pootle_it/settings.py new file mode 100644 index 0000000..6fe36df --- /dev/null +++ b/src/pootle_it/settings.py @@ -0,0 +1,262 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2008-2009 Zuza Software Foundation +# +# This file is part of Pootle. +# +# 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 2 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 <http://www.gnu.org/licenses/>. + +"""This is a standard module defining some Django settings, as well as some +settings specific to Pootle. + +Note that some of this can also be specified in localsettings.py in order to have a +configuration override outside of the code.""" + +import logging +import os + +from pootle.install_dirs import * + +INTERNAL_IPS = ('127.0.0.1',) +ADMINS = ( + # ('Your Name', 'your_email@domain.com'), +) + +MANAGERS = ADMINS + +# dummy translate function so we can extract text +_ = lambda x: x + +TITLE = _("Pootle Demo") + +#l10n: Change the language code (en) to your language code, and replace ltr with rtl if you language is written from right to left. +DESCRIPTION = _("""<div dir="ltr" lang="en"> +<h2 class="title">This is a demo installation of Pootle.</h2> +<p class="about">You can also visit the official <a class="external" href="http://pootle.locamotion.org">Pootle server</a>. The server administrator has not provided contact information or a description of this server. If you are the administrator for this server, edit this description in your preference file or in the administration interface.</p> +</div>""") + +# 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. +# If running in a Windows environment this must be set to the same as your +# system time zone. +TIME_ZONE = 'Africa/Johannesburg' + +# Language code for this installation. All choices can be found here: +# http://www.i18nguy.com/unicode/language-identifiers.html +LANGUAGE_CODE = 'en-us' + +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 + +# Absolute path to the directory that holds media. +# Example: "/home/media/media.lawrence.com/" +MEDIA_ROOT = data_path('html')+'/' +# URL that handles the media served from MEDIA_ROOT. Make sure to use a +# trailing slash if there is a path component (optional in other cases). +# Examples: "http://media.lawrence.com", "http://example.com/media/" +MEDIA_URL = '/html/' + +# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a +# trailing slash. +# Examples: "http://foo.com/media/", "/media/". +ADMIN_MEDIA_PREFIX = '/media/' + +# Make this unique, and don't share it with anybody. +# TODO: We should find a way to reset this for new installations. +SECRET_KEY = '^&4$dlpce2_pnronsi289xd7-9ke10q_%wa@9srm@zaa!ig@1k' + +# List of callables that know how to import templates from various sources. +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.load_template_source', + 'django.template.loaders.app_directories.load_template_source', +# 'django.template.loaders.eggs.load_template_source', +) + +MIDDLEWARE_CLASSES = ( + 'pootle_misc.middleware.baseurl.BaseUrlMiddleware', # resolves paths + 'django.middleware.transaction.TransactionMiddleware', # needs to be before anything that writes to the db + 'pootle_misc.middleware.siteconfig.SiteConfigMiddleware', # must be early to detect the need to install or update schema, but must precede the cache middleware + 'django.middleware.cache.UpdateCacheMiddleware', # must be as high as possible (see above) + 'django.middleware.http.ConditionalGetMiddleware', # support for e-tag + 'django.middleware.gzip.GZipMiddleware', # compress responses + 'django.contrib.csrf.middleware.CsrfMiddleware', # protection against cross-site request forgery + 'django.contrib.sessions.middleware.SessionMiddleware', # must be before authentication + 'django.contrib.auth.middleware.AuthenticationMiddleware', # must be before anything user-related + 'django.middleware.locale.LocaleMiddleware', # user-related + 'pootle.middleware.setlocale.SetLocale', # sets Python's locale based on request's locale for sorting, etc. + 'pootle_misc.middleware.errorpages.ErrorPagesMiddleware', # nice 500 and 403 pages (must be after locale to have translated versions) + 'django.middleware.common.CommonMiddleware', + #'pootle.middleware.check_cookies.CheckCookieMiddleware', + 'pootle.middleware.captcha.CaptchaMiddleware', # must be early in the response cycle (close to bottom) + #'pootle.middleware.profile.ProfilerMiddleware', + 'django.middleware.cache.FetchFromCacheMiddleware' # must be last in the request cycle (at the bottom) +) + +CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True + +ROOT_URLCONF = 'pootle.urls' + +TEMPLATE_CONTEXT_PROCESSORS = ("django.core.context_processors.auth", + "django.core.context_processors.i18n", + "django.core.context_processors.media", + "django.core.context_processors.request", + "pootle_misc.context_processors.pootle_context") + +TEMPLATE_DIRS = ( + # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". + # Always use forward slashes, even on Windows. + # Don't forget to use absolute paths, not relative paths. + data_path('templates'), +) + +INSTALLED_APPS = ( + 'django.contrib.sessions', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sites', + 'django.contrib.admin', + 'pootle_app', + 'pootle_misc', + 'pootle_store', + 'pootle_language', + 'pootle_project', + 'pootle_translationproject', + 'pootle_profile', + 'pootle_statistics', + 'pootle_notifications', + 'pootle_autonotices', + 'pootle_terminology', + 'registration', + 'profiles', + 'djblets.siteconfig', + 'djblets.util', + 'contact_form_i18n', +) + +AUTH_PROFILE_MODULE = "pootle_profile.PootleProfile" + +ENABLE_ALT_SRC = True + +# number of rows in top contributors table +TOPSTAT_SIZE = 5 + +# django-registration configs +ACCOUNT_ACTIVATION_DAYS = 10 + +# keep stats cache for roughly a month +OBJECT_CACHE_TIMEOUT = 2500000 + +# terminology config +MIN_AUTOTERMS = 60 +MAX_AUTOTERMS = 600 + +# defaults for localsettings vars +CONTACT_EMAIL = None +USE_CAPTCHA = False +AUTOSYNC = False +MT_BACKENDS = () +CAN_CONTACT = True + +# By default Pootle sends only text emails. If your organization would +# prefer to send mixed HTML/TEXT emails, set this to True, and update +# activation_email.txt and activation_email.html in the templates/registration/ +# directory. +# NOTE: Password reset emails will still be sent in plain text. This is a limitation +# of the underlying system. +EMAIL_SEND_HTML = False + +execfile(os.path.join("src", "pootle_it", "localsettings.py")) + +if CONTACT_EMAIL: + MANAGERS += (('CONTACT', CONTACT_EMAIL),) + +if LIVE_TRANSLATION: + # Look for localization files under PODIRECTORY/pootle + LOCALE_PATHS = (os.path.join(PODIRECTORY, "pootle"), ) +else: + # look for localization files under mo directory + LOCALE_PATHS = (data_path("mo"), ) + +from pootle.i18n import override, gettext_live, gettext +from django.utils import translation +from django.utils.translation import trans_real + +LANGUAGES = override.find_languages(LOCALE_PATHS[0]) + +def hijack_translation(): + """sabotage django's fascist linguistical regime""" + # override functions that check if language if language is + # known to Django + translation.check_for_language = lambda lang_code: True + trans_real.check_for_language = lambda lang_code: True + translation.get_language_from_request = override.get_language_from_request + + # override django's inadequate bidi detection + translation.get_language_bidi = override.get_language_bidi + + if LIVE_TRANSLATION: + trans_real.translation = override.translation_dummy + override.override_gettext(gettext_live) + else: + # even when live translation is not enabled we hijack + # gettext functions to install the safe variable + # formatting override + override.override_gettext(gettext) + +hijack_translation() + + +# setup a tempdir inside the PODIRECTORY heirarchy, this way we have +# reasonable guarantee that temp files will be created on the same +# filesystem as translation files (required for save operations). +import tempfile +tempfile.tempdir = os.path.join(PODIRECTORY, ".tmp") +# ensure that temp dir exists +if not os.path.exists(tempfile.tempdir): + os.mkdir(tempfile.tempdir) + +TEMPLATE_DEBUG = DEBUG +if TEMPLATE_DEBUG: + TEMPLATE_CONTEXT_PROCESSORS += ("django.core.context_processors.debug",) + +if DEBUG: + logging.basicConfig( + level=logging.DEBUG, + format='%(asctime)s %(levelname)s %(message)s', + ) +else: + # Will log only CRITICAL errors to the console + logging.basicConfig( + level=logging.INFO, + format='%(asctime)s %(levelname)s %(message)s', + ) + + +# cache template loading to reduce IO strain +if not DEBUG: + template_cache = {} + def cache_templates(f): + def decorated_f(template_name): + if template_name not in template_cache: + template_cache[template_name] = f(template_name) + return template_cache[template_name] + return decorated_f + + from django.template import loader + loader.get_template = cache_templates(loader.get_template) |