""" settings/settings.py Settings that are applied project wide. """ # Python stdlib Imports import os import sys # DEV vs PROD if os.environ['GO_ENV'] != 'production': DEBUG = True # dummy cache for development-- doesn't actually cache things CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', } } else: DEBUG = False CACHES = { 'default': { 'BACKEND': 'redis_cache.RedisCache', 'LOCATION': 'localhost:6379', }, } # STANDALONE VARS # /go/go BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # You can generate a secret key from the following link: # http://www.miniwebtool.com/django-secret-key-generator/ SECRET_KEY = os.environ['GO_SECRET_KEY'] # Peoplefinder API PF_URL = "https://api.srct.gmu.edu/peoplefinder/v1/" # The domains this application will be deployed on # e.g. Which domains this app should listen to requests from. ALLOWED_HOSTS = [os.environ['GO_ALLOWED_HOSTS']] ADMINS = () MANAGERS = ADMINS # Internationalization # https://docs.djangoproject.com/en/2.0/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True # MEDIA/STATIC FILE CONFIGURATION MEDIA_URL = '/media/' MEDIA_ROOT = '' MEDIAFILES_DIRS = ( os.path.join(BASE_DIR, 'media/'), ) STATIC_URL = '/static/' STATIC_ROOT = '' STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static/'), './go/static/' ) STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', ) # TEMPLATING TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ os.path.join(BASE_DIR, 'templates'), './go/go_ahead/templates/' ], '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', ], }, } ] # Use the same DB everywhere. # See: https://docs.djangoproject.com/en/dev/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': os.environ['GO_DB_NAME'], 'USER': os.environ['GO_DB_USER'], 'PASSWORD': os.environ['GO_DB_PASSWORD'], 'HOST': os.environ['GO_DB_HOST'], 'PORT': os.environ['GO_DB_PORT'], 'OPTIONS': {'charset': 'utf8mb4'} } } MIDDLEWARE = [ 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'cas.middleware.CASMiddleware', ] ROOT_URLCONF = 'settings.urls' WSGI_APPLICATION = 'settings.wsgi.application' INSTALLED_APPS = ( # Django apps 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'go_back', 'go_ahead', # Third party 'crispy_forms', 'cas', 'rest_framework', 'rest_framework.authtoken' ) CRISPY_TEMPLATE_PACK = 'bootstrap4' LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'filters': { 'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse' } }, 'handlers': { 'mail_admins': { 'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler' }, 'console': { 'level': 'INFO', 'class': 'logging.StreamHandler', 'stream': sys.stdout } }, 'loggers': { 'django.request': { 'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True, }, 'django': { 'handlers': ['console'], 'level': 'INFO', 'propogate': True }, } } """ CAS Authentication Settings """ LOGIN_URL = '/login' LOGOUT_URL = '/logout' LOGIN_REDIRECT_URL = '/' AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', 'cas.backends.CASBackend', ) CAS_LOGOUT_COMPLETELY = True CAS_PROVIDE_URL_TO_LOGOUT = True CAS_RESPONSE_CALLBACKS = ( 'go_back.cas_callbacks.create_user', ) CAS_SERVER_URL = "https://login.gmu.edu" """ Mail Settings """ EMAIL_HOST = os.environ['GO_EMAIL_HOST'] EMAIL_PORT = os.environ['GO_EMAIL_PORT'] EMAIL_HOST_USER = os.environ['GO_EMAIL_HOST_USER'] EMAIL_HOST_PASSWORD = os.environ['GO_EMAIL_HOST_PASSWORD'] EMAIL_FROM = os.environ['GO_EMAIL_FROM'] EMAIL_TO = os.environ['GO_EMAIL_TO'] # Domain used to email to users. See implementation in views.py # ie. '@gmu.edu' EMAIL_DOMAIN = os.environ['GO_EMAIL_DOMAIN'] """ Django Rest Framework Settings """ REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated' ], 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.authentication.TokenAuthentication', 'rest_framework.authentication.SessionAuthentication', ], }