aboutsummaryrefslogtreecommitdiffstats
path: root/famille.py
diff options
context:
space:
mode:
authorThibaut Horel <thibaut.horel@gmail.com>2012-11-07 01:27:36 +0100
committerThibaut Horel <thibaut.horel@gmail.com>2012-11-07 01:27:36 +0100
commitdf25a48abd69292af55f3356a48a737da829cd20 (patch)
treefdb3ba7d659ee5dd379eb41b284bac6832a2d729 /famille.py
parente143cf83baf0c50da27251cee4f5e3a8929586a6 (diff)
downloadfamille-flask-df25a48abd69292af55f3356a48a737da829cd20.tar.gz
Add basic news feature: list, show, add
Diffstat (limited to 'famille.py')
-rw-r--r--famille.py46
1 files changed, 34 insertions, 12 deletions
diff --git a/famille.py b/famille.py
index 5a09c5e..4739f25 100644
--- a/famille.py
+++ b/famille.py
@@ -10,11 +10,6 @@ import hashlib
app = Flask(__name__)
app.config.from_envvar('CONF')
-def connect_db():
- conn = sqlite3.connect(app.config['DATABASE'])
- conn.row_factory = sqlite3.Row
- return conn
-
def query_db(query, args=(), one=False):
cur = g.db.execute(query, args)
rv = cur.fetchone() if one else cur.fetchall()
@@ -23,7 +18,9 @@ def query_db(query, args=(), one=False):
@app.before_request
def before_request():
- g.db = connect_db()
+ conn = sqlite3.connect(app.config['DATABASE'])
+ conn.row_factory = sqlite3.Row
+ g.db = conn
@app.teardown_appcontext
def close_db_connection(exception):
@@ -33,7 +30,7 @@ def close_db_connection(exception):
def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
- if 'username' not in session:
+ if 'name' not in session:
return redirect(url_for('login', next=request.url))
return f(*args, **kwargs)
return decorated_function
@@ -41,12 +38,36 @@ def login_required(f):
@app.route('/')
@login_required
def main():
- return redirect(url_for('show_news'))
+ return redirect(url_for('list_news'))
-@app.route('/nouvelles')
-def show_news():
- return render_template("toto.html")
+@app.route('/news/')
+@login_required
+def list_news():
+ print "toto"
+ news = query_db("SELECT * FROM news LEFT JOIN users ON news.user_id = users.id")
+ return render_template("news/list.html", news=news)
+@app.route('/news/add/', methods=['GET', 'POST'])
+@login_required
+def add_news():
+ if request.method == 'POST':
+ cur = g.db.execute("INSERT INTO news ('title', 'content', 'user_id') "
+ "VALUES (?, ?, ?)",
+ (request.form['title'], request.form['content'],
+ session['user_id']))
+ news_id = cur.lastrowid
+ g.db.commit()
+ return redirect(url_for('show_news', news_id=news_id))
+ elif request.method == 'GET':
+ return render_template("news/add.html")
+
+@app.route('/news/<int:news_id>/')
+@login_required
+def show_news(news_id):
+ news = query_db("SELECT * FROM news LEFT JOIN users ON news.user_id = users.id "
+ "WHERE news.id = ?", (news_id,), True)
+ return render_template("news/show.html", news=news)
+
@app.route('/login', methods=['GET', 'POST'])
def login():
error = None
@@ -57,7 +78,8 @@ def login():
if user:
if user['password'] == password:
session['name'] = user['name']
- return redirect(url_for('show_news'))
+ session['user_id'] = user['id']
+ return redirect(url_for('list_news'))
else:
error = u'Mot de passe incorrect'
else: