diff options
Diffstat (limited to 'utils.py')
-rw-r--r-- | utils.py | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -1,5 +1,6 @@ from functools import wraps from flask import request, render_template +from wtforms import ValidationError # using http://flask.pocoo.org/docs/patterns/viewdecorators/ def templated(template=None): @@ -18,3 +19,19 @@ def templated(template=None): return render_template(template_name, **ctx) return decorated_function return decorator + +class Unique(object): + """ validator that checks field uniqueness """ + def __init__(self, model, field, message=None): + self.model = model + self.field = field + if not message: + message = u'This element already exists.' + self.message = message + + def __call__(self, form, field): + try: + self.model.get(self.field == field.data) + raise ValidationError(self.message) + except self.model.DoesNotExist: + pass |