Guest User

Untitled

a guest
Sep 10th, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.94 KB | None | 0 0
  1. # imports
  2. import sqlite3
  3. from flask import Flask, request, session, g, redirect, \
  4.      abort, url_for, render_template, flash
  5.  
  6. # config
  7. DATABASE = 'static/flaskr.db'
  8. DEBUG = True
  9. SECRET_KEY = 'DEVKEY'
  10. USERNAME = 'admin'
  11. PASSWORD = 'dragon'
  12.  
  13. # init app
  14. app = Flask(__name__)
  15. app.config.from_object(__name__)
  16.  
  17. # connect to database
  18. def connect_to_db():
  19.     return sqlite3.connect(app.config['DATABASE'])
  20.  
  21. @app.before_request
  22. def before_request():
  23.     g.db = connect_to_db()
  24.  
  25. @app.teardown_request
  26. def teardown_request(exception):
  27.     g.db.close()
  28.  
  29. # show titles and articles and send to template
  30. @app.route('/')
  31. def show_entries():
  32.     cur = g.db.execute('SELECT title, text FROM entries order by id desc')
  33.     entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()]
  34.     return render_template('show_entries.html', entries=entries)
  35.  
  36. # add entry to db -> checks if user is logged in first
  37. @app.route('/add', methods=['POST'])
  38. def add_entry():
  39.     if not session.get('logged_in'):
  40.         abort(401)
  41.     g.db.execute('INSERT INTO entries (title, text) values (?, ?)', [request.form['title'], request.form['text']])
  42.     flash('New entry posted successfully!')
  43.     return redirect(url_for('show_entries'))
  44.  
  45. @app.route('/login', methods=['GET', 'POST'])
  46. def login():
  47.     error = None
  48.     if request.method == 'POST':
  49.         if request.form['username'] != app.config['USERNAME']:
  50.             error = 'Invalid username'
  51.         elif request.form['password'] != app.config['PASSWORD']:
  52.             error = 'Invalid password'
  53.         else:
  54.             session['logged_in'] = True
  55.             flash('You were logged in')
  56.             return redirect(url_for('show_entries'))
  57.     return render_template('login.html', error=error)
  58.  
  59. @app.route('/logout')
  60. def logout():
  61.     session.pop('logged_in', None)
  62.     flash('You were logged out')
  63.     return redirect(url_for(show_entries))
  64.  
  65. if __name__ == '__main__':
  66.     app.run()
Add Comment
Please, Sign In to add comment