formencode UniqueEmail валидатор

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

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())

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

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

0 ответов

Другие вопросы по тегам