From 3cdccd266208a9a6453ee68aea1fb29727e79756 Mon Sep 17 00:00:00 2001 From: Daniel Gomez Jurado Date: Wed, 30 Jan 2013 17:00:42 +0100 Subject: [PATCH] Finished validation function --- ngforms.py | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/ngforms.py b/ngforms.py index 0043e83..7c16ed3 100644 --- a/ngforms.py +++ b/ngforms.py @@ -1,7 +1,11 @@ import re +import webapp2 +from webapp2_extras import json + class Form(object): + field_values = {} def build(self): fields = ''.join([f.build(self) for f in self.fields]) @@ -12,7 +16,21 @@ def build(self): """ % fields def validate(self): - pass + request = webapp2.get_request() + data = json.decode(request.body) + + for f in self.fields: + vals = self.validations[f.id] + + try: + value = data[f.id] + except KeyError: + value = '' + + field_values[f.id] = value + for val in vals: + if not val.validate(self): + request.abort(403) @property def fields(self): @@ -22,8 +40,8 @@ def fields(self): def validations(self): raise NotImplemented() - def field(self, name): - return "" + def field(self, id): + return field_values[id] class Validation(object): @@ -71,7 +89,7 @@ def __init__(self, message): super(Email, self).__init__("email", message, {}) def validate(self, form): - return not re.match("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$", + return not re.match(r'^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$', form.field(self.input)) is None @@ -159,22 +177,3 @@ def build(self, form): input = '' % ''.join(input) return tmpl % input - -""" -class EditAccountForm(Form): - @property - def validations(self): - return { - "name": [Required("oops"), MinLength(4, "ops")], - } - - @property - def fields(self): - return [ - InputField(id="name", placeholder="test@example.com", type="email", - cls=["input-xlarge"], name="Nombre"), - ] - - -print EditAccountForm().build() -"""