summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2013-09-04 15:49:45 +0000
committerAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2013-09-04 15:52:20 +0000
commit1a9edf1fcb945f7f235ad5691f4958d1c4089dc0 (patch)
treec005ff4a12e8d1da3226a11ea912813c1e841572
parentd9ee2c28f858a5b97d00a9e4d56a4ac4ad269265 (diff)
downloadpadlite-teams-1a9edf1fcb945f7f235ad5691f4958d1c4089dc0.tar.gz
padlite-teams-1a9edf1fcb945f7f235ad5691f4958d1c4089dc0.tar.bz2
padlite-teams-1a9edf1fcb945f7f235ad5691f4958d1c4089dc0.zip
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.
-rw-r--r--utils.py17
1 files changed, 17 insertions, 0 deletions
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