Created
June 12, 2011 16:28
-
-
Save DarkSector/1021732 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
#imports | |
from __future__ import with_statement | |
import sqlite3 | |
from flask import Flask, request,session, g, redirect, url_for, \ | |
abort, render_template, flash | |
from contextlib import closing | |
import config | |
#initialize application | |
app = Flask(__name__) | |
def connect_db(): | |
return sqlite3.connect(app.config['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(response): | |
g.db.close() | |
return response | |
@app.route('/') | |
def show_entries(): | |
cur = g.db.execute('select title, text from entries order by id 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_entries(): | |
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 ('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('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