From 1a9edf1fcb945f7f235ad5691f4958d1c4089dc0 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Wed, 4 Sep 2013 15:49:45 +0000 Subject: utils: add Unique wtforms validator The Unique validator could check, if the value of the form field does not alreadyy exists in the database for a specific field of a peewee model. --- utils.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/utils.py b/utils.py index 147f048..f414d1b 100644 --- a/utils.py +++ b/utils.py @@ -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 -- cgit v1.2.3-1-g7c22