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
валидатор?