PilznoProduction/app/users/routes.py
2024-09-17 11:07:19 +03:00

84 lines
No EOL
3.2 KiB
Python

from app import db
from app.users import users
from app.users.models import User
from app.campaigns.models import Campaign
from app.main.models import Donation
from app.users.forms import LoginForm, RegisterUserForm#, RequestResetForm, ResetPasswordForm, EditUserForm, AddUserForm
from flask import render_template, redirect, url_for, flash, request
from flask_login import login_required, login_user, current_user, logout_user
from werkzeug.security import check_password_hash, generate_password_hash
from datetime import datetime
import os
# import logging
# logging.basicConfig(filename='logs.log', encoding='utf-8', level=logging.INFO)
@users.route('/user_page/<user_id>')
@login_required
def user_page(user_id):
if not int(current_user.id) == int(user_id):
return redirect(url_for('main.homepage'))
user = User.query.filter_by(id=user_id).first()
return render_template('user_page.html',
user=user)
@users.route('/')
@users.route('/login', methods=('GET', 'POST'))
def login():
if current_user.is_authenticated:
return redirect(url_for('main.homepage'))
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if not user or not check_password_hash(user.password, form.password.data):
flash('Please check your login details and try again.', 'bad')
return redirect(url_for('users.login'))
login_user(user, remember=form.remember.data)
flash("You've been logged in successfully!", 'good')
next_page = request.args.get('next')
return redirect(next_page) if next_page else redirect(url_for('main.homepage'))
return render_template('login.html',
form=form)
@users.route('/logout')
@login_required
def logout():
logout_user()
flash('You\'ve been successfully logged out!')
return redirect(url_for('main.homepage'))
@users.route('/register_user', methods=('GET', 'POST'))
def register_user():
form = RegisterUserForm()
if form.validate_on_submit():
check_user = User.query.filter_by(email=form.email.data).first()
if check_user:
flash('That email is already in use, try logging in or resetting your password')
else:
user = User(
first_name=form.first_name.data,
last_name=form.last_name.data,
email=form.email.data,
password=generate_password_hash(form.password.data),
user_type="User",
)
db.session.add(user)
db.session.commit()
login_user(user)
flash('Succesfully Registered!')
return redirect(url_for('main.homepage'))
return render_template('register_user.html', form=form)
@users.route('/test')
def testing_route():
user = User.query.filter_by(id=1).first()
donation = Donation.query.filter_by(id=1).first()
campaign = Campaign.query.filter_by(id=1).first()
print(campaign)
return render_template('test.html',
user=user,
donation=donation,
campaign=campaign)