Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import Flask, render_template, request, redirect, url_for, flash, session, g
- import FlaskApp.forms
- from MySQLdb import escape_string as thwart
- import gc
- from functools import wraps
- from datetime import date
- from flask_sqlalchemy import SQLAlchemy
- from werkzeug.security import generate_password_hash, check_password_hash
- from flask_login import LoginManager, login_user,logout_user, login_required, current_user, UserMixin
- app = Flask(__name__)
- app.secret_key = "passwordgoeshere"
- app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
- app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://direction/to/mysql"
- db = SQLAlchemy(app)
- login_manager = LoginManager()
- login_manager.init_app(app)
- login_manager.login_view = "login"
- class Member(db.Model):
- id = db.Column(db.Integer, primary_key=True)
- email = db.Column(db.Unicode(50),unique=True)
- username = db.Column(db.Unicode(20))
- password = db.Column(db.Unicode(100))
- join_date = db.Column(db.DateTime)
- comments = db.relationship("Comment", backref="member", lazy="dynamic")
- class Comment(db.Model):
- id = db.Column(db.Integer, primary_key=True)
- title = db.Column(db.String(80))
- body = db.Column(db.String(32500))
- join_date = db.Column(db.DateTime)
- member_id = db.Column(db.Integer, db.ForeignKey("member.id"))
- def login_required(f):
- @wraps(f)
- def wrap(*args,**kwargs):
- if "logged_in" in session:
- return f(*args,**kwargs)
- else:
- flash("You need to login first")
- return redirect(url_for("login_page"))
- return wrap
- def already_logged_in(f):
- wraps(f)
- def wrapper(*args,**kwargs):
- if "logged_in" not in session:
- return f(*args,**kwargs)
- else:
- flash("You are already logged in")
- return redirect(url_for("frontpage"))
- return wrapper
- @app.route("/login/", methods=["GET","POST"])
- #@already_logged_in
- def login_page():
- form = FlaskApp.forms.LoginForm()
- if request.method == "POST" and form.validate():
- member = Member.query.filter_by(email=form.email.data).first()
- if member:
- if check_password_hash(member.password, form.password.data):
- session["logged_in"] = True
- session["id"] = member.id
- session["username"] = member.username
- flash("Succesful login")
- return redirect(url_for("frontpage"))
- else:
- flash("Wrong credentials, try again")
- return redirect(url_for("login_page"))
- else:
- flash("Email address not found")
- return redirect(url_for("login_page"))
- return render_template("login.html",form=form)
- @app.route("/register/", methods=["GET","POST"])
- def register_page():
- form = FlaskApp.forms.RegistrationForm()
- if request.method == "POST" and form.validate():
- check_member = Member.query.filter_by(email=form.email.data).first()
- check_username = Member.query.filter_by(username=form.username.data).first()
- if check_member:
- flash("User with that email already exists")
- return redirect(url_for("register_page"))
- if check_username:
- flash("User with that username already exists")
- return redirect(url_for("register_page"))
- hashed_password = generate_password_hash(form.password.data, method="sha256")
- new_member = Member(email=form.email.data,username=form.username.data, password=hashed_password,join_date=date.today())
- db.session.add(new_member)
- db.session.commit()
- session["id"] = new_member.id
- session["logged_in"] = True
- session["username"] = new_member.username
- flash("Succesful registration, you are now logged in")
- return redirect(url_for("frontpage"))
- return render_template("register.html",form=form)
- @app.route("/profile/",methods=["GET","POST"])
- @login_required
- def create_note():
- if request.method == "POST":
- title = request.form["title"]
- body = request.form["body"]
- comment = Comment(title=title,body=body, member_id=session['id'])
- db.session.add(comment)
- db.session.commit()
- flash("Title and body added to the database")
- return redirect(url_for("create_note"))
- else:
- comment = Comment.query.filter_by(member_id=session['id']).all()
- return render_template("userprofile.html",comment=comment)
- return render_template("userprofile.html",comment=comment)
- if __name__ == "__main__":
- app.run(debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement