Я пытаюсь реализовать регистрацию пользователя и изменить форму:
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
валидаторе?