class ResetPasswordRequestForm(FlaskForm): email = StringField(lazy_('Email'), validators=[DataRequired(), Length(1, 64), Email()], render_kw={'placeholder': lazy_('Email')}) submit = SubmitField(lazy_('Reset Password')) def validate_email(self, field): if User.query.filter_by(email=field.data, enable=True).first() is None: raise ValidationError(lazy_('Unknown email address'))
class ChangeEmailForm(FlaskForm): email = StringField(lazy_('New email'), validators=[DataRequired(), Length(1, 64), Email()], render_kw={'placeholder': lazy_('New email')}) password = PasswordField(lazy_('Password'), validators=[DataRequired()], render_kw={'placeholder': lazy_('Password')}) submit = SubmitField(lazy_('Update Email Address')) def validate_email(self, field): if User.query.filter_by(email=field.data, enable=True).first(): raise ValidationError(lazy_('Email already registered'))
class ResetPasswordForm(FlaskForm): email = StringField(lazy_('Email'), validators=[DataRequired(), Length(1, 64), Email()]) password = PasswordField(lazy_('New password'), validators=[DataRequired()]) password_confirmation = \ PasswordField(lazy_('Confirm new password'), validators=[DataRequired(), EqualTo('password', message=lazy_('Passwords must match'))]) submit = SubmitField(lazy_('Reset Password')) def validate_email(self, field): if User.query.filter_by(email=field.data, enable=True).first() is None: raise ValidationError(lazy_('Unknown email address'))
class EditProfileForm(FlaskForm): real_name = StringField(lazy_('Real name'), validators=[Length(0, 64)], render_kw={'placeholder': lazy_('Real name')}) location = StringField(lazy_('Location'), validators=[Length(0, 64)], render_kw={'placeholder': lazy_('Location')}) about_me = StringField(lazy_('About me'), render_kw={'placeholder': lazy_('About me')}) submit = SubmitField(lazy_('Submit'))
class ChangePasswordForm(FlaskForm): old_password = PasswordField(lazy_('Old password'), validators=[DataRequired()], render_kw={'placeholder': lazy_('Old password')}) new_password = PasswordField(lazy_('New password'), validators=[DataRequired()], render_kw={'placeholder': lazy_('New password')}) new_password_confirmation = \ PasswordField(lazy_('Confirm new password'), validators=[DataRequired(), EqualTo('new_password', message=lazy_('Passwords must match'))], render_kw={'placeholder': lazy_('Confirm new password')}) submit = SubmitField(lazy_('Update Password'))
class LoginForm(FlaskForm): email = StringField(lazy_('Email'), validators=[DataRequired(), Length(1, 64), Email()], render_kw={'placeholder': lazy_('Email')}) password = PasswordField(lazy_('Password'), validators=[DataRequired()], render_kw={'placeholder': lazy_('Password')}) remember_me = BooleanField(lazy_('Keep me logged in')) submit = SubmitField(lazy_('Log In'))
class ArticleForm(FlaskForm): title = StringField(lazy_('Title'), validators=[DataRequired(), Length(1, 64)], render_kw={'placeholder': lazy_('Title')}) category = SelectField(lazy_('Category'), coerce=int, render_kw={'placeholder': lazy_('Category')}) tags = StringField( lazy_('Tag'), validators=[DataRequired(), Length(1, 200)], render_kw={ 'placeholder': lazy_('More than one tag should separate them by comma') }) body = PageDownField(lazy_('Article'), validators=[DataRequired()]) submit = SubmitField(lazy_('Publish')) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.category.choices = \ [(category.id, category.name) for category in Category.query.order_by(Category.name).all()]
def register_extensions(app): bootstrap.init_app(app) moment.init_app(app) db.init_app(app) mail.init_app(app) pagedown.init_app(app) babel.init_app(app) env = app.config['NAME'] if env == 'Development' or env == 'Production': sentry.init_app(app, dsn=app.config['SENTRY_DSN']) from models.user import User, AnonymousUser login_manager.init_app(app) login_manager.session_protection = 'basic' login_manager.login_view = 'auth.login' login_manager.refresh_view = 'auth.login' login_manager.login_message = lazy_('Please log in to access this page') login_manager.anonymous_user = AnonymousUser @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id))
class EditProfileAdminForm(FlaskForm): email = StringField(lazy_('Email'), validators=[DataRequired(), Length(1, 64), Email()], render_kw={'placeholder': lazy_('Email')}) username = StringField( lazy_('Username'), validators=[ DataRequired(), Length(1, 64), Regexp( '^[A-Za-z0-9_.]*$', 0, lazy_('Username must have only letters, numbers, "." or "_"')) ], render_kw={'placeholder': lazy_('Username')}) confirmed = BooleanField(lazy_('Confirmed')) role = SelectField(lazy_('Role'), coerce=int, render_kw={'placeholder': lazy_('Role')}) real_name = StringField(lazy_('Real name'), validators=[Length(0, 64)], render_kw={'placeholder': lazy_('Real name')}) location = StringField(lazy_('Location'), validators=[Length(0, 64)], render_kw={'placeholder': lazy_('Location')}) about_me = TextAreaField(lazy_('About me'), render_kw={'placeholder': lazy_('About me')}) submit = SubmitField(lazy_('Submit')) def __init__(self, user, *args, **kwargs): super(EditProfileAdminForm, self).__init__(*args, **kwargs) self.role.choices = [(role.id, role.name) for role in Role.query.order_by(Role.name).all()] self.user = user def validate_email(self, field): if field.data != self.user.email and \ User.query.filter_by(email=field.data).first(): raise ValidationError(lazy_('Email already registered')) def validate_username(self, field): if field.data != self.user.username and \ User.query.filter_by(username=field.data).first(): raise ValidationError(lazy_('Username already in use'))
def validate_email(self, field): if User.query.filter_by(email=field.data, enable=True).first() is None: raise ValidationError(lazy_('Unknown email address'))
def validate_username(self, field): if field.data != self.user.username and \ User.query.filter_by(username=field.data).first(): raise ValidationError(lazy_('Username already in use'))
def validate_email(self, field): if field.data != self.user.email and \ User.query.filter_by(email=field.data).first(): raise ValidationError(lazy_('Email already registered'))
class CommentForm(FlaskForm): body = TextAreaField( '', validators=[DataRequired(), Length(1, 200)], render_kw={'placeholder': lazy_('Limited to 200 characters')}) submit = SubmitField(lazy_('Submit'))
def validate_username(self, field): if User.query.filter_by(username=field.data, enable=True).first(): raise ValidationError(lazy_('Username already in use'))
def validate_email(self, field): if User.query.filter_by(email=field.data, enable=True).first(): raise ValidationError(lazy_('Email already registered'))
class RegisterForm(FlaskForm): email = StringField(lazy_('Email'), validators=[DataRequired(), Length(1, 64), Email()], render_kw={'placeholder': lazy_('Email')}) username = StringField(lazy_('Username'), validators=[DataRequired(), Length(1, 64), Regexp('^[A-Za-z0-9_.]+$', 0, lazy_('Username must have only' ' letters, numbers, "."' ' or "_"'))], render_kw={'placeholder': lazy_('Username')}) password = PasswordField(lazy_('Password'), validators=[DataRequired(), Regexp('^[A-Za-z0-9_.@#]+$', 0, lazy_('Password must have only' ' letters, numbers, ".",' ' "_", "@" or "#"'))], render_kw={'placeholder': lazy_('Password')}) password_confirmation = \ PasswordField(lazy_('Confirm password'), validators=[DataRequired(), EqualTo('password', message=lazy_('Passwords must match'))], render_kw={'placeholder': lazy_('Confirm password')}) submit = SubmitField(lazy_('Register')) def validate_email(self, field): if User.query.filter_by(email=field.data, enable=True).first(): raise ValidationError(lazy_('Email already registered')) def validate_username(self, field): if User.query.filter_by(username=field.data, enable=True).first(): raise ValidationError(lazy_('Username already in use'))
class WeatherForm(FlaskForm): city = StringField(lazy_('City'), validators=[DataRequired(), Length(1, 10)], render_kw={'placeholder': lazy_('City')}) submit = SubmitField(lazy_('Search'))