From: Stephen Burrows Date: Tue, 19 Oct 2010 14:56:15 +0000 (-0400) Subject: Merge 'template_error_handling' bugfix. X-Git-Tag: philo-0.9~29^2~4 X-Git-Url: http://git.ithinksw.org/philo.git/commitdiff_plain/5aa5adcf276f2017c9747bc8214fb1e6ee8c82bc?ds=inline;hp=-c Merge 'template_error_handling' bugfix. --- 5aa5adcf276f2017c9747bc8214fb1e6ee8c82bc diff --combined models/pages.py index 16098d1,d6d4b10..5e77afd --- a/models/pages.py +++ b/models/pages.py @@@ -2,6 -2,7 +2,7 @@@ from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic + from django.core.exceptions import ValidationError from django.db import models from django.http import HttpResponse from django.template import TemplateDoesNotExist, Context, RequestContext, Template as DjangoTemplate, add_to_builtins as register_templatetags @@@ -82,9 -83,9 +83,9 @@@ class Page(View) def render_to_string(self, node=None, request=None, path=None, subpath=None, extra_context=None): context = {} context.update(extra_context or {}) - context.update({'page': self, 'attributes': self.attributes, 'relationships': self.relationships}) + context.update({'page': self, 'attributes': self.attributes}) if node and request: - context.update({'node': node, 'attributes': self.attributes_with_node(node), 'relationships': self.relationships_with_node(node)}) + context.update({'node': node, 'attributes': self.attributes_with_node(node)}) page_about_to_render_to_string.send(sender=self, node=node, request=request, extra_context=context) string = self.template.django_template.render(RequestContext(request, context)) else: @@@ -99,6 -100,24 +100,24 @@@ def __unicode__(self): return self.title + def clean_fields(self, exclude=None): + try: + super(Page, self).clean_fields(exclude) + except ValidationError, e: + errors = e.message_dict + else: + errors = {} + + if 'template' not in errors and 'template' not in exclude: + try: + self.template.clean_fields() + self.template.clean() + except ValidationError, e: + errors['template'] = e.messages + + if errors: + raise ValidationError(errors) + class Meta: app_label = 'philo'