<gh_stars>0
from flask import render_template, flash, request, redirect, url_for
from datetime import datetime
from app import app, db
from app.forms import LoginForm, RegistrationForm, EditProfileForm, SubmitBookForm
from flask_login import current_user, login_user, logout_user, login_required
from app.models import User, Books, History




@app.before_request
def before_request():
    if current_user.is_authenticated:
        current_user.last_seen = datetime.utcnow()
        db.session.commit()


@app.route('/')
@app.route('/index')
@login_required
def index():
    books = Books.query.order_by(Books.time_stamp.desc())
    history = History.query.filter_by(type=True)


    return render_template('index.html', title='Home', books=books, history=history)





@app.route('/login', methods=['GET', 'POST'])
def login():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username=form.username.data).first()
        if user is None or not user.check_password(form.password.data):
            flash('Invalid username or password')
            return redirect(url_for('login'))
        login_user(user, remember=form.remember_me.data)

        return redirect('index')
    return render_template('login.html', title='Sign In', form=form)


@app.route('/logout')
def logout():
    logout_user()
    return redirect(url_for('index'))


@app.route('/register', methods=['GET', 'POST'])
def register():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    form = RegistrationForm()
    if form.validate_on_submit():
        user = User(username=form.username.data, email=form.email.data)
        user.set_password(form.password.data)
        db.session.add(user)
        db.session.commit()
        flash('Congratulations, you are now a registered user!')
        return redirect(url_for('login'))
    return render_template('register.html', title='Register', form=form)




@app.route('/send', methods=['GET','POST'])
@login_required
def send():
    form = SubmitBookForm()

    if form.validate_on_submit():
        title = Books(title=form.title.data, author=form.author.data, pages=form.pages.data, cost=form.cost.data,
                     description=form.description.data, status=True,sender=current_user)
        db.session.add(title)
        db.session.commit()

        title2 = History(title=form.title.data, author=form.author.data, pages=form.pages.data, cost=form.cost.data,
                         type=True,exchanger=current_user)
        db.session.add(title2)
        db.session.commit()




        flash("Your book was accepted, drop the book off at Aula 1p")
        return redirect(url_for('send'))
    return render_template('send.html', title='Submit your old book', form=form)







@app.route('/user/<username>')
@login_required
def user(username):
    user = User.query.filter_by(username=username).first_or_404()
    posts = [
        {'author': user, 'body': 'Test post #1'},
        {'author': user, 'body': 'Test post #2'}
    ]

    return render_template('user.html', user=user, posts=posts)



@app.route('/edit_profile', methods=['GET', 'POST'])
@login_required
def edit_profile():
    form = EditProfileForm(current_user.username)
    if form.validate_on_submit():
        current_user.username = form.username.data
        current_user.about_me = form.about_me.data
        db.session.commit()
        flash('Your changes have been saved.')
        return redirect(url_for('edit_profile'))
    elif request.method == 'GET':
        form.username.data = current_user.username
        form.about_me.data = current_user.about_me
    return render_template('edit_profile.html', title='Edit Profile',
                           form=form)

from flask import render_template, flash, request, redirect, url_for
from datetime import datetime
from app import app, db
from app.forms import LoginForm, RegistrationForm, EditProfileForm, SubmitBookForm
from flask_login import current_user, login_user, logout_user, login_required
from app.models import User, Books, History




@app.before_request
def before_request():
    if current_user.is_authenticated:
        current_user.last_seen = datetime.utcnow()
        db.session.commit()


@app.route('/')
@app.route('/index')
@login_required
def index():
    books = Books.query.order_by(Books.time_stamp.desc())
    history = History.query.filter_by(type=True)


    return render_template('index.html', title='Home', books=books, history=history)





@app.route('/login', methods=['GET', 'POST'])
def login():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username=form.username.data).first()
        if user is None or not user.check_password(form.password.data):
            flash('Invalid username or password')
            return redirect(url_for('login'))
        login_user(user, remember=form.remember_me.data)

        return redirect('index')
    return render_template('login.html', title='Sign In', form=form)


@app.route('/logout')
def logout():
    logout_user()
    return redirect(url_for('index'))


@app.route('/register', methods=['GET', 'POST'])
def register():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    form = RegistrationForm()
    if form.validate_on_submit():
        user = User(username=form.username.data, email=form.email.data)
        user.set_password(form.password.data)
        db.session.add(user)
        db.session.commit()
        flash('Congratulations, you are now a registered user!')
        return redirect(url_for('login'))
    return render_template('register.html', title='Register', form=form)




@app.route('/send', methods=['GET','POST'])
@login_required
def send():
    form = SubmitBookForm()

    if form.validate_on_submit():
        title = Books(title=form.title.data, author=form.author.data, pages=form.pages.data, cost=form.cost.data,
                     description=form.description.data, status=True,sender=current_user)
        db.session.add(title)
        db.session.commit()

        title2 = History(title=form.title.data, author=form.author.data, pages=form.pages.data, cost=form.cost.data,
                         type=True,exchanger=current_user)
        db.session.add(title2)
        db.session.commit()




        flash("Your book was accepted, drop the book off at Aula 1p")
        return redirect(url_for('send'))
    return render_template('send.html', title='Submit your old book', form=form)







@app.route('/user/<username>')
@login_required
def user(username):
    user = User.query.filter_by(username=username).first_or_404()
    posts = [
        {'author': user, 'body': 'Test post #1'},
        {'author': user, 'body': 'Test post #2'}
    ]

    return render_template('user.html', user=user, posts=posts)



@app.route('/edit_profile', methods=['GET', 'POST'])
@login_required
def edit_profile():
    form = EditProfileForm(current_user.username)
    if form.validate_on_submit():
        current_user.username = form.username.data
        current_user.about_me = form.about_me.data
        db.session.commit()
        flash('Your changes have been saved.')
        return redirect(url_for('edit_profile'))
    elif request.method == 'GET':
        form.username.data = current_user.username
        form.about_me.data = current_user.about_me
    return render_template('edit_profile.html', title='Edit Profile',
                           form=form)
#1'}, #2'}