Improve form layout
[oweals/karmaworld.git] / karmaworld / settings / common.py
index fd604a5e30b1513a341986546cec7a64f9705db2..5792d31c159e56729591167e6de803088f19e637 100644 (file)
@@ -5,6 +5,7 @@
 
 
 from datetime import timedelta
+import sys
 from os.path import abspath, basename, dirname, join, normpath
 from sys import path
 
@@ -13,7 +14,9 @@ from djcelery import setup_loader
 from karmaworld.secret.filepicker import FILEPICKER_API_KEY as fp_api
 
 FILEPICKER_API_KEY = fp_api
+FILEPICKER_INPUT_TYPE = 'filepicker'
 
+from karmaworld.secret.static_s3 import *
 
 SERIALIZATION_MODULES = {'json-pretty': 'karmaworld.apps.serializers.json_pretty'}
 
@@ -27,6 +30,7 @@ ALLOWED_HOSTS = [
     'beta.karmanotes.org',
     'www.karmanotes.org',
     'karmanotes.org',
+    'quiz.karmanotes.org',
 ]
 ########## END SECURITY CONFIGURATION
 
@@ -151,6 +155,7 @@ TEMPLATE_CONTEXT_PROCESSORS = (
     'django.core.context_processors.tz',
     'django.contrib.messages.context_processors.messages',
     'django.core.context_processors.request',
+    'karmaworld.apps.notes.context_processors.s3_url',
 
     # allauth specific context processors
     "allauth.account.context_processors.account",
@@ -176,6 +181,9 @@ MIDDLEWARE_CLASSES = (
     # Use GZip compression to reduce bandwidth.
     'django.middleware.gzip.GZipMiddleware',
 
+    # Version control middleware.
+    'reversion.middleware.RevisionMiddleware',
+
     # Default Django middleware.
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
@@ -226,6 +234,13 @@ THIRD_PARTY_APPS = (
     # Tagging https://github.com/yedpodtrzitko/django-taggit
     'taggit',
 
+    # Version control
+    'reversion',
+
+    # AJAX endpoints for autocompletion
+    'ajax_select',
+    'ajax_select_cascade',
+
     'allauth',
     'allauth.account',
     'allauth.socialaccount',
@@ -233,6 +248,9 @@ THIRD_PARTY_APPS = (
     'allauth.socialaccount.providers.facebook',
     'allauth.socialaccount.providers.google',
     'allauth.socialaccount.providers.twitter',
+
+    # Added to make quizzes moderation nicer
+    'nested_inlines',
 )
 
 LOCAL_APPS = (
@@ -243,6 +261,7 @@ LOCAL_APPS = (
     'karmaworld.apps.users',
     'karmaworld.apps.moderation',
     'karmaworld.apps.licenses',
+    'karmaworld.apps.quizzes',
 )
 
 # See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
@@ -265,11 +284,14 @@ ACCOUNT_AUTHENTICATION_METHOD = "email"
 ACCOUNT_CONFIRM_EMAIL_ON_GET = False
 ACCOUNT_EMAIL_VERIFICATION = "optional"
 ACCOUNT_EMAIL_SUBJECT_PREFIX = "KarmaNotes.org -- "
-ACCOUNT_USER_MODEL_EMAIL_FIELD = "email"
-ACCOUNT_USERNAME_REQUIRED = False
+ACCOUNT_USERNAME_REQUIRED = True
 SOCIALACCOUNT_EMAIL_REQUIRED = True
 SOCIALACCOUNT_EMAIL_VERIFICATION = "optional"
+SOCIALACCOUNT_QUERY_EMAIL = True
+SOCIALACCOUNT_AUTO_SIGNUP = False
 ACCOUNT_USER_DISPLAY = 'karmaworld.apps.users.models.user_display_name'
+ACCOUNT_SIGNUP_FORM_CLASS = 'karmaworld.apps.users.forms.SignupForm'
+ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
 
 AUTH_PROFILE_MODULE = 'users.UserProfile'
 
@@ -280,6 +302,11 @@ AUTH_PROFILE_MODULE = 'users.UserProfile'
 LOGGING = {
     'version': 1,
     'disable_existing_loggers': False,
+    'filters': {
+         'require_debug_false': {
+             '()': 'django.utils.log.RequireDebugFalse'
+         }
+     },
     'handlers': {
         'console': {
             'level': 'INFO',
@@ -287,6 +314,7 @@ LOGGING = {
         },
         'mail_admins': {
             'level': 'ERROR',
+            'filters': ['require_debug_false'],
             'class': 'django.utils.log.AdminEmailHandler'
         }
     },
@@ -337,6 +365,7 @@ COMPRESS_JS_FILTERS = [
 
 ########## SESSION CONFIGURATION
 
+SESSION_ENGINE = 'django.contrib.sessions.backends.db'
 SESSION_COOKIE_AGE = 63072000    # 2 years in seconds
 
 ########## END SESSION CONFIGURATION
@@ -352,3 +381,17 @@ TAGGIT_STOPWORDS = [u'a', u'an', u'and', u'be', u'from', u'of']
 
 ########## END TAGGIT CONFIGURATION
 
+
+########## HONEYPOT CONFIGURATION
+# parts of this code borrow from
+# https://github.com/sunlightlabs/django-honeypot
+HONEYPOT_FIELD_NAME = "instruction_url" # see that "_url"? bots gotta want that.
+HONEYPOT_VALUE = ""
+HONEYPOT_LABEL = "Do not fill in this field <span class='required-field'>(we need to make sure you're not a robot)</span>"
+HONEYPOT_ERROR = "You did not follow directions."
+########## END HONEYPOT CONFIGURATION
+
+
+########## TESTING CONFIGURATION
+TESTING = 'test' in sys.argv
+########## END TESTING CONFIGURATION