Re-tweaked page add form to preserve 'continue on normal save' functionality. This...
[philo.git] / admin / pages.py
index ede4a0d..52238da 100644 (file)
@@ -1,11 +1,11 @@
 from django.contrib import admin
 from django import forms
-from django.core.exceptions import ValidationError
-from django.template import Template as DjangoTemplate, loader, loader_tags, TemplateDoesNotExist, Context
+from django.template import Template as DjangoTemplate
 from philo.admin import widgets
 from philo.admin.base import COLLAPSE_CLASSES
 from philo.admin.nodes import ViewAdmin
 from philo.models.pages import Page, Template, Contentlet, ContentReference
+from philo.forms import TemplateForm
 
 
 class PageAdmin(ViewAdmin):
@@ -94,33 +94,6 @@ class PageAdmin(ViewAdmin):
                                        contentreference.save()
 
 
-class TemplateForm(forms.ModelForm):
-       def clean_code(self):
-               code = self.cleaned_data['code']
-               try:
-                       t = DjangoTemplate(code)
-               except Exception, e:
-                       raise ValidationError("Template code invalid. Error was: %s: %s" % (e.__class__.__name__, e))
-               
-               # make sure all extended and included templates exist.
-               def validate_template(template):
-                       for node in template.nodelist:
-                               try:
-                                       if isinstance(node, loader_tags.ExtendsNode):
-                                               extended_template = node.get_parent(Context())
-                                               validate_template(extended_template)
-                                       elif isinstance(node, loader_tags.IncludeNode):
-                                               included_template = loader.get_template(node.template_name.resolve(Context()))
-                                               validate_template(extended_template)
-                               except Exception, e:
-                                       raise ValidationError("Template code invalid. Error was: %s: %s" % (e.__class__.__name__, e))
-               validate_template(t)
-               return code
-       
-       class Meta:
-               model = Template
-
-
 class TemplateAdmin(admin.ModelAdmin):
        prepopulated_fields = {'slug': ('name',)}
        fieldsets = (