123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #!/usr/bin/env python
- import os
- import django
-
- from django.conf import settings, global_settings
- import oscar
-
-
- def configure():
- if not settings.configured:
- from oscar.defaults import OSCAR_SETTINGS
-
- # Helper function to extract absolute path
- location = lambda x: os.path.join(
- os.path.dirname(os.path.realpath(__file__)), x)
-
- test_settings = OSCAR_SETTINGS.copy()
- test_settings.update({
- 'DATABASES': {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': ':memory:',
- },
- },
- 'INSTALLED_APPS': [
- 'django.contrib.auth',
- 'django.contrib.admin',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.sites',
- 'django.contrib.flatpages',
- 'django.contrib.staticfiles',
- 'compressor',
- 'tests._site.model_tests_app', # contains models we need for testing
- 'tests._site.myauth',
-
- # Use a custom partner app to test overriding models. I can't
- # find a way of doing this on a per-test basis, so I'm using a
- # global change.
- ] + oscar.get_core_apps([
- 'tests._site.apps.partner',
- 'tests._site.apps.customer']),
- 'AUTH_USER_MODEL': 'myauth.User',
- 'TEMPLATE_CONTEXT_PROCESSORS': (
- "django.contrib.auth.context_processors.auth",
- "django.core.context_processors.request",
- "django.core.context_processors.debug",
- "django.core.context_processors.i18n",
- "django.core.context_processors.media",
- "django.core.context_processors.static",
- "django.contrib.messages.context_processors.messages",
- 'oscar.apps.search.context_processors.search_form',
- 'oscar.apps.customer.notifications.context_processors.notifications',
- 'oscar.apps.promotions.context_processors.promotions',
- 'oscar.apps.checkout.context_processors.checkout',
- 'oscar.core.context_processors.metadata',
- ),
- 'TEMPLATE_DIRS': (
- location('templates'),
- oscar.OSCAR_MAIN_TEMPLATE_DIR,
- ),
- 'TEMPLATE_LOADERS': (
- ('django.template.loaders.cached.Loader',
- ['django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
- 'django.template.loaders.eggs.Loader']),),
- 'MIDDLEWARE_CLASSES': (
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- 'oscar.apps.basket.middleware.BasketMiddleware',
- ),
- 'AUTHENTICATION_BACKENDS': (
- 'oscar.apps.customer.auth_backends.EmailBackend',
- 'django.contrib.auth.backends.ModelBackend',
- ),
- 'HAYSTACK_CONNECTIONS': {
- 'default': {
- 'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
- }
- },
- 'PASSWORD_HASHERS': ['django.contrib.auth.hashers.MD5PasswordHasher'],
- 'ROOT_URLCONF': 'tests._site.urls',
- 'LOGIN_REDIRECT_URL': '/accounts/',
- 'STATIC_URL': '/static/',
- 'COMPRESS_ENABLED': False,
- 'COMPRESS_ROOT': '', # needed to avoid issue #1214
- 'DEBUG': False,
- 'SITE_ID': 1,
- 'USE_TZ': 1,
- 'APPEND_SLASH': True,
- 'DDF_DEFAULT_DATA_FIXTURE': 'tests.dynamic_fixtures.OscarDynamicDataFixtureClass',
- 'SESSION_SERIALIZER': 'django.contrib.sessions.serializers.JSONSerializer',
-
- # temporary workaround for issue in sorl-thumbnail in Python 3
- # https://github.com/mariocesar/sorl-thumbnail/pull/254
- 'THUMBNAIL_DEBUG': False,
-
- 'OSCAR_INITIAL_ORDER_STATUS': 'A',
- 'OSCAR_ORDER_STATUS_PIPELINE': {'A': ('B',), 'B': ()},
- 'OSCAR_INITIAL_LINE_STATUS': 'a',
- 'OSCAR_LINE_STATUS_PIPELINE': {'a': ('b', ), 'b': ()},
-
- # Setting this explicitly prevents Django 1.7+ from showing a
- # warning regarding a changed default test runner. The Oscar test
- # suite is run with nose, so it does not matter.
- 'SILENCED_SYSTEM_CHECKS': ['1_6.W001'],
- })
-
- settings.configure(**test_settings)
-
-
- # It can sometimes be useful to be able to drop into the configured Django
- # environment of the test suite. It might e.g. be useful to drop into the
- # shell with ./config.py shell_plus or create missing migrations with
- # ./config.py makemigrations
-
- if __name__ == '__main__':
- import sys
- from django.core.management import call_command
- args = sys.argv[1:]
-
- if args:
- configure() # configure Django settings
- if hasattr(django, 'setup'):
- django.setup() # initialise app registry for Django 1.7+
- call_command(*args)
|