from flask_wtf import FlaskForm from wtforms import (BooleanField, PasswordField, StringField, SubmitField, ValidationError) from wtforms.validators import DataRequired, Email, EqualTo class EditEmailForm(FlaskForm): email = StringField('New email', validators=[Email(), DataRequired()]) save_email = SubmitField('Save email') class EditGeneralSettingsForm(FlaskForm): dark_mode = BooleanField('Dark mode') save_settings = SubmitField('Save settings') class EditPasswordForm(FlaskForm): current_password = PasswordField('Current password', validators=[DataRequired()]) password = PasswordField( 'New password', validators=[DataRequired(), EqualTo('password_confirmation', message='Passwords must match.')] ) password_confirmation = PasswordField( 'Password confirmation', validators=[DataRequired(), EqualTo('password', message='Passwords must match.')] ) save_password = SubmitField('Save password') def __init__(self, user, *args, **kwargs): super(EditPasswordForm, self).__init__(*args, **kwargs) self.user = user def validate_current_password(self, field): if not self.user.verify_password(field.data): raise ValidationError('Invalid password.')