Created
March 26, 2011 02:24
-
-
Save samrat/887965 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#all the imports | |
import sqlite3 | |
from flask import Flask, request,session, g, redirect, url_for, abort, render_template, flash | |
from contextlib import closing | |
#configuration | |
DATABASE= 'tmp/flaskr.db' | |
DEBUG= True | |
SECRET_KEY= 'development key' ##more difficult | |
USERNAME= 'admin' | |
PASSWORD= 'admin' | |
#application | |
app= Flask(__name__) | |
app.config.from_object(__name__) | |
def connect_db(): | |
return sqlite3.connect(app.config['DATABASE']) | |
def init_db(): | |
with closing(connect_db()) as db: | |
with app.open_resource('schema.sql') as f: | |
db.cursor().executescript(f.read()) | |
db.commit() | |
@app.before_request() | |
def before_request(): | |
g.db= connect_db() | |
@app.after_request() | |
def after_request(): | |
g.db.close() | |
return response | |
@app.route('/') | |
def show_entries(): | |
cur = g.db.execute('select.title, text from entries order by desc') | |
entries= [dict(title=row[0], text=row[1]) for row in cur.fetchall()] | |
return render_template('show_entries.html', entries=entries) | |
@app.route('/add', methods=['POST']) | |
def add_entry(): | |
if not session.get('logged in'): | |
abort(401) | |
g.db.execute('insert into entries (title,text) values(?, ?)', | |
[request.form['title'], | |
request.form['text']]) | |
g.db.commit() | |
flash('New entry was successfully posted') | |
return redirect(url_for('show_entries')) | |
@app.route('/login', methods=['GET', 'POST']) | |
def login(): | |
error= None | |
if request.method== 'POST': | |
if request.form['username']!=app.config['USERNAME']: | |
error='Invalid username' | |
elif request.form['password']!=app.config['PASSWORD']: | |
error='Invalid password' | |
else: | |
session['logged_in']=True | |
flash('You were logged in') | |
return redirect(url_for('show_entries')) | |
return render_template('login.html', error=error) | |
@app.route('/logout') | |
def logout(): | |
session.pop('logged_in', None) | |
flash('You were logged out') | |
return redirect(url_for('show_entries') | |
if __name__ == '__main__': | |
app.run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment