From 437f7bfeb68f0cb2a3842af69f5a9916c6a0968d Mon Sep 17 00:00:00 2001 From: Serghei MIHAI Date: Sun, 16 Feb 2014 19:16:00 +0100 Subject: [PATCH] template vars, defined in the database, used in template contexts and in apps code --- passerelle/base/admin.py | 3 ++- passerelle/base/context_processors.py | 9 +++++++++ passerelle/base/models.py | 8 ++++++++ passerelle/settings.py | 3 +++ passerelle/utils.py | 6 ++++++ 5 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 passerelle/base/context_processors.py diff --git a/passerelle/base/admin.py b/passerelle/base/admin.py index caca8fb..e553f3f 100644 --- a/passerelle/base/admin.py +++ b/passerelle/base/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin -from .models import ApiUser +from .models import ApiUser, TemplateVar admin.site.register(ApiUser) +admin.site.register(TemplateVar) diff --git a/passerelle/base/context_processors.py b/passerelle/base/context_processors.py new file mode 100644 index 0000000..6d4cfcc --- /dev/null +++ b/passerelle/base/context_processors.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- + +def template_vars(request): + """ + returns a dict with all the template vars + """ + from .models import TemplateVar + + return dict((obj.name, obj.value) for obj in TemplateVar.objects.all()) diff --git a/passerelle/base/models.py b/passerelle/base/models.py index f802dad..c38d640 100644 --- a/passerelle/base/models.py +++ b/passerelle/base/models.py @@ -19,6 +19,14 @@ class ApiUser(models.Model): return u'%s <%s>' % (self.fullname, self.username) +class TemplateVar(models.Model): + name = models.CharField(max_length=64) + value = models.CharField(max_length=128) + + def __unicode__(self): + return u'%s - %s' % (self.name, self.value) + + class InheritanceManager(ModelUtilsInheritanceManager): def get_slug(self, slug, request=None): diff --git a/passerelle/settings.py b/passerelle/settings.py index 53a46fb..ee8da78 100644 --- a/passerelle/settings.py +++ b/passerelle/settings.py @@ -114,6 +114,7 @@ TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.tz', 'django.core.context_processors.request', 'django.contrib.messages.context_processors.messages', + 'passerelle.base.context_processors.template_vars', ) @@ -202,3 +203,5 @@ try: from local_settings import * except ImportError: pass + + diff --git a/passerelle/utils.py b/passerelle/utils.py index 92cdf60..2a8b3e2 100644 --- a/passerelle/utils.py +++ b/passerelle/utils.py @@ -2,6 +2,8 @@ import json from jsonresponse import to_json, DEFAULT_DEBUG, CALLBACK_NAME, HttpResponse from django.core.serializers.json import DjangoJSONEncoder +from .base.context_processors import template_vars + class custom_to_json(to_json): def __init__(self, serializer_type, error_code = 500, raises = (), **kwargs): super(custom_to_json, self).__init__(serializer_type, error_code) @@ -29,3 +31,7 @@ class custom_to_json(to_json): return self.render_data(req, response, self.error_code) to_json = custom_to_json + +def get_template_vars(): + from django.http import HttpRequest + return template_vars(HttpRequest()) -- 1.9.0.rc3