Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 411 lines (324 sloc) 11.081 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410
# Django settings file for a project based on the playdoh template.

import os
import logging

from django.utils.functional import lazy

# Make file paths relative to settings.
ROOT = os.path.dirname(os.path.abspath(__file__))
path = lambda *a: os.path.join(ROOT, *a)

ROOT_PACKAGE = os.path.basename(ROOT)


DEBUG = False
TEMPLATE_DEBUG = DEBUG

ADMINS = ()
MANAGERS = ADMINS

DATABASES = {} # See settings_local.

# Site ID is used by Django's Sites framework.
SITE_ID = 1

## Logging
LOG_LEVEL = logging.DEBUG
HAS_SYSLOG = False
SYSLOG_TAG = "http_app_playdoh" # Change this after you fork.
LOGGING_CONFIG = None
LOGGING = {
    }

# CEF Logging
CEF_PRODUCT = 'Playdoh'
CEF_VENDOR = 'Mozilla'
CEF_VERSION = '0'
CEF_DEVICE_VERSION = '0'


#Bleach settings
TAGS = ('h1', 'h2', 'a', 'b', 'em', 'i', 'strong',
        'ol', 'ul', 'li', 'blockquote', 'p',
        'span', 'pre', 'code', 'img')

ALLOWED_ATTRIBUTES = {
    'a': ['href', 'title'],
    'img': ['src', 'alt', 'title'],
}

APP_NAME = 'Mozilla Ignite'
APP_URL = 'http://www.mozillaignite.org'

## Internationalization.

# 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.
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'America/Los_Angeles'

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale
USE_L10N = True

# Gettext text domain
TEXT_DOMAIN = 'messages'

# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-US'

# Accepted locales
KNOWN_LANGUAGES = ('en-US',)

# List of RTL locales known to this project. Subset of LANGUAGES.
RTL_LANGUAGES = () # ('ar', 'fa', 'fa-IR', 'he')

LANGUAGE_URL_MAP = dict([(i.lower(), i) for i in KNOWN_LANGUAGES])

# Override Django's built-in with our native names
class LazyLangs(dict):
    def __new__(self):
        from product_details import product_details
        return dict([(lang.lower(), product_details.languages[lang]['native'])
                     for lang in KNOWN_LANGUAGES])

# Where to store product details etc.
PROD_DETAILS_DIR = path('lib/product_details_json')

LANGUAGES = lazy(LazyLangs, dict)()

# Paths that don't require a locale code in the URL.
SUPPORTED_NONLOCALES = ['media', 'push']


## Media and templates.

# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = path('media/ignite')

# 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 = '/media/ignite/'

# 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 = '/admin-media/'

# Make this unique, and don't share it with anybody.
SECRET_KEY = ''

# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.media',
    'django.core.context_processors.request',
    'session_csrf.context_processor',
    'django.contrib.messages.context_processors.messages',

    'commons.context_processors.i18n',
    'jingo_minify.helpers.build_ids',

    'topics.context_processors.topics',
    'django.core.context_processors.request',
    'innovate.context_processors.app_name',
    'ignite.context_processors.site_url'
)

TEMPLATE_DIRS = (
    path('templates'),
)

def JINJA_CONFIG():
    import jinja2
    from django.conf import settings
# from caching.base import cache
    config = {'extensions': ['tower.template.i18n', 'jinja2.ext.do',
                             'jinja2.ext.with_', 'jinja2.ext.loopcontrols'],
              'finalize': lambda x: x if x is not None else ''}
# if 'memcached' in cache.scheme and not settings.DEBUG:
        # We're passing the _cache object directly to jinja because
        # Django can't store binary directly; it enforces unicode on it.
        # Details: http://jinja.pocoo.org/2/documentation/api#bytecode-cache
        # and in the errors you get when you try it the other way.
# bc = jinja2.MemcachedBytecodeCache(cache._cache,
# "%sj2:" % settings.CACHE_PREFIX)
# config['cache_size'] = -1 # Never clear the cache
# config['bytecode_cache'] = bc
    return config

# Bundles is a dictionary of two dictionaries, css and js, which list css files
# and js files that can be bundled together by the minify app.
MINIFY_BUNDLES = {
    'css': {
        'ignite_devices' : (
            'css/normalise.css',
            'css/devices.css',
        ),
        'ignite_desktop' : (
            'css/desktop.css',
        ),
    },
    'js': {
        'ignite_core': (
            'js/common/ext/jquery-1.6.1.min.js',
            'js/common/ext/LAB.min.js',
            'js/common/core.js',
            'js/common/lacky.js',
        ),
    }
}

## Middlewares, apps, URL configs.

MIDDLEWARE_CLASSES = (
    'commons.middleware.LocaleURLMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'session_csrf.CsrfMiddleware',
    'commonware.middleware.FrameOptionsHeader',
    'ignite.middleware.ProfileMiddleware',
    'waffle.middleware.WaffleMiddleware',
)

ROOT_URLCONF = '%s.urls' % ROOT_PACKAGE

INSTALLED_APPS = (
    # Local apps
    'commons', # Content common to most playdoh-based apps.
    'jingo_minify',
    'tower', # for ./manage.py extract (L10n)
    'cronjobs', # for ./manage.py cron * cmd line tasks

    # We need this so the jsi18n view will pick up our locale directory.
    ROOT_PACKAGE,

    # Third-party apps
    'commonware.response.cookies',
    #'djcelery',
    'django_nose',
    'django_extensions',

    # Django contrib apps
    'django.contrib.admin',
    'django.contrib.auth',
    'django_sha2', # Load after auth to monkey-patch it.

    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',

    # L10n
    'product_details',

    # Database migrations
    'south',

    # BrowserID support
    'django_browserid',

    # Tagging
    'taggit',

    # Feed subscription
    'django_push.subscriber',
    'feeds',
    # email queue
    #'django_mailer',

    # Feature flipping
    'waffle',
    'haystack', # search

    # Ignite specific
    'innovate',
    'users',
    'topics',
    'projects',
    'events',
    'activity',
    'challenges',
    'ignite',
    'voting',
    'timeslot',
    'webcast',
    'ignite_resources',
    'badges',
    'awards',
    'blogs',
    'search',
)

# Tells the extract script what files to look for L10n in and what function
# handles the extraction. The Tower library expects this.
DOMAIN_METHODS = {
    'messages': [
        ('apps/**.py',
            'tower.management.commands.extract.extract_tower_python'),
        ('**/templates/**.html',
            'tower.management.commands.extract.extract_tower_template'),
    ],

    ## Use this if you have localizable HTML files:
    #'lhtml': [
    # ('**/templates/**.lhtml',
    # 'tower.management.commands.extract.extract_tower_template'),
    #],

    ## Use this if you have localizable JS files:
    #'javascript': [
        # Make sure that this won't pull in strings from external libraries you
        # may use.
    # ('media/js/**.js', 'javascript'),
    #],
}

# Path to Java. Used for compress_assets.
JAVA_BIN = '/usr/bin/java'

## Auth
PWD_ALGORITHM = 'bcrypt'
HMAC_KEYS = {
    #'2011-01-01': 'cheesecake',
}

## Tests
TEST_RUNNER = 'test_utils.runner.RadicalTestSuiteRunner'

## Celery
CELERY_RESULT_BACKEND = 'amqp'
CELERY_IGNORE_RESULT = True

MAX_FILEPATH_LENGTH = 250

# a list of passwords that meet policy requirements, but are considered
# too common and therefore easily guessed.
PASSWORD_BLACKLIST = (
    'trustno1',
    'access14',
    'rush2112',
    'p@$$w0rd',
    'abcd1234',
    'qwerty123',
)

AUTH_PROFILE_MODULE = 'users.Profile'

# Email goes to the console by default. s/console/smtp/ for regular delivery
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# EMAIL_BACKEND = 'django_mailer.smtp_queue.EmailBackend'
DEFAULT_FROM_EMAIL = 'Innovate Mozilla <innovate@mozilla.org>'
SERVER_EMAIL = 'Innovate Mozilla <innovate@mozilla.org>'

AUTHENTICATION_BACKENDS = (
    'django_browserid.auth.BrowserIDBackend',
    'django.contrib.auth.backends.ModelBackend',
    'challenges.auth.SubmissionBackend'
)

BROWSERID_VERIFICATION_URL = 'https://browserid.org/verify'
BROWSERID_CREATE_USER = True
BROWSERID_DISABLE_CERT_CHECK = True
LOGIN_REDIRECT_URL = '/'
LOGIN_REDIRECT_URL_FAILURE = '/'

PUSH_DEFAULT_HUB = 'http://superfeedr.com/hubbub'
PUSH_DEFAULT_HUB_USERNAME = ''
PUSH_DEFAULT_HUB_PASSWORD = ''
PUSH_CREDENTIALS = 'projects.utils.push_hub_credentials'

SOUTH_TESTS_MIGRATE = False

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

# Don't cache count queries at all, because there's no way to invalidate them
CACHE_COUNT_TIMEOUT = None

GRAVATAR_URL = 'https://secure.gravatar.com/avatar/'

SITE_FEED_URLS = {
    'splash': 'https://blog.mozillaignite.org/feed/',
}

JUDGES_PER_SUBMISSION = 2

# Switch for the development phase
DEVELOPMENT_PHASE = False


# TimeSlot Booking
# Time to expire the booking if not confirmed
BOOKING_EXPIRATION = 5 * 60 # 5 minutes
# Determines if the user throttling will be enabled
BOOKING_THROTTLING = False
# Email preferences
BOOKING_SEND_EMAILS = True

# Paginator
PAGINATOR_SIZE = 25

MIDDLEWARE_URL_EXCEPTIONS = [
    '/__debug__/',
    '/admin/',
    MEDIA_URL,
    ]

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'haystack',
        'TIMEOUT': 60 * 5,
    },
}

# High number since we don't want pagination
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 6
HAYSTACK_DEFAULT_OPERATOR = 'AND'

SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True

ANON_ALWAYS = True

Something went wrong with that request. Please try again.