From bde951353931e76e71f6c68dae2a4e5a39fb7972 Mon Sep 17 00:00:00 2001 From: Xavier Antoviaque Date: Wed, 5 Mar 2014 15:21:11 -0400 Subject: [PATCH] Only add mentoring application to INSTALLED_APPS when in virtualenv --- cms/envs/common.py | 29 +++++++++++++++++++---------- lms/envs/common.py | 29 +++++++++++++++++++---------- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/cms/envs/common.py b/cms/envs/common.py index b914239585..e90d2b2139 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -24,6 +24,7 @@ Longer TODO: # want to import all variables from base settings files # pylint: disable=W0401, W0611, W0614 +import imp import sys import lms.envs.common from lms.envs.common import ( @@ -467,9 +468,6 @@ INSTALLED_APPS = ( # for course creator table 'django.contrib.admin', - # XBlocks containing migrations - 'mentoring', - # for managing course modes 'course_modes', @@ -536,11 +534,22 @@ MAX_FAILED_LOGIN_ATTEMPTS_ALLOWED = 5 MAX_FAILED_LOGIN_ATTEMPTS_LOCKOUT_PERIOD_SECS = 15 * 60 -### JSdraw (only installed in some instances) +### Apps only installed in some instances -try: - import edx_jsdraw -except ImportError: - pass -else: - INSTALLED_APPS += ('edx_jsdraw',) +OPTIONAL_APPS = ( + 'edx_jsdraw', + 'mentoring', +) + +for app_name in OPTIONAL_APPS: + # First attempt to only find the module rather than actually importing it, + # to avoid circular references - only try to import if it can't be found + # by find_module, which doesn't work with import hooks + try: + imp.find_module(app_name) + except ImportError: + try: + __import__(app_name) + except ImportError: + continue + INSTALLED_APPS += (app_name,) diff --git a/lms/envs/common.py b/lms/envs/common.py index e31a7bb115..a11480a0f5 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -26,6 +26,7 @@ Longer TODO: import sys import os +import imp import json from path import path @@ -1163,9 +1164,6 @@ INSTALLED_APPS = ( 'reverification', 'embargo', - - # XBlocks containing migrations - 'mentoring', ) ######################### MARKETING SITE ############################### @@ -1458,11 +1456,22 @@ ALL_LANGUAGES = ( ) -### JSdraw (only installed in some instances) +### Apps only installed in some instances -try: - import edx_jsdraw -except ImportError: - pass -else: - INSTALLED_APPS += ('edx_jsdraw',) +OPTIONAL_APPS = ( + 'edx_jsdraw', + 'mentoring', +) + +for app_name in OPTIONAL_APPS: + # First attempt to only find the module rather than actually importing it, + # to avoid circular references - only try to import if it can't be found + # by find_module, which doesn't work with import hooks + try: + imp.find_module(app_name) + except ImportError: + try: + __import__(app_name) + except ImportError: + continue + INSTALLED_APPS += (app_name,)