Skip to content

Commit a60ac98

Browse files
committed
Added dbtemplate validation to the class, to make sure one cannot enter invalid DBtemplates through the admin.
- Legacy-Id: 16100
1 parent a808636 commit a60ac98

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

ietf/dbtemplate/admin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
class DBTemplateAdmin(admin.ModelAdmin):
77
list_display = ('title', 'path',)
8+
search_fields = ('title', 'path', )
89
ordering = ('path', )
910

1011
admin.site.register(DBTemplate, DBTemplateAdmin)

ietf/dbtemplate/models.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1+
# -*- coding: utf-8 -*-
2+
# Copyright The IETF Trust 2012-2019, All Rights Reserved
3+
from __future__ import unicode_literals, print_function
4+
5+
16
from django.db import models
7+
from django.core.exceptions import ValidationError
8+
from django.template import Context
29

310
from ietf.group.models import Group
411
from ietf.name.models import DBTemplateTypeName
@@ -22,3 +29,18 @@ class DBTemplate(models.Model):
2229

2330
def __unicode__(self):
2431
return self.title
32+
33+
def clean(self):
34+
from ietf.dbtemplate.template import PlainTemplate, RSTTemplate, DjangoTemplate
35+
try:
36+
if self.type.slug == 'rst':
37+
RSTTemplate(self.content).render(Context({}))
38+
elif self.type.slug == 'django':
39+
DjangoTemplate(self.content).render(Context({}))
40+
elif self.type.slug == 'plain':
41+
PlainTemplate(self.content).render(Context({}))
42+
else:
43+
raise ValidationError("Unexpected DBTemplate.type.slug: %s" % self.type.slug)
44+
except Exception, e:
45+
raise ValidationError(e)
46+

0 commit comments

Comments
 (0)