diff --git a/rakefile b/rakefile index df0db9a56d..7d557cbeb5 100644 --- a/rakefile +++ b/rakefile @@ -38,10 +38,12 @@ task :default => [:pep8, :pylint, :test] directory REPORT_DIR +desc "Run pep8 on all of djangoapps" task :pep8 => REPORT_DIR do sh("pep8 --ignore=E501 djangoapps | tee #{REPORT_DIR}/pep8.report") end +desc "Run pylint on all of djangoapps" task :pylint => REPORT_DIR do Dir.chdir("djangoapps") do Dir["*"].each do |app| @@ -50,12 +52,20 @@ task :pylint => REPORT_DIR do end end +desc "Run all django tests on our djangoapps" task :test => REPORT_DIR do ENV['NOSE_XUNIT_FILE'] = File.join(REPORT_DIR, "nosetests.xml") django_admin = ENV['DJANGO_ADMIN_PATH'] || select_executable('django-admin.py', 'django-admin') sh("#{django_admin} test --settings=envs.test --pythonpath=. $(ls djangoapps)") end +desc "Start a local server with the specified environment (defaults to dev). Other useful environments are devplus (for dev testing with a real local database)" +task :runserver, :env do |t, args| + args.with_defaults(:env => 'dev') + django_admin = ENV['DJANGO_ADMIN_PATH'] || select_executable('django-admin.py', 'django-admin') + sh("#{django_admin} runserver --settings=envs.#{args.env} --pythonpath=.") +end + task :package do FileUtils.mkdir_p(BUILD_DIR) diff --git a/settings.py b/settings.py deleted file mode 100644 index 2be6be485a..0000000000 --- a/settings.py +++ /dev/null @@ -1,717 +0,0 @@ -import os -import platform -import sys -import tempfile - -import djcelery - -### Dark code. Should be enabled in local settings for devel. - -ENABLE_MULTICOURSE = False # set to False to disable multicourse display (see lib.util.views.mitxhome) -QUICKEDIT = False - -### - - -MITX_ROOT_URL = '' - -COURSE_NAME = "6.002_Spring_2012" -COURSE_NUMBER = "6.002x" -COURSE_TITLE = "Circuits and Electronics" - -COURSE_DEFAULT = '6.002_Spring_2012' - -COURSE_SETTINGS = {'6.002_Spring_2012': {'number' : '6.002x', - 'title' : 'Circuits and Electronics', - 'xmlpath': '6002x/', - } - } - -ROOT_URLCONF = 'urls' - -# from settings2.askbotsettings import LIVESETTINGS_OPTIONS -DEFAULT_GROUPS = [] - -# Configuration option for when we want to grab server error pages -STATIC_GRAB = False -DEV_CONTENT = True - -LIB_URL = '/static/js/' -# LIB_URL = 'https://mitxstatic.s3.amazonaws.com/js/' # No longer using S3 for this -BOOK_URL = '/static/book/' -BOOK_URL = 'https://mitxstatic.s3.amazonaws.com/book_images/' - -# Feature Flags. These should be set to false until they are ready to deploy, and then eventually flag mechanisms removed -GENERATE_PROFILE_SCORES = False # If this is true, random scores will be generated for the purpose of debugging the profile graphs - -# Our parent dir (mitx_all) is the BASE_DIR -BASE_DIR = os.path.abspath(os.path.join(__file__, "..", "..")) -PROJECT_DIR = os.path.abspath(os.path.join(__file__, "..")) -sys.path.append(BASE_DIR + "/mitx/djangoapps") -sys.path.append(BASE_DIR + "/mitx/lib") - -COURSEWARE_ENABLED = True -ASKBOT_ENABLED = True - -# Defaults to be overridden -EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' -SITE_NAME = "localhost:8000" - -DEFAULT_FROM_EMAIL = 'registration@mitx.mit.edu' -DEFAULT_FEEDBACK_EMAIL = 'feedback@mitx.mit.edu' - -GENERATE_RANDOM_USER_CREDENTIALS = False - -SIMPLE_WIKI_REQUIRE_LOGIN_EDIT = True -SIMPLE_WIKI_REQUIRE_LOGIN_VIEW = False - -PERFSTATS = False - -HTTPS = 'on' - -MEDIA_URL = '' -MEDIA_ROOT = '' - -# S3BotoStorage insists on a timeout for uploaded assets. We should make it -# permanent instead, but rather than trying to figure out exactly where that -# setting is, I'm just bumping the expiration time to something absurd (100 -# years). This is only used if DEFAULT_FILE_STORAGE is overriden to use S3 -# in the global settings.py -AWS_QUERYSTRING_EXPIRE = 10 * 365 * 24 * 60 * 60 # 10 years - -# Needed for Askbot -# Deployed machines: Move to S3 -DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' - -DEBUG = True -TEMPLATE_DEBUG = DEBUG - -ADMINS = ( - ('MITx Admins', 'admin@mitx.mit.edu'), -) - -MANAGERS = ADMINS - -# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name -TIME_ZONE = 'America/New_York' - -# Language code for this installation. All choices can be found here: -# http://www.i18nguy.com/unicode/language-identifiers.html -LANGUAGE_CODE = 'en' - -SITE_ID = 1 - -# 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 - -STATIC_URL = '/static/' - -# URL prefix for admin static files -- CSS, JavaScript and images. -# Make sure to use a trailing slash. -# Examples: "http://foo.com/static/admin/", "/static/admin/". -ADMIN_MEDIA_PREFIX = '/static/admin/' - -# List of finder classes that know how to find static files in -# various locations. -STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', -# 'django.contrib.staticfiles.finders.DefaultStorageFinder', -) - -# 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', -) - -MIDDLEWARE_CLASSES = ( - 'util.middleware.ExceptionLoggingMiddleware', - 'django.middleware.cache.UpdateCacheMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - #'django.contrib.auth.middleware.AuthenticationMiddleware', - 'cache_toolbox.middleware.CacheBackedAuthenticationMiddleware', - 'masquerade.middleware.MasqueradeMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'track.middleware.TrackMiddleware', - 'mitxmako.middleware.MakoMiddleware', - #'ssl_auth.ssl_auth.NginxProxyHeaderMiddleware', # ssl authentication behind nginx proxy - #'debug_toolbar.middleware.DebugToolbarMiddleware', - - # Uncommenting the following will prevent csrf token from being re-set if you - # delete it on the browser. I don't know why. - #'django.middleware.cache.FetchFromCacheMiddleware', - -) - -ROOT_URLCONF = 'mitx.urls' - -INSTALLED_APPS = ( - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'courseware', - 'student', - 'django.contrib.humanize', - 'static_template_view', - 'staticbook', - 'simplewiki', - 'track', - 'circuit', - 'perfstats', - 'util', - 'masquerade', - 'django_jasmine', - #'ssl_auth', ## Broken. Disabled for now. - 'multicourse', # multiple courses - # Uncomment the next line to enable the admin: - # 'django.contrib.admin', - # Uncomment the next line to enable admin documentation: - # 'django.contrib.admindocs', -) - -#TRACK_DIR = None -DEBUG_TRACK_LOG = False -# Maximum length of a tracking string. We don't want e.g. a file upload in our log -TRACK_MAX_EVENT = 10000 -# Maximum length of log file before starting a new one. -MAXLOG = 500 - -LOG_DIR = "/tmp/" -MAKO_MODULE_DIR = None - -MAKO_TEMPLATES = {} - -LOGGING_ENV = "dev" # override this in different environments - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': '../mitx.db', - } -} - -SECRET_KEY = 'unsecure' - -# Default dev cache (i.e. no caching) -CACHES = { - 'default': { - 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', - } -} - -# Make sure we execute correctly regardless of where we're called from -override_settings = os.path.join(BASE_DIR, "settings.py") -if os.path.isfile(override_settings): - execfile(override_settings) - -# A sample logging configuration. The only tangible logging -# performed by this configuration is to send an email to -# the site admins on every HTTP 500 error. -# See http://docs.djangoproject.com/en/dev/topics/logging for -# more details on how to customize your logging configuration. - -pid = os.getpid() -hostname = platform.node().split(".")[0] -SYSLOG_ADDRESS = ('syslog.m.i4x.org', 514) -TRACKING_LOG_FILE = LOG_DIR + "/tracking_{0}.log".format(pid) - -handlers = ['console'] -if not DEBUG: - handlers.append('syslogger') - -LOGGING = { - 'version': 1, - 'disable_existing_loggers': True, - 'formatters' : { - 'standard' : { - 'format' : '%(asctime)s %(levelname)s %(process)d [%(name)s] %(filename)s:%(lineno)d - %(message)s', - }, - 'syslog_format' : { - 'format' : '[%(name)s][env:' + LOGGING_ENV + '] %(levelname)s [' + \ - hostname + ' %(process)d] [%(filename)s:%(lineno)d] - %(message)s', - }, - 'raw' : { - 'format' : '%(message)s', - } - }, - 'handlers' : { - 'console' : { - 'level' : 'DEBUG' if DEBUG else 'INFO', - 'class' : 'logging.StreamHandler', - 'formatter' : 'standard', - 'stream' : sys.stdout, - }, - 'console_err' : { - 'level' : 'ERROR', - 'class' : 'logging.StreamHandler', - 'formatter' : 'standard', - 'stream' : sys.stderr, - }, - 'syslogger' : { - 'level' : 'INFO', - 'class' : 'logging.handlers.SysLogHandler', - 'address' : SYSLOG_ADDRESS, - 'formatter' : 'syslog_format', - }, - 'tracking' : { - 'level' : 'DEBUG', - 'class' : 'logging.handlers.WatchedFileHandler', - 'filename' : TRACKING_LOG_FILE, - 'formatter' : 'raw', - }, - 'mail_admins' : { - 'level': 'ERROR', - 'class': 'django.utils.log.AdminEmailHandler', - }, - }, - 'loggers' : { - 'django' : { - 'handlers' : handlers, # + ['mail_admins'], - 'propagate' : True, - 'level' : 'INFO' - }, - 'tracking' : { - 'handlers' : ['tracking'], - 'level' : 'DEBUG', - 'propagate' : False, - }, - 'root' : { - 'handlers' : handlers, - 'level' : 'DEBUG', - 'propagate' : False - }, - 'mitx' : { - 'handlers' : handlers, - 'level' : 'DEBUG', - 'propagate' : False - }, - } -} - - - -if PERFSTATS : - MIDDLEWARE_CLASSES = ( 'perfstats.middleware.ProfileMiddleware',) + MIDDLEWARE_CLASSES - -if 'TRACK_DIR' not in locals(): - TRACK_DIR = BASE_DIR+'/track_dir/' -if 'STATIC_ROOT' not in locals(): - STATIC_ROOT = BASE_DIR+'/staticroot/' -if 'DATA_DIR' not in locals(): - DATA_DIR = BASE_DIR+'/data/' -if 'TEXTBOOK_DIR' not in locals(): - TEXTBOOK_DIR = BASE_DIR+'/textbook/' - -if 'TEMPLATE_DIRS' not in locals(): - TEMPLATE_DIRS = ( - PROJECT_DIR+'/templates/', - DATA_DIR+'/templates', - TEXTBOOK_DIR, - ) - -if 'STATICFILES_DIRS' not in locals(): - STATICFILES_DIRS = ( - PROJECT_DIR+'/3rdParty/static', - PROJECT_DIR+'/static', - ) - - -if 'ASKBOT_EXTRA_SKINS_DIR' not in locals(): - ASKBOT_EXTRA_SKINS_DIR = BASE_DIR+'/askbot-devel/askbot/skins' -if 'ASKBOT_DIR' not in locals(): - ASKBOT_DIR = BASE_DIR+'/askbot-devel' - -sys.path.append(ASKBOT_DIR) -import askbot -import site - -STATICFILES_DIRS = STATICFILES_DIRS + ( ASKBOT_DIR+'/askbot/skins',) - -ASKBOT_ROOT = os.path.dirname(askbot.__file__) - -# Needed for Askbot -# Deployed machines: Move to S3 -if MEDIA_ROOT == '': - MEDIA_ROOT = ASKBOT_DIR+'/askbot/upfiles' -if MEDIA_URL == '': - MEDIA_URL = '/discussion/upfiles/' - -site.addsitedir(os.path.join(os.path.dirname(askbot.__file__), 'deps')) -TEMPLATE_LOADERS = TEMPLATE_LOADERS + ('askbot.skins.loaders.filesystem_load_template_source',) - -MIDDLEWARE_CLASSES = MIDDLEWARE_CLASSES + ( - 'askbot.middleware.anon_user.ConnectToSessionMessagesMiddleware', - 'askbot.middleware.forum_mode.ForumModeMiddleware', - 'askbot.middleware.cancel.CancelActionMiddleware', - 'django.middleware.transaction.TransactionMiddleware', - #'debug_toolbar.middleware.DebugToolbarMiddleware', - 'askbot.middleware.view_log.ViewLogMiddleware', - 'askbot.middleware.spaceless.SpacelessMiddleware', - #'askbot.middleware.pagesize.QuestionsPageSizeMiddleware', -) - -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', -) -ASKBOT_ALLOWED_UPLOAD_FILE_TYPES = ('.jpg', '.jpeg', '.gif', '.bmp', '.png', '.tiff') -ASKBOT_MAX_UPLOAD_FILE_SIZE = 1024 * 1024 #result in bytes -# ASKBOT_FILE_UPLOAD_DIR = os.path.join(os.path.dirname(__file__), 'askbot', 'upfiles') - -PROJECT_ROOT = os.path.dirname(__file__) - -TEMPLATE_CONTEXT_PROCESSORS = ( - 'django.core.context_processors.request', - 'django.core.context_processors.static', - 'askbot.context.application_settings', - #'django.core.context_processors.i18n', - 'askbot.user_messages.context_processors.user_messages',#must be before auth - 'django.core.context_processors.auth', #this is required for admin - 'django.core.context_processors.csrf', #necessary for csrf protection -) - -INSTALLED_APPS = INSTALLED_APPS + ( - 'django.contrib.sitemaps', - 'django.contrib.admin', - 'south', - 'askbot.deps.livesettings', - 'askbot', - 'keyedcache', # TODO: Main askbot tree has this installed, but we get intermittent errors if we include it. - 'robots', - 'django_countries', - 'djcelery', - 'djkombu', - 'followit', -) - -CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True -ASKBOT_URL = 'discussion/' -LOGIN_REDIRECT_URL = MITX_ROOT_URL + '/' -LOGIN_URL = MITX_ROOT_URL + '/' - -# ASKBOT_UPLOADED_FILES_URL = '%s%s' % (ASKBOT_URL, 'upfiles/') -ALLOW_UNICODE_SLUGS = False -ASKBOT_USE_STACKEXCHANGE_URLS = False #mimic url scheme of stackexchange -ASKBOT_CSS_DEVEL = True - -LIVESETTINGS_OPTIONS = { - 1: { - 'DB' : False, - 'SETTINGS' : { - 'ACCESS_CONTROL' : { - 'ASKBOT_CLOSED_FORUM_MODE' : True, - }, - 'BADGES' : { - 'DISCIPLINED_BADGE_MIN_UPVOTES' : 3, - 'PEER_PRESSURE_BADGE_MIN_DOWNVOTES' : 3, - 'TEACHER_BADGE_MIN_UPVOTES' : 1, - 'NICE_ANSWER_BADGE_MIN_UPVOTES' : 2, - 'GOOD_ANSWER_BADGE_MIN_UPVOTES' : 3, - 'GREAT_ANSWER_BADGE_MIN_UPVOTES' : 5, - 'NICE_QUESTION_BADGE_MIN_UPVOTES' : 2, - 'GOOD_QUESTION_BADGE_MIN_UPVOTES' : 3, - 'GREAT_QUESTION_BADGE_MIN_UPVOTES' : 5, - 'POPULAR_QUESTION_BADGE_MIN_VIEWS' : 150, - 'NOTABLE_QUESTION_BADGE_MIN_VIEWS' : 250, - 'FAMOUS_QUESTION_BADGE_MIN_VIEWS' : 500, - 'SELF_LEARNER_BADGE_MIN_UPVOTES' : 1, - 'CIVIC_DUTY_BADGE_MIN_VOTES' : 100, - 'ENLIGHTENED_BADGE_MIN_UPVOTES' : 3, - 'ASSOCIATE_EDITOR_BADGE_MIN_EDITS' : 20, - 'COMMENTATOR_BADGE_MIN_COMMENTS' : 10, - 'ENTHUSIAST_BADGE_MIN_DAYS' : 30, - 'FAVORITE_QUESTION_BADGE_MIN_STARS' : 3, - 'GURU_BADGE_MIN_UPVOTES' : 5, - 'NECROMANCER_BADGE_MIN_DELAY' : 30, - 'NECROMANCER_BADGE_MIN_UPVOTES' : 1, - 'STELLAR_QUESTION_BADGE_MIN_STARS' : 5, - 'TAXONOMIST_BADGE_MIN_USE_COUNT' : 10, - }, - 'EMAIL' : { - 'EMAIL_SUBJECT_PREFIX' : u'[Django] ', - 'EMAIL_UNIQUE' : True, - 'EMAIL_VALIDATION' : False, - 'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_M_AND_C' : u'w', - 'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_ALL' : u'w', - 'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_ANS' : u'w', - 'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_ASK' : u'w', - 'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_SEL' : u'w', - 'ENABLE_UNANSWERED_REMINDERS' : False, - 'DAYS_BEFORE_SENDING_UNANSWERED_REMINDER' : 1, - 'UNANSWERED_REMINDER_FREQUENCY' : 1, - 'MAX_UNANSWERED_REMINDERS' : 5, - 'ENABLE_ACCEPT_ANSWER_REMINDERS' : False, - 'DAYS_BEFORE_SENDING_ACCEPT_ANSWER_REMINDER' : 3, - 'ACCEPT_ANSWER_REMINDER_FREQUENCY' : 3, - 'MAX_ACCEPT_ANSWER_REMINDERS' : 5, - 'ANONYMOUS_USER_EMAIL' : u'anonymous@askbot.org', - 'ALLOW_ASKING_BY_EMAIL' : False, - 'REPLACE_SPACE_WITH_DASH_IN_EMAILED_TAGS' : True, - 'MAX_ALERTS_PER_EMAIL' : 7, - }, - 'EMBEDDABLE_WIDGETS' : { - 'QUESTIONS_WIDGET_CSS' : u"\nbody {\n overflow: hidden;\n}\n#container {\n width: 200px;\n height: 350px;\n}\nul {\n list-style: none;\n padding: 5px;\n margin: 5px;\n}\nli {\n border-bottom: #CCC 1px solid;\n padding-bottom: 5px;\n padding-top: 5px;\n}\nli:last-child {\n border: none;\n}\na {\n text-decoration: none;\n color: #464646;\n font-family: 'Yanone Kaffeesatz', sans-serif;\n font-size: 15px;\n}\n", - 'QUESTIONS_WIDGET_FOOTER' : u"\n\n", - 'QUESTIONS_WIDGET_HEADER' : u'', - 'QUESTIONS_WIDGET_MAX_QUESTIONS' : 7, - }, - 'EXTERNAL_KEYS' : { - 'RECAPTCHA_KEY' : u'', - 'RECAPTCHA_SECRET' : u'', - 'FACEBOOK_KEY' : u'', - 'FACEBOOK_SECRET' : u'', - 'HOW_TO_CHANGE_LDAP_PASSWORD' : u'', - 'IDENTICA_KEY' : u'', - 'IDENTICA_SECRET' : u'', - 'GOOGLE_ANALYTICS_KEY' : u'', - 'GOOGLE_SITEMAP_CODE' : u'', - 'LDAP_PROVIDER_NAME' : u'', - 'LDAP_URL' : u'', - 'LINKEDIN_KEY' : u'', - 'LINKEDIN_SECRET' : u'', - 'TWITTER_KEY' : u'', - 'TWITTER_SECRET' : u'', - 'USE_LDAP_FOR_PASSWORD_LOGIN' : False, - 'USE_RECAPTCHA' : False, - }, - 'FLATPAGES' : { - 'FORUM_ABOUT' : u'', - 'FORUM_FAQ' : u'', - 'FORUM_PRIVACY' : u'', - }, - 'FORUM_DATA_RULES' : { - 'MIN_TITLE_LENGTH' : 1, - 'MIN_QUESTION_BODY_LENGTH' : 1, - 'MIN_ANSWER_BODY_LENGTH' : 1, - 'WIKI_ON' : False, - 'ALLOW_ASK_ANONYMOUSLY' : True, - 'ALLOW_POSTING_BEFORE_LOGGING_IN' : False, - 'ALLOW_SWAPPING_QUESTION_WITH_ANSWER' : False, - 'MAX_TAG_LENGTH' : 20, - 'MIN_TITLE_LENGTH' : 1, - 'MIN_QUESTION_BODY_LENGTH' : 1, - 'MIN_ANSWER_BODY_LENGTH' : 1, - 'MANDATORY_TAGS' : u'', - 'FORCE_LOWERCASE_TAGS' : False, - 'TAG_LIST_FORMAT' : u'list', - 'USE_WILDCARD_TAGS' : False, - 'MAX_COMMENTS_TO_SHOW' : 5, - 'MAX_COMMENT_LENGTH' : 300, - 'USE_TIME_LIMIT_TO_EDIT_COMMENT' : True, - 'MINUTES_TO_EDIT_COMMENT' : 10, - 'SAVE_COMMENT_ON_ENTER' : True, - 'MIN_SEARCH_WORD_LENGTH' : 4, - 'DECOUPLE_TEXT_QUERY_FROM_SEARCH_STATE' : False, - 'MAX_TAGS_PER_POST' : 5, - 'DEFAULT_QUESTIONS_PAGE_SIZE' : u'30', - 'UNANSWERED_QUESTION_MEANING' : u'NO_ACCEPTED_ANSWERS', - - # Enabling video requires forked version of markdown - # pip uninstall markdown2 - # pip install -e git+git://github.com/andryuha/python-markdown2.git#egg=markdown2 - 'ENABLE_VIDEO_EMBEDDING' : False, - }, - 'GENERAL_SKIN_SETTINGS' : { - 'CUSTOM_CSS' : u'', - 'CUSTOM_FOOTER' : u'', - 'CUSTOM_HEADER' : u'', - 'CUSTOM_HTML_HEAD' : u'', - 'CUSTOM_JS' : u'', - 'MITX_ROOT_URL' : MITX_ROOT_URL, # for askbot header.html file - 'SITE_FAVICON' : unicode(MITX_ROOT_URL) + u'/images/favicon.gif', - 'SITE_LOGO_URL' :unicode(MITX_ROOT_URL) + u'/images/logo.gif', - 'SHOW_LOGO' : False, - 'LOCAL_LOGIN_ICON' : unicode(MITX_ROOT_URL) + u'/images/pw-login.gif', - 'ALWAYS_SHOW_ALL_UI_FUNCTIONS' : False, - 'ASKBOT_DEFAULT_SKIN' : u'default', - 'USE_CUSTOM_HTML_HEAD' : False, - 'FOOTER_MODE' : u'default', - 'USE_CUSTOM_CSS' : False, - 'USE_CUSTOM_JS' : False, - }, - 'LEADING_SIDEBAR' : { - 'ENABLE_LEADING_SIDEBAR' : False, - 'LEADING_SIDEBAR' : u'', - }, - 'LOGIN_PROVIDERS' : { - 'PASSWORD_REGISTER_SHOW_PROVIDER_BUTTONS' : True, - 'SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN' : True, - 'SIGNIN_AOL_ENABLED' : True, - 'SIGNIN_BLOGGER_ENABLED' : True, - 'SIGNIN_CLAIMID_ENABLED' : True, - 'SIGNIN_FACEBOOK_ENABLED' : True, - 'SIGNIN_FLICKR_ENABLED' : True, - 'SIGNIN_GOOGLE_ENABLED' : True, - 'SIGNIN_IDENTI.CA_ENABLED' : True, - 'SIGNIN_LINKEDIN_ENABLED' : True, - 'SIGNIN_LIVEJOURNAL_ENABLED' : True, - 'SIGNIN_LOCAL_ENABLED' : True, - 'SIGNIN_OPENID_ENABLED' : True, - 'SIGNIN_TECHNORATI_ENABLED' : True, - 'SIGNIN_TWITTER_ENABLED' : True, - 'SIGNIN_VERISIGN_ENABLED' : True, - 'SIGNIN_VIDOOP_ENABLED' : True, - 'SIGNIN_WORDPRESS_ENABLED' : True, - 'SIGNIN_WORDPRESS_SITE_ENABLED' : False, - 'SIGNIN_YAHOO_ENABLED' : True, - 'WORDPRESS_SITE_ICON' : unicode(MITX_ROOT_URL) + u'/images/logo.gif', - 'WORDPRESS_SITE_URL' : '', - }, - 'LICENSE_SETTINGS' : { - 'LICENSE_ACRONYM' : u'cc-by-sa', - 'LICENSE_LOGO_URL' : unicode(MITX_ROOT_URL) + u'/images/cc-by-sa.png', - 'LICENSE_TITLE' : u'Creative Commons Attribution Share Alike 3.0', - 'LICENSE_URL' : 'http://creativecommons.org/licenses/by-sa/3.0/legalcode', - 'LICENSE_USE_LOGO' : True, - 'LICENSE_USE_URL' : True, - 'USE_LICENSE' : True, - }, - 'MARKUP' : { - 'MARKUP_CODE_FRIENDLY' : False, - 'ENABLE_MATHJAX' : True, # FIXME: Test with this enabled - 'MATHJAX_BASE_URL' : u'/static/js/mathjax-MathJax-c9db6ac/', - 'ENABLE_AUTO_LINKING' : False, - 'AUTO_LINK_PATTERNS' : u'', - 'AUTO_LINK_URLS' : u'', - }, - 'MIN_REP' : { - 'MIN_REP_TO_ACCEPT_OWN_ANSWER' : 1, - 'MIN_REP_TO_ANSWER_OWN_QUESTION' : 1, - 'MIN_REP_TO_CLOSE_OTHERS_QUESTIONS' : 1200, - 'MIN_REP_TO_CLOSE_OWN_QUESTIONS' : 1, - 'MIN_REP_TO_DELETE_OTHERS_COMMENTS' : 5000, - 'MIN_REP_TO_DELETE_OTHERS_POSTS' : 10000, - 'MIN_REP_TO_EDIT_OTHERS_POSTS' : 5000, - 'MIN_REP_TO_EDIT_WIKI' : 200, - 'MIN_REP_TO_FLAG_OFFENSIVE' : 1, - 'MIN_REP_TO_HAVE_STRONG_URL' : 250, - 'MIN_REP_TO_LEAVE_COMMENTS' : 1, - 'MIN_REP_TO_LOCK_POSTS' : 10000, - 'MIN_REP_TO_REOPEN_OWN_QUESTIONS' : 1, - 'MIN_REP_TO_RETAG_OTHERS_QUESTIONS' : 100, - 'MIN_REP_TO_UPLOAD_FILES' : 1, - 'MIN_REP_TO_VIEW_OFFENSIVE_FLAGS' : 2000, - 'MIN_REP_TO_VOTE_DOWN' : 15, - 'MIN_REP_TO_VOTE_UP' : 1, - }, - 'QA_SITE_SETTINGS' : { - 'APP_COPYRIGHT' : u'Copyright Askbot, 2010-2011.', - 'APP_DESCRIPTION' : u'Open source question and answer forum written in Python and Django', - 'APP_KEYWORDS' : u'Askbot,CNPROG,forum,community', - 'APP_SHORT_NAME' : u'Askbot', - 'APP_TITLE' : u'Askbot: Open Source Q&A Forum', - 'APP_URL' : u'http://askbot.org', - 'FEEDBACK_SITE_URL' : u'', - 'ENABLE_GREETING_FOR_ANON_USER' : True, - 'GREETING_FOR_ANONYMOUS_USER' : u'First time here? Check out the FAQ!', - }, - 'REP_CHANGES' : { - 'MAX_REP_GAIN_PER_USER_PER_DAY' : 200, - 'REP_GAIN_FOR_ACCEPTING_ANSWER' : 2, - 'REP_GAIN_FOR_CANCELING_DOWNVOTE' : 1, - 'REP_GAIN_FOR_RECEIVING_ANSWER_ACCEPTANCE' : 15, - 'REP_GAIN_FOR_RECEIVING_DOWNVOTE_CANCELATION' : 2, - 'REP_GAIN_FOR_RECEIVING_UPVOTE' : 10, - 'REP_LOSS_FOR_CANCELING_ANSWER_ACCEPTANCE' : -2, - 'REP_LOSS_FOR_DOWNVOTING' : -2, - 'REP_LOSS_FOR_RECEIVING_CANCELATION_OF_ANSWER_ACCEPTANCE' : -5, - 'REP_LOSS_FOR_RECEIVING_DOWNVOTE' : -1, - 'REP_LOSS_FOR_RECEIVING_FIVE_FLAGS_PER_REVISION' : -100, - 'REP_LOSS_FOR_RECEIVING_FLAG' : -2, - 'REP_LOSS_FOR_RECEIVING_THREE_FLAGS_PER_REVISION' : -30, - 'REP_LOSS_FOR_RECEIVING_UPVOTE_CANCELATION' : -10, - }, - 'SOCIAL_SHARING' : { - 'ENABLE_SHARING_TWITTER' : False, - 'ENABLE_SHARING_FACEBOOK' : False, - 'ENABLE_SHARING_LINKEDIN' : False, - 'ENABLE_SHARING_IDENTICA' : False, - 'ENABLE_SHARING_GOOGLE' : False, - }, - 'SIDEBAR_MAIN' : { - 'SIDEBAR_MAIN_AVATAR_LIMIT' : 16, - 'SIDEBAR_MAIN_FOOTER' : u'', - 'SIDEBAR_MAIN_HEADER' : u'', - 'SIDEBAR_MAIN_SHOW_AVATARS' : True, - 'SIDEBAR_MAIN_SHOW_TAGS' : True, - 'SIDEBAR_MAIN_SHOW_TAG_SELECTOR' : True, - }, - 'SIDEBAR_PROFILE' : { - 'SIDEBAR_PROFILE_FOOTER' : u'', - 'SIDEBAR_PROFILE_HEADER' : u'', - }, - 'SIDEBAR_QUESTION' : { - 'SIDEBAR_QUESTION_FOOTER' : u'', - 'SIDEBAR_QUESTION_HEADER' : u'', - 'SIDEBAR_QUESTION_SHOW_META' : True, - 'SIDEBAR_QUESTION_SHOW_RELATED' : True, - 'SIDEBAR_QUESTION_SHOW_TAGS' : True, - }, - 'SITE_MODES' : { - 'ACTIVATE_BOOTSTRAP_MODE' : False, - }, - 'SKIN_COUNTER_SETTINGS' : { - - }, - 'SPAM_AND_MODERATION' : { - 'AKISMET_API_KEY' : u'', - 'USE_AKISMET' : False, - }, - 'USER_SETTINGS' : { - 'EDITABLE_SCREEN_NAME' : False, - 'EDITABLE_EMAIL' : False, - 'ALLOW_ADD_REMOVE_LOGIN_METHODS' : False, - 'ENABLE_GRAVATAR' : False, - 'GRAVATAR_TYPE' : u'identicon', - 'NAME_OF_ANONYMOUS_USER' : u'', - 'DEFAULT_AVATAR_URL' : u'/images/nophoto.png', - 'MIN_USERNAME_LENGTH' : 1, - 'ALLOW_ACCOUNT_RECOVERY_BY_EMAIL' : True, - }, - 'VOTE_RULES' : { - 'MAX_VOTES_PER_USER_PER_DAY' : 30, - 'MAX_FLAGS_PER_USER_PER_DAY' : 5, - 'MIN_DAYS_FOR_STAFF_TO_ACCEPT_ANSWER' : 0, - 'MIN_DAYS_TO_ANSWER_OWN_QUESTION' : 0, - 'MIN_FLAGS_TO_DELETE_POST' : 5, - 'MIN_FLAGS_TO_HIDE_POST' : 3, - 'MAX_DAYS_TO_CANCEL_VOTE' : 1, - 'VOTES_LEFT_WARNING_THRESHOLD' : 5, - }, - }, - }, -} - -# Celery Settings -BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport" -CELERY_ALWAYS_EAGER = True - -ot = MAKO_TEMPLATES -MAKO_TEMPLATES['course'] = [DATA_DIR] -MAKO_TEMPLATES['sections'] = [DATA_DIR+'/sections'] -MAKO_TEMPLATES['custom_tags'] = [DATA_DIR+'/custom_tags'] -MAKO_TEMPLATES['main'] = [PROJECT_DIR+'/templates/', DATA_DIR+'/info'] - - -MAKO_TEMPLATES.update(ot) - -if MAKO_MODULE_DIR == None: - MAKO_MODULE_DIR = tempfile.mkdtemp('mako') - -djcelery.setup_loader() - -# Jasmine Settings -JASMINE_TEST_DIRECTORY = PROJECT_DIR+'/templates/coffee'