aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--famille.py35
-rw-r--r--schema.sql2
-rw-r--r--templates/news/add.html8
-rw-r--r--templates/news/list.html2
-rw-r--r--templates/news/show.html4
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/<int:news_id>/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 %}
+<form action="{{ url_for('edit_news', news_id=news.id)}}" method="post">
+{% else %}
<form action="{{ url_for('add_news')}}" method="post">
- <input type=text size=80 name=title /><br/>
- <textarea name=content rows=20 cols=80></textarea>
+{% endif %}
+ <input type=text size=80 name=title value="{% if news %}{{news.title}}{% endif %}"/><br/>
+ <textarea name=content rows=20 cols=80>{% if news %}{{news.content}}{% endif %}</textarea>
<input type="submit" value="Submit" />
</form>
{% 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 @@
</div>
<div class="news_content">
- {{ news.content|safe }}
+ {{ news.content_cache|safe }}
</div>
{% endfor %}
</div>
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 @@
<h1>{{news.title}}</h1>
<div class="news_content">
-{{news.content|safe}}
+{{news.content_cache|safe}}
</div>
<hr/>
@@ -23,7 +23,7 @@
Posté par <a href="">{{comment.name}}</a> le {{comment.date|format_date}}
</h3>
<div class="comment_content"/>
-{{comment.content|safe}}
+{{comment.content_cache|safe}}
</div>
{% endfor %}