# encoding:utf-8
-# Django settings for lanai project.
import os.path
import sys
ADMIN_MEDIA_PREFIX = '/admin_media/'
SECRET_KEY = '$oo^&_m&qwbib=(_4m_n*zn-d=g#s0he5fx9xonnym#8p6yigm'
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
+
+TEMPLATE_LOADERS = [
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
- 'forum.modules.module_templates_loader',
+ 'forum.modules.template_loader.module_templates_loader',
'forum.skins.load_template_source',
-# 'django.template.loaders.eggs.load_template_source',
-)
+]
MIDDLEWARE_CLASSES = [
- #'django.middleware.gzip.GZipMiddleware',
+ 'forum.middleware.django_cookies.CookiePreHandlerMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
- #'django.middleware.locale.LocaleMiddleware',
- #'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
- #'django.middleware.cache.FetchFromCacheMiddleware',
'forum.middleware.extended_user.ExtendedUser',
- #'django.middleware.sqlprint.SqlPrintingMiddleware',
'forum.middleware.anon_user.ConnectToSessionMessagesMiddleware',
'forum.middleware.request_utils.RequestUtils',
'forum.middleware.cancel.CancelActionMiddleware',
- #'recaptcha_django.middleware.ReCaptchaMiddleware',
+ 'forum.middleware.admin_messages.AdminMessagesMiddleware',
'django.middleware.transaction.TransactionMiddleware',
+ 'forum.middleware.django_cookies.CookiePostHandlerMiddleware',
]
-
-TEMPLATE_CONTEXT_PROCESSORS = (
+# Backwards compatibility. If we fail to import the CSRF middle-ware from the location
+# where it is supposed to be, we add the old middle-ware classes to the classes list.
+try:
+ from django.middleware.csrf import CsrfViewMiddleware
+ MIDDLEWARE_CLASSES = [
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.middleware.csrf.CsrfResponseMiddleware',
+ ] + MIDDLEWARE_CLASSES
+except ImportError:
+ MIDDLEWARE_CLASSES = [
+ 'django.contrib.csrf.middleware.CsrfViewMiddleware',
+ 'django.contrib.csrf.middleware.CsrfResponseMiddleware',
+ ] + MIDDLEWARE_CLASSES
+
+TEMPLATE_CONTEXT_PROCESSORS = [
'django.core.context_processors.request',
'forum.context.application_settings',
- #'django.core.context_processors.i18n',
- 'forum.user_messages.context_processors.user_messages',#must be before auth
- 'django.core.context_processors.auth', #this is required for admin
-)
+ 'forum.user_messages.context_processors.user_messages',
+ 'django.core.context_processors.auth',
+]
ROOT_URLCONF = 'urls'
+APPEND_SLASH = True
TEMPLATE_DIRS = (
os.path.join(os.path.dirname(__file__),'forum','skins').replace('\\','/'),
)
-#UPLOAD SETTINGS
+
FILE_UPLOAD_TEMP_DIR = os.path.join(os.path.dirname(__file__), 'tmp').replace('\\','/')
FILE_UPLOAD_HANDLERS = ("django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler",)
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
-# for user upload
+
ALLOW_FILE_TYPES = ('.jpg', '.jpeg', '.gif', '.bmp', '.png', '.tiff')
-# unit byte
ALLOW_MAX_FILE_SIZE = 1024 * 1024
+# User settings
+from settings_local import *
+try:
+ if len(FORUM_SCRIPT_ALIAS) > 0:
+ APP_URL = '%s/%s' % (APP_URL, FORUM_SCRIPT_ALIAS[:-1])
+except NameError:
+ pass
-def check_local_setting(name, value):
- local_vars = locals()
- if name in local_vars and local_vars[name] == value:
- return True
- else:
- return False
-
-SITE_SRC_ROOT = os.path.dirname(__file__)
-LOG_FILENAME = 'django.osqa.log'
-
-#for logging
-import logging
-logging.basicConfig(
- filename=os.path.join(SITE_SRC_ROOT, 'log', LOG_FILENAME),
- level=logging.ERROR,
- format='%(pathname)s TIME: %(asctime)s MSG: %(filename)s:%(funcName)s:%(lineno)d %(message)s',
-)
-
-#ADMINS and MANAGERS
-ADMINS = (('Forum Admin', 'forum@example.com'),)
-MANAGERS = ADMINS
-
-DEBUG = True
-DEBUG_TOOLBAR_CONFIG = {
- 'INTERCEPT_REDIRECTS': True
-}
-TEMPLATE_DEBUG = DEBUG
-INTERNAL_IPS = ('127.0.0.1',)
-
-if True:
-
- DATABASE_NAME = 'meta_rep' # Or path to database file if using sqlite3.
- DATABASE_USER = 'postgres' # Not used with sqlite3.
- DATABASE_PASSWORD = 'postgres' # Not used with sqlite3.
- DATABASE_ENGINE = 'postgresql_psycopg2' #mysql, etc
- DATABASE_HOST = 'localhost'
- DATABASE_PORT = ''
-else:
- DATABASE_NAME = 'd:/stuff/sxtest.db'#'sxtest2rep' # Or path to database file if using sqlite3.
- DATABASE_USER = '' # Not used with sqlite3.
- DATABASE_PASSWORD = '' # Not used with sqlite3.
- DATABASE_ENGINE = 'sqlite3' #mysql, etc
- DATABASE_HOST = ''
- DATABASE_PORT = ''
-
-#CACHE_BACKEND = 'file://%s' % os.path.join(os.path.dirname(__file__),'cache').replace('\\','/')
-#CACHE_BACKEND = 'dummy://'
-CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
-SESSION_ENGINE = 'django.contrib.sessions.backends.db'
-
-APP_URL = 'http://' #used by email notif system and RSS
+app_url_split = APP_URL.split("://")
-#LOCALIZATIONS
-TIME_ZONE = 'America/New_York'
+APP_PROTOCOL = app_url_split[0]
+APP_DOMAIN = app_url_split[1].split('/')[0]
+APP_BASE_URL = '%s://%s' % (APP_PROTOCOL, APP_DOMAIN)
-###########################
-#
-# this will allow running your forum with url like http://site.com/forum
-#
-# FORUM_SCRIPT_ALIAS = 'forum/'
-#
-FORUM_SCRIPT_ALIAS = '' #no leading slash, default = '' empty string
+FORCE_SCRIPT_NAME = ''
+for path in app_url_split[1].split('/')[1:]:
+ FORCE_SCRIPT_NAME = FORCE_SCRIPT_NAME + '/' + path
-#OTHER SETTINGS
+if FORCE_SCRIPT_NAME.endswith('/'):
+ FORCE_SCRIPT_NAME = FORCE_SCRIPT_NAME[:-1]
-USE_I18N = False
-LANGUAGE_CODE = 'en'
+#Module system initialization
+MODULES_PACKAGE = 'forum_modules'
+MODULES_FOLDER = os.path.join(SITE_SRC_ROOT, MODULES_PACKAGE)
-EMAIL_VALIDATION = 'off' #string - on|off
+MODULE_LIST = filter(lambda m: getattr(m, 'CAN_USE', True), [
+ __import__('forum_modules.%s' % f, globals(), locals(), ['forum_modules'])
+ for f in os.listdir(MODULES_FOLDER)
+ if os.path.isdir(os.path.join(MODULES_FOLDER, f)) and
+ os.path.exists(os.path.join(MODULES_FOLDER, "%s/__init__.py" % f)) and
+ not f in DISABLED_MODULES
+])
-DJANGO_VERSION = 1.1
-RESOURCE_REVISION=4
-OSQA_DEFAULT_SKIN = 'default'
+[MIDDLEWARE_CLASSES.extend(
+ ["%s.%s" % (m.__name__, mc) for mc in getattr(m, 'MIDDLEWARE_CLASSES', [])]
+ ) for m in MODULE_LIST]
-DISABLED_MODULES = ['books', 'recaptcha', 'project_badges']
+[TEMPLATE_LOADERS.extend(
+ ["%s.%s" % (m.__name__, tl) for tl in getattr(m, 'TEMPLATE_LOADERS', [])]
+ ) for m in MODULE_LIST]
INSTALLED_APPS = [
pass
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend',]
-
-
-