Guest User

Untitled

a guest
Apr 10th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. import os
  2. import sqlite3
  3. from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash
  4.  
  5. app = Flask(__name__)
  6. app.config.from_object(__name__)
  7.  
  8. app.config.update(dict(
  9. DATABASE=os.path.join(app.root_path, 'flask.db'),
  10. SECRET_KEY='dev_key',
  11. USERNAME='root',
  12. PASSWORD='root'
  13. ))
  14.  
  15. app.config.from_envvar('FLASK_SETTING', silent=True)
  16.  
  17. def connect_db():
  18. rv = sqlite3.connect(app.config['DATABASE'])
  19. rv.row_factory = sqlite3.Row
  20.  
  21. return rv
  22.  
  23. def get_db():
  24. if not hasattr(g, 'sqlite_db'):
  25. g.sqlite_db = connect_db()
  26.  
  27. return g.sqlite_db
  28.  
  29. @app.teardown_appcontext
  30. def close_db(error):
  31. if hasattr(g, 'sqlite_db'):
  32. g.sqlite_db.close()
  33.  
  34. def init_db():
  35. db = get_db()
  36. with app.open_resource('schema.sql', mode='r') as f:
  37. db.cursor().executescript(f.read())
  38. db.commit()
  39.  
  40. @app.cli.command('initdb')
  41. def initdb_command():
  42. init_db()
  43. print('Initialized the database.')
  44.  
  45. @app.route('/')
  46. def show_entries():
  47. db = get_db()
  48. cur = db.execute('select title, text from entries order by id desc')
  49. entries = cur.fetchall()
  50.  
  51. return render_template('show_entries.html', entries=entries)
  52.  
  53. @app.route('/add', methods=['POST'])
  54. def add_entry():
  55. if not session.get('logged_in'):
  56. abort(401)
  57.  
  58. db = get_db()
  59. db.execute('insert into entries (title, text) values (?, ?)', [request.form['title'], request.form['text']])
  60. db.commit()
  61.  
  62. flash('New entry successfully posted.')
  63. return redirect(url_for('show_entries'))
  64.  
  65. @app.route('/login', methods=['GET', 'POST'])
  66. def login():
  67. error = None
  68.  
  69. if request.method == 'POST':
  70. if request.form['username'] != app.config['USERNAME']:
  71. error = 'Invalid username'
  72. elif request.form['password'] != app.config['PASSWORD']:
  73. error = 'Invalid password'
  74. else:
  75. session['logged_in'] = True
  76. flash('You are logged in.')
  77. return redirect(url_for('show_entries'))
  78.  
  79. return render_template('login.html', error=error)
  80.  
  81. @app.route('/logout')
  82. def logout():
  83. session.pop('logged_in', None)
  84. flash('You are logged out.')
  85.  
  86. return redirect(url_for('show_entries'))
Add Comment
Please, Sign In to add comment