from flask import Flask, flash, render_template, request, redirect, url_for, session, flash
from flask_sqlalchemy import SQLAlchemy
import os
from datetime import datetime

DB_NAME = 'dreamlist.db'

app = Flask(__name__)
app.config['SECRET_KEY'] = "asdfkkkkkkkallalall"
app.config['SQLALCHEMY_DATABASE_URI'] = f"sqlite:///{DB_NAME}"
db = SQLAlchemy(app)

class Users(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(85), nullable=False)
    surname = db.Column(db.String(85), nullable=False)
    email = db.Column(db.String(85), nullable=False)
    password = db.Column(db.String(155), nullable=False)
    dreams = db.relationship('Dreams', backref='dreamer')

    def __repr__(self):
        return self.name + " " + self.surname
    
class Dreams(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    dream = db.Column(db.String(85), nullable=False)
    detay = db.Column(db.String(255), nullable=False)
    quote = db.Column(db.String, nullable=False)
    date_added = db.Column(db.DateTime(155), default=datetime.utcnow)
    dreamer_id = db.Column(db.Integer, db.ForeignKey('users.id'))

@app.route("/")
def home():
    if 'email' in session:
        email = session['email']
        me = Users.query.filter_by(email=email).first()
        dreams = Dreams.query.all()
        return render_template('home.html', me=me, dreams=dreams)
    return redirect(url_for('login'))


@app.route("/register", methods=["GET", "POST"])
def register():
    if request.method == "POST":
        name = request.form.get('name')
        surname = request.form.get('surname')
        email = request.form.get('email')
        password = request.form.get('password')
        
        search = Users.query.filter_by(email=email).first()
        
        if search != None:
            flash('Bu E-posta İle Açılmış Hesap Zaten Var!')
            return render_template('register.html')
 
        new_user = Users(name=name, surname=surname, email=email, password=password)
        db.session.add(new_user)        
        db.session.commit()
        return redirect(url_for('login'))
    return render_template('register.html')

@app.route("/login", methods=["GET", "POST"])
def login():
    if 'email' in session:
        return redirect(url_for('home'))
    if request.method == "POST":
        email = request.form.get('email')
        password = request.form.get('password')
      
        search = Users.query.filter_by(email=email, password=password).first()
          
        if search is None:
            flash("Yanlış Giriş Yaptın")
            return render_template('login.html')
        
        if password == search.password:
            return redirect(url_for("home"))
    return render_template('login.html')

@app.route("/logout")
def logout():
    session.pop("email", None)
    return redirect(url_for('home'))    
        
    
@app.route("/create", methods=["GET", "POST"])
def create():
    if 'email' in session:
        email = session['email']
        me = Users.query.filter_by(email='email').first()
    if request.method == "POST":
        dream = request.form.get("job")
        detay = request.form.get("detay") 
        new_jobs = Dreams(dream=dream, detay=detay, dreamer_id=me.id)
        db.session.add(new_jobs)
        db.session.commit()
    return render_template('create.html')

@app.route("/detail")
def detail():
    return render_template('detail.html')

@app.errorhandler(404)
def error(e):
    return render_template('404.html')
    

if __name__ == "__main__":
    if not os.path.exists(DB_NAME):
        db.create_all(app=app)
        print("DATABASE OLUŞTURULDU!")
    
    app.debug = True
    app.run(debug = True)


Giriş yap sayfasında giriş yaptıktan sonra home sayfasına yönlendirmesi lazım ama yönlendirmiyor nedeni nedir ben mi yanlış yaptım da görmüyorum?