From b25b3e1befe7eb237e93c7a1cb207a89d6db6654 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Tue, 28 Jan 2014 16:59:49 -0500 Subject: [PATCH 1/2] Move doc_url function out of edxmako middleware --- .../contentstore/context_processors.py | 20 +++++++++++++++++++ cms/envs/common.py | 1 + common/djangoapps/edxmako/middleware.py | 20 ------------------- 3 files changed, 21 insertions(+), 20 deletions(-) create mode 100644 cms/djangoapps/contentstore/context_processors.py diff --git a/cms/djangoapps/contentstore/context_processors.py b/cms/djangoapps/contentstore/context_processors.py new file mode 100644 index 0000000000..1d5ac55e48 --- /dev/null +++ b/cms/djangoapps/contentstore/context_processors.py @@ -0,0 +1,20 @@ +import ConfigParser +from django.conf import settings + + +def doc_url(request): + config_file = open(settings.REPO_ROOT / "docs" / "config.ini") + config = ConfigParser.ConfigParser() + config.readfp(config_file) + + # in the future, we will detect the locale; for now, we will + # hardcode en_us, since we only have English documentation + locale = "en_us" + + def get_doc_url(token): + try: + return config.get(locale, token) + except ConfigParser.NoOptionError: + return config.get(locale, "default") + + return {"doc_url": get_doc_url} diff --git a/cms/envs/common.py b/cms/envs/common.py index bd19b365b9..7185670b81 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -117,6 +117,7 @@ TEMPLATE_CONTEXT_PROCESSORS = ( 'django.contrib.auth.context_processors.auth', # this is required for admin 'django.core.context_processors.csrf', 'dealer.contrib.django.staff.context_processor', # access git revision + 'contentstore.context_processors.doc_url', ) # use the ratelimit backend to prevent brute force attacks diff --git a/common/djangoapps/edxmako/middleware.py b/common/djangoapps/edxmako/middleware.py index 9587c0b2b0..27b129f571 100644 --- a/common/djangoapps/edxmako/middleware.py +++ b/common/djangoapps/edxmako/middleware.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import ConfigParser -from django.conf import settings from django.template import RequestContext from util.request import safe_get_host requestcontext = None @@ -26,21 +24,3 @@ class MakoMiddleware(object): requestcontext = RequestContext(request) requestcontext['is_secure'] = request.is_secure() requestcontext['site'] = safe_get_host(request) - requestcontext['doc_url'] = self.get_doc_url_func(request) - - def get_doc_url_func(self, request): - config_file = open(settings.REPO_ROOT / "docs" / "config.ini") - config = ConfigParser.ConfigParser() - config.readfp(config_file) - - # in the future, we will detect the locale; for now, we will - # hardcode en_us, since we only have English documentation - locale = "en_us" - - def doc_url(token): - try: - return config.get(locale, token) - except ConfigParser.NoOptionError: - return config.get(locale, "default") - - return doc_url From e7c5e62da700f51e69662689758ffebf70fa1494 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Wed, 29 Jan 2014 15:28:40 -0500 Subject: [PATCH 2/2] Read from doc url mapping file at load time, rather than once per request --- cms/djangoapps/contentstore/context_processors.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cms/djangoapps/contentstore/context_processors.py b/cms/djangoapps/contentstore/context_processors.py index 1d5ac55e48..66ba685661 100644 --- a/cms/djangoapps/contentstore/context_processors.py +++ b/cms/djangoapps/contentstore/context_processors.py @@ -1,12 +1,12 @@ import ConfigParser from django.conf import settings +config_file = open(settings.REPO_ROOT / "docs" / "config.ini") +config = ConfigParser.ConfigParser() +config.readfp(config_file) + def doc_url(request): - config_file = open(settings.REPO_ROOT / "docs" / "config.ini") - config = ConfigParser.ConfigParser() - config.readfp(config_file) - # in the future, we will detect the locale; for now, we will # hardcode en_us, since we only have English documentation locale = "en_us"