flask-настройка формы пользователя

#python #flask #flask-user

#python #flask #flask-пользователь

Вопрос:

Класс формы Flask-user ResendEmailConfirmationForm не проверяет электронную почту пользователя (https://github.com/lingthio/Flask-User/blob/master/flask_user/forms.py ) как и другие формы класса, такие как ForgotPasswordForm , который включает в себя следующий метод проверки:

 def validate_email(form, field):
        user_manager =  current_app.user_manager
        if user_manager.USER_SHOW_EMAIL_DOES_NOT_EXIST:
            user, user_email = user_manager.db_manager.get_user_and_user_email_by_email(field.data)
            if not user:
                raise ValidationError(_('%(username_or_email)s does not exist', username_or_email=_('Email')))
 

Я хочу добавить этот фрагмент проверки в ResendEmailConfirmationForm, используя метод настройки, который они имеют в своих документах (https://flask-user.readthedocs.io/en/latest/customizing_forms.html#customizingformvalidators ):

В forms.py файл, я добавил следующее:

 from flask_user.forms import ResendEmailConfirmationForm
from flask import current_app
from flask_user import UserManager
from wtforms import ValidationError

class CustomResendEmailConfirmationForm(ResendEmailConfirmationForm):

    def validate_email(form, field):
        user_manager =  current_app.user_manager
        
        user, user_email = user_manager.db_manager.get_user_and_user_email_by_email(field.data)
        print(user, user_email)
        if not user:
            raise ValidationError(_('%(email)s does not exist', email=_('Email')))

class CustomUserManager(UserManager):

    def customize(self, app):
        # Configure customized forms
        self.ResendEmailConfirmationForm = CustomResendEmailConfirmationForm
 

В init.py файл, который я заменил:

 user_manager = UserManager(app, db, User)
 

с

 from um_project.forms import CustomUserManager
....
user_manager = CustomUserManager(app, db, User)

   
 

Но по какой-то причине новый метод проверки не наследуется. Я не знаю, чего мне не хватает.
Может кто-нибудь помочь мне разобраться? Спасибо!

Комментарии:

1. Смотрите github.com/lingthio/Flask-User/issues/328 для возможного ответа