| 
									
										
										
										
											2024-08-01 03:33:45 -07:00
										 |  |  | from flask_wtf import FlaskForm | 
					
						
							| 
									
										
										
										
											2024-08-03 04:59:05 -07:00
										 |  |  | from wtforms import StringField, PasswordField, BooleanField, SubmitField, TextAreaField | 
					
						
							|  |  |  | from wtforms.validators import DataRequired, ValidationError, Email, EqualTo, Length | 
					
						
							| 
									
										
										
										
											2024-08-01 11:10:49 -07:00
										 |  |  | import sqlalchemy as sa | 
					
						
							|  |  |  | from app import db | 
					
						
							|  |  |  | from app.models import User | 
					
						
							| 
									
										
										
										
											2024-08-01 03:33:45 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | class LoginForm(FlaskForm): | 
					
						
							|  |  |  |     username = StringField('Username', validators=[DataRequired()]) | 
					
						
							|  |  |  |     password = PasswordField('Pasword', validators=[DataRequired()]) | 
					
						
							|  |  |  |     remember_me = BooleanField('Remember Me') | 
					
						
							|  |  |  |     submit = SubmitField('Sign In') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-01 11:10:49 -07:00
										 |  |  | class RegistrationForm(FlaskForm): | 
					
						
							|  |  |  |     username = StringField('Username', validators=[DataRequired()]) | 
					
						
							|  |  |  |     email = StringField('Email', validators=[DataRequired(), Email()]) | 
					
						
							|  |  |  |     password = PasswordField('Password', validators=[DataRequired()]) | 
					
						
							|  |  |  |     password2 = PasswordField('Repeat Password', validators=[DataRequired()]) | 
					
						
							|  |  |  |     submit = SubmitField('Register') | 
					
						
							|  |  |  |     def validate_username(self, username): | 
					
						
							|  |  |  |         user = db.session.scalar(sa.select(User).where(User.username == username.data)) | 
					
						
							|  |  |  |         if user is not None: | 
					
						
							|  |  |  |             raise ValidationError('Please use a different username.') | 
					
						
							|  |  |  |     def validate_email(self, email): | 
					
						
							|  |  |  |         user = db.session.scalar(sa.select(User).where(User.email == email.data)) | 
					
						
							|  |  |  |         if user is not None: | 
					
						
							|  |  |  |             raise ValidationError('Please use a different email address.') | 
					
						
							| 
									
										
										
										
											2024-08-03 04:59:05 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-05 00:59:01 -07:00
										 |  |  | class ResetPasswordForm(FlaskForm): | 
					
						
							|  |  |  |     password = PasswordField('Password', validators=[DataRequired()]) | 
					
						
							|  |  |  |     password2 = PasswordField('Repeat Password', validators=[DataRequired()]) | 
					
						
							|  |  |  |     submit = SubmitField('Request Reset') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-03 04:59:05 -07:00
										 |  |  | class EditProfileForm(FlaskForm): | 
					
						
							|  |  |  |     username = StringField('Username', validators=[DataRequired()]) | 
					
						
							|  |  |  |     about_me = TextAreaField('About me', validators=[Length(min=0, max=140)]) | 
					
						
							|  |  |  |     submit = SubmitField('Update') | 
					
						
							| 
									
										
										
										
											2024-08-03 11:45:37 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self, original_username, *args, **kwargs): | 
					
						
							|  |  |  |         super().__init__(*args, **kwargs) | 
					
						
							|  |  |  |         self.original_username = original_username | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def validate_username(self, username): | 
					
						
							|  |  |  |         if username.data != self.original_username: | 
					
						
							|  |  |  |             user = db.session.scalar(sa.select(User).where(User.username == username.data)) | 
					
						
							|  |  |  |             if user is not None: | 
					
						
							|  |  |  |                 raise ValidationError('Please use a different username.') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-04 22:00:07 -07:00
										 |  |  | class ResetPasswordRequestForm(FlaskForm): | 
					
						
							|  |  |  |     email = StringField('Email', validators=[DataRequired(), Email()]) | 
					
						
							|  |  |  |     submit = SubmitField('Request Password Reset') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-04 13:14:58 -07:00
										 |  |  | class PostForm(FlaskForm): | 
					
						
							|  |  |  |     post = TextAreaField('Post:', validators=[DataRequired(), Length(min=1, max=140)]) | 
					
						
							|  |  |  |     submit = SubmitField('Submit') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-04 09:40:09 -07:00
										 |  |  | class EmptyForm(FlaskForm): | 
					
						
							|  |  |  |     submit = SubmitField('Submit') | 
					
						
							| 
									
										
										
										
											2024-08-03 11:45:37 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 |