Advertisement
Guest User

Untitled

a guest
Aug 4th, 2017
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.18 KB | None | 0 0
  1. from flask import Flask, render_template, request, redirect, url_for, flash, session, g
  2. import FlaskApp.forms
  3.  
  4. from MySQLdb import escape_string as thwart
  5. import gc
  6. from functools import wraps
  7. from datetime import date
  8.  
  9. from flask_sqlalchemy import SQLAlchemy
  10. from werkzeug.security import generate_password_hash, check_password_hash
  11.  
  12. from flask_login import LoginManager, login_user,logout_user, login_required, current_user, UserMixin
  13.  
  14.  
  15.  
  16.  
  17. app = Flask(__name__)
  18. app.secret_key = "passwordgoeshere"
  19. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
  20. app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://direction/to/mysql"
  21.  
  22.  
  23. db = SQLAlchemy(app)
  24.  
  25.  
  26. login_manager = LoginManager()
  27. login_manager.init_app(app)
  28. login_manager.login_view = "login"
  29.  
  30. class Member(db.Model):
  31.     id = db.Column(db.Integer, primary_key=True)
  32.     email = db.Column(db.Unicode(50),unique=True)
  33.     username = db.Column(db.Unicode(20))
  34.     password = db.Column(db.Unicode(100))
  35.     join_date = db.Column(db.DateTime)
  36.     comments = db.relationship("Comment", backref="member", lazy="dynamic")
  37.  
  38. class Comment(db.Model):
  39.     id = db.Column(db.Integer, primary_key=True)
  40.     title = db.Column(db.String(80))
  41.     body = db.Column(db.String(32500))
  42.     join_date = db.Column(db.DateTime)
  43.     member_id = db.Column(db.Integer, db.ForeignKey("member.id"))
  44.  
  45.  
  46. def login_required(f):
  47.     @wraps(f)
  48.     def wrap(*args,**kwargs):
  49.         if "logged_in" in session:
  50.             return f(*args,**kwargs)
  51.         else:
  52.             flash("You need to login first")
  53.             return redirect(url_for("login_page"))
  54.     return wrap
  55.  
  56. def already_logged_in(f):
  57.     wraps(f)
  58.     def wrapper(*args,**kwargs):
  59.         if "logged_in" not in session:
  60.             return f(*args,**kwargs)
  61.         else:
  62.             flash("You are already logged in")
  63.             return redirect(url_for("frontpage"))
  64.     return wrapper
  65.  
  66.  
  67. @app.route("/login/", methods=["GET","POST"])
  68. #@already_logged_in
  69. def login_page():
  70.     form = FlaskApp.forms.LoginForm()
  71.     if request.method == "POST" and form.validate():
  72.         member = Member.query.filter_by(email=form.email.data).first()
  73.         if member:
  74.             if check_password_hash(member.password, form.password.data):
  75.                 session["logged_in"] = True
  76.                 session["id"] = member.id
  77.                 session["username"] = member.username
  78.                 flash("Succesful login")
  79.                 return redirect(url_for("frontpage"))
  80.             else:
  81.                 flash("Wrong credentials, try again")
  82.                 return redirect(url_for("login_page"))
  83.         else:
  84.             flash("Email address not found")
  85.             return redirect(url_for("login_page"))
  86.  
  87.  
  88.     return render_template("login.html",form=form)
  89.  
  90.  
  91. @app.route("/register/", methods=["GET","POST"])
  92. def register_page():
  93.     form = FlaskApp.forms.RegistrationForm()   
  94.     if request.method == "POST" and form.validate():
  95.         check_member = Member.query.filter_by(email=form.email.data).first()
  96.         check_username = Member.query.filter_by(username=form.username.data).first()
  97.         if check_member:
  98.             flash("User with that email already exists")
  99.             return redirect(url_for("register_page"))
  100.         if check_username:
  101.             flash("User with that username already exists")
  102.             return redirect(url_for("register_page"))
  103.         hashed_password = generate_password_hash(form.password.data, method="sha256")
  104.         new_member = Member(email=form.email.data,username=form.username.data, password=hashed_password,join_date=date.today())
  105.         db.session.add(new_member)
  106.         db.session.commit()
  107.         session["id"] = new_member.id
  108.         session["logged_in"] = True
  109.         session["username"] = new_member.username
  110.         flash("Succesful registration, you are now logged in")
  111.         return redirect(url_for("frontpage"))
  112.  
  113.        
  114.     return render_template("register.html",form=form)
  115.  
  116.  
  117. @app.route("/profile/",methods=["GET","POST"])
  118. @login_required
  119. def create_note():
  120.     if request.method == "POST":
  121.         title = request.form["title"]
  122.         body = request.form["body"]
  123.         comment = Comment(title=title,body=body, member_id=session['id'])
  124.         db.session.add(comment)
  125.         db.session.commit()
  126.         flash("Title and body added to the database")
  127.         return redirect(url_for("create_note"))
  128.     else:
  129.         comment = Comment.query.filter_by(member_id=session['id']).all()
  130.         return render_template("userprofile.html",comment=comment)
  131.  
  132.     return render_template("userprofile.html",comment=comment) 
  133.  
  134.  
  135. if __name__ == "__main__":
  136.     app.run(debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement