From b15736accd21d7debd3448aaaedede642d7b8654 Mon Sep 17 00:00:00 2001 From: Eskil Heyn Olsen Date: Thu, 3 Jan 2013 19:07:00 -0800 Subject: [PATCH] RegisterFormMixin can now to_dict all fields. It adds a to_dict function that uses inspect to add all wtf Field to the returned dict. This allows extensions to the register form to easily add fields that will be passed to the datastore's create_user function. --- flask_security/forms.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/flask_security/forms.py b/flask_security/forms.py index 373debc..77cc065 100644 --- a/flask_security/forms.py +++ b/flask_security/forms.py @@ -9,10 +9,12 @@ :license: MIT, see LICENSE for more details. """ +import inspect + from flask import request, current_app from flask.ext.wtf import Form as BaseForm, TextField, PasswordField, \ SubmitField, HiddenField, Required, BooleanField, EqualTo, Email, \ - ValidationError, Length + ValidationError, Length, Field from werkzeug.local import LocalProxy from .confirmable import requires_confirmation @@ -89,6 +91,10 @@ class NextFormMixin(): class RegisterFormMixin(): submit = SubmitField("Register") + def to_dict(form): + fields = inspect.getmembers(form, lambda member: isinstance(member, Field)) + return dict((key, value.data) for key, value in fields) + class SendConfirmationForm(Form, UserEmailFormMixin): """The default forgot password form""" @@ -172,10 +178,7 @@ class LoginForm(Form, NextFormMixin): class ConfirmRegisterForm(Form, RegisterFormMixin, UniqueEmailFormMixin, NewPasswordFormMixin): - def to_dict(self): - return dict(email=self.email.data, - password=self.password.data) - + pass class RegisterForm(ConfirmRegisterForm, PasswordConfirmFormMixin): pass