def home(): page = request.args.get('page', 1, type=int) posts = Post.query.order_by(Post.date_posted.desc()).\ paginate(per_page=4, page=page) return render_template('home.html', posts=posts, title='RoyRuach Home', num_registered=User.get_num_registered())
def user_reminders(): page = request.args.get('page', 1, type=int) user = User.query.filter_by(username=current_user.username).first_or_404() reminders = Reminder.query.filter_by(author=user).order_by( Reminder.date_created.desc()).paginate(per_page=5, page=page) return render_template('user_reminders.html', reminders=reminders, user=user, num_registered=User.get_num_registered())
def user_posts(username): page = request.args.get('page', 1, type=int) user = User.query.filter_by(username=username).first_or_404() posts = Post.query.filter_by(author=user).order_by( Post.date_posted.desc()).paginate(per_page=4, page=page) return render_template('user_posts.html', posts=posts, user=user, num_registered=User.get_num_registered())
def reset_request(): if current_user.is_authenticated: return redirect(url_for('main.home')) form = RequestResetForm() if form.validate_on_submit(): user = User.query.filter_by(email=form.email.data).first() send_reset_email(user) flash(f'Reset password email was sent to {form.email.data}', 'info') return redirect(url_for('users.login')) return render_template('reset_request.html', form=form, title='Reset Password', num_registered=User.get_num_registered())
def new_post(): post_form = PostForm() if post_form.validate_on_submit(): post = Post(title=post_form.title.data, content=post_form.content.data, author=current_user) db.session.add(post) db.session.commit() flash('Post was created', 'success') return redirect(url_for('main.home')) return render_template('create_post.html', title='New Post', form=post_form, legend='New Post', num_registered=User.get_num_registered())
def new_reminder(): form = ReminderForm() if form.validate_on_submit(): reminder_object = Reminder(title=form.title.data, duration_sec=form.duration_sec.data, author=current_user) db.session.add(reminder_object) db.session.commit() flash('reminder was created', 'success') return redirect( url_for('remainders.reminder', reminder_id=reminder_object.id)) return render_template('create_reminder.html', title='New reminder', form=form, legend='New reminder', num_registered=User.get_num_registered())
def login(): if current_user.is_authenticated: return redirect(url_for('main.home')) login_form = LoginForm() if login_form.validate_on_submit(): user = User.query.filter_by(email=login_form.email.data).first() if user and bcrypt.check_password_hash(user.password, login_form.password.data): login_user(user, remember=login_form.remember.data) next_page = request.args.get('next') return redirect(next_page) if next_page else redirect('home') else: flash(f'Check email or password', 'danger') return render_template('login.html', title='Login', form=login_form, num_registered=User.get_num_registered())
def register(): if current_user.is_authenticated: return redirect(url_for('main.home')) register_form = RegistrationForm() if register_form.validate_on_submit(): hashed_password = bcrypt.generate_password_hash( register_form.password.data).decode('utf-8') user = User(username=register_form.username.data, email=register_form.email.data, password=hashed_password) db.session.add(user) db.session.commit() flash(f'Account created for {register_form.username.data}!', 'success') return redirect(url_for('users.login')) return render_template('register.html', title='Register', form=register_form, num_registered=User.get_num_registered())
def reset_token(token): if current_user.is_authenticated: return redirect(url_for('main.home')) user = User.query.filter_by(id=User.verify_reset_token(token)).first() if not user: flash('Invalid or expired token ', 'warning') return redirect(url_for('users.reset_request')) form = ResetPasswordForm() if form.validate_on_submit(): hashed_password = bcrypt.generate_password_hash( form.password.data).decode('utf-8') user.password = hashed_password db.session.commit() flash(f'Password for {user.username} was updated!', 'success') return redirect(url_for('users.login')) return render_template('reset_token.html', form=form, num_registered=User.get_num_registered())
def update_post(post_id): post_object = Post.query.get_or_404(post_id) if post_object.author != current_user: abort(403) post_form = PostForm() if post_form.validate_on_submit(): post_object.title = post_form.title.data post_object.content = post_form.content.data db.session.commit() flash('Post was updated', 'success') return redirect(url_for('posts.post', post_id=post_object.id)) elif request.method == 'GET': post_form.title.data = post_object.title post_form.content.data = post_object.content return render_template('create_post.html', title='Update Post', form=post_form, legend='Update Post', num_registered=User.get_num_registered())
def about(): abouts = [{ 'author': 'Roy Ruach', 'title': 'Blog and Reminders home page', 'content': 'This page was created by Roy Ruach using python and ' 'flask.\nThe site was created in assistance with Corey ' 'Schafer Youtube flask tutorial.\nUsing this page you ' 'can register with your email and send yourself future' ' notifications via E-mail', 'date_posted': 'October 26, 2020' }] return render_template('about.html', posts=abouts, title='About Page', num_registered=User.get_num_registered())
def update_reminder(reminder_id): reminder_object = Reminder.query.get_or_404(reminder_id) if reminder_object.author != current_user: abort(403) form = ReminderForm() if form.validate_on_submit(): reminder_object.title = form.title.data reminder_object.duration_sec = form.duration_sec.data db.session.commit() flash('reminder was updated', 'success') return redirect( url_for('remainders.reminder', reminder_id=reminder_object.id)) elif request.method == 'GET': form.title.data = reminder_object.title form.duration_sec.data = reminder_object.duration_sec return render_template('create_reminder.html', title='Update reminder', form=form, legend='Update reminder', num_registered=User.get_num_registered())
def account(): update_account_form = UpdateAccountForm() if request.method == 'GET': update_account_form.username.data = current_user.username update_account_form.email.data = current_user.email elif update_account_form.validate_on_submit(): if update_account_form.picture.data: picture_file = save_picture(update_account_form.picture.data) current_user.image_file = picture_file current_user.username = update_account_form.username.data current_user.email = update_account_form.email.data db.session.commit() flash('your account has been updated', 'success') return redirect(url_for('users.account')) image_file = url_for('static', filename='profile_pics/' + current_user.image_file) return render_template('account.html', title='Account', image_file=image_file, form=update_account_form, num_registered=User.get_num_registered())
def post(post_id): post_object = Post.query.get_or_404(post_id) return render_template('post.html', title=post_object.title, post=post_object, num_registered=User.get_num_registered())
def reminder(reminder_id): reminder_object = Reminder.query.get_or_404(reminder_id) return render_template('reminder.html', title=reminder_object.title, reminder=reminder_object, num_registered=User.get_num_registered())