From 101f820153cdb047d13166672d3f46cfef31677d Mon Sep 17 00:00:00 2001 From: Thibaut Horel Date: Thu, 8 Nov 2012 01:34:02 +0100 Subject: Keep both rst and html rendered content in the database. News edit feature --- famille.py | 35 ++++++++++++++++++++++++++++------- schema.sql | 2 ++ templates/news/add.html | 8 ++++++-- templates/news/list.html | 2 +- templates/news/show.html | 4 ++-- 5 files changed, 39 insertions(+), 12 deletions(-) diff --git a/famille.py b/famille.py index e0fc798..4e6a716 100644 --- a/famille.py +++ b/famille.py @@ -61,11 +61,13 @@ def list_news(): @login_required def add_news(): if request.method == 'POST': - content = rstify(request.form['content']) - cur = g.db.execute("INSERT INTO news ('title', 'content', 'user_id') " - "VALUES (?, ?, ?)", + content = request.form['content'] + content_cache = rstify(content) + cur = g.db.execute("INSERT INTO news " + "('title', 'content', 'user_id', 'content_cache') " + "VALUES (?, ?, ?, ?)", (request.form['title'], content, - session['user_id'])) + session['user_id'], content_cache)) news_id = cur.lastrowid g.db.commit() return redirect(url_for('show_news', news_id=news_id)) @@ -84,9 +86,28 @@ def show_news(news_id): return render_template("news/show.html", news=news, comments=comments) elif request.method == 'POST': user_id = session['user_id'] - content = rstify(request.form['content']) - g.db.execute("INSERT INTO comments ('user_id', 'content', 'news_id') " - "VALUES (?, ?, ?)", (user_id, content, news_id)) + content = request.form['content'] + content_cache = rstify(content) + g.db.execute("INSERT INTO comments " + "('user_id', 'content', 'news_id', 'content_cache') " + "VALUES (?, ?, ?, ?)", (user_id, content, news_id, content_cache)) + g.db.commit() + return redirect(url_for('show_news', news_id=news_id)) + +@app.route('/news//edit', methods=['GET', 'POST']) +@login_required +def edit_news(news_id): + if request.method == 'GET': + news = query_db("SELECT * from news WHERE news.id = ?", (news_id,), True) + if news["user_id"] == session['user_id']: + return render_template('news/add.html', news=news) + elif request.method == 'POST': + title = request.form['title'] + content = request.form['content'] + content_cache = rstify(content) + g.db.execute("UPDATE news SET 'title'=?, 'content'=?, 'content_cache'=? " + "WHERE news.id =?", + (title, content, content_cache, news_id)) g.db.commit() return redirect(url_for('show_news', news_id=news_id)) diff --git a/schema.sql b/schema.sql index 43e4822..bae55ab 100644 --- a/schema.sql +++ b/schema.sql @@ -11,6 +11,7 @@ create table news ( title string not null, date string default (strftime('%Y-%m-%dT%H:%M:%S','now')), content string not null, + content_cache string not null, user_id integer, FOREIGN KEY(user_id) REFERENCES users(id) ); @@ -20,6 +21,7 @@ create table comments ( id integer primary key autoincrement, date string default (strftime('%Y-%m-%dT%H:%M:%S','now')), content string not null, + content_cache string not null, user_id integer, news_id integer, FOREIGN KEY(user_id) REFERENCES users(id), diff --git a/templates/news/add.html b/templates/news/add.html index c2bc018..53fb682 100644 --- a/templates/news/add.html +++ b/templates/news/add.html @@ -1,9 +1,13 @@ {% extends 'layout.html' %} {% block content %} +{% if news %} +
+{% else %} -
- +{% endif %} +
+
{% endblock %} diff --git a/templates/news/list.html b/templates/news/list.html index ddbe1ab..a5a367a 100644 --- a/templates/news/list.html +++ b/templates/news/list.html @@ -11,7 +11,7 @@
- {{ news.content|safe }} + {{ news.content_cache|safe }}
{% endfor %} diff --git a/templates/news/show.html b/templates/news/show.html index 411cdfc..7e03b5d 100644 --- a/templates/news/show.html +++ b/templates/news/show.html @@ -13,7 +13,7 @@

{{news.title}}

-{{news.content|safe}} +{{news.content_cache|safe}}

@@ -23,7 +23,7 @@ Posté par {{comment.name}} le {{comment.date|format_date}}
-{{comment.content|safe}} +{{comment.content_cache|safe}}
{% endfor %} -- cgit v1.2.3-70-g09d2