formencode UniqueEmail валидатор - PullRequest
       17

formencode UniqueEmail валидатор

0 голосов
/ 01 сентября 2011

Я пытаюсь реализовать регистрацию пользователя и изменить форму:

class UniqueEmail(formencode.FancyValidator):
     def _to_python(self, value, state):
         if value in (email for (email, ) in DBSession.query(User.email)):
             raise Invalid('Email already registered. '
                'A single account per email is allowed', value, state)
         return value

class UserEditData(formencode.Schema):
    name = validators.String(not_empty=True)
    email = All(validators.Email(not_empty=True),
                UniqueEmail())

Работает безупречно при регистрации, но при редактировании , если пользователь сохраняетэлектронная почта без изменений, я получаю (вполне очевидно) недопустимое исключение, так как электронная почта уже в базе данных.

У меня есть текущий user доступный (через request.user), поэтому я могу пропустить1014 * из запроса, но как мне сделать user доступным в UniqueEmail валидаторе?

...