summaryrefslogtreecommitdiff
path: root/django/template/context_processors.py
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2014-12-02 23:23:51 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2014-12-28 17:00:07 +0100
commit92e8f1f30223d95c0e71ee6ace7bdc476c81abbd (patch)
tree19139953edec69f849b0f1ea32821fdc4f38c491 /django/template/context_processors.py
parentc599f233b17d3890df8f648f8ead25141c21495c (diff)
Moved context_processors from django.core to django.template.
Diffstat (limited to 'django/template/context_processors.py')
-rw-r--r--django/template/context_processors.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/django/template/context_processors.py b/django/template/context_processors.py
new file mode 100644
index 0000000000..e5d61fdb16
--- /dev/null
+++ b/django/template/context_processors.py
@@ -0,0 +1,85 @@
+"""
+A set of request processors that return dictionaries to be merged into a
+template context. Each function takes the request object as its only parameter
+and returns a dictionary to add to the context.
+
+These are referenced from the setting TEMPLATE_CONTEXT_PROCESSORS and used by
+RequestContext.
+"""
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.middleware.csrf import get_token
+from django.utils import six
+from django.utils.encoding import smart_text
+from django.utils.functional import lazy
+
+
+def csrf(request):
+ """
+ Context processor that provides a CSRF token, or the string 'NOTPROVIDED' if
+ it has not been provided by either a view decorator or the middleware
+ """
+ def _get_val():
+ token = get_token(request)
+ if token is None:
+ # In order to be able to provide debugging info in the
+ # case of misconfiguration, we use a sentinel value
+ # instead of returning an empty dict.
+ return 'NOTPROVIDED'
+ else:
+ return smart_text(token)
+ _get_val = lazy(_get_val, six.text_type)
+
+ return {'csrf_token': _get_val()}
+
+
+def debug(request):
+ """
+ Returns context variables helpful for debugging.
+ """
+ context_extras = {}
+ if settings.DEBUG and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
+ context_extras['debug'] = True
+ from django.db import connection
+ # Return a lazy reference that computes connection.queries on access,
+ # to ensure it contains queries triggered after this function runs.
+ context_extras['sql_queries'] = lazy(lambda: connection.queries, list)
+ return context_extras
+
+
+def i18n(request):
+ from django.utils import translation
+
+ context_extras = {}
+ context_extras['LANGUAGES'] = settings.LANGUAGES
+ context_extras['LANGUAGE_CODE'] = translation.get_language()
+ context_extras['LANGUAGE_BIDI'] = translation.get_language_bidi()
+
+ return context_extras
+
+
+def tz(request):
+ from django.utils import timezone
+
+ return {'TIME_ZONE': timezone.get_current_timezone_name()}
+
+
+def static(request):
+ """
+ Adds static-related context variables to the context.
+
+ """
+ return {'STATIC_URL': settings.STATIC_URL}
+
+
+def media(request):
+ """
+ Adds media-related context variables to the context.
+
+ """
+ return {'MEDIA_URL': settings.MEDIA_URL}
+
+
+def request(request):
+ return {'request': request}