summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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