diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2013-09-18 01:07:41 -0400 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2013-09-18 01:07:41 -0400 |
| commit | 9ac5ba69009a5fea281f48cb12d625ffae380651 (patch) | |
| tree | e6066de63cdeb0f0367170d9d650400ca4dd3264 /famille.py | |
| parent | 8ef005701e7625a2ad8558fc6cb5903f63d06e1e (diff) | |
| download | famille-flask-9ac5ba69009a5fea281f48cb12d625ffae380651.tar.gz | |
add_news() function. database locked error, damn threads!
Diffstat (limited to 'famille.py')
| -rw-r--r-- | famille.py | 37 |
1 files changed, 21 insertions, 16 deletions
@@ -122,17 +122,21 @@ def add_news(): content = request.form['content'] content_cache = rstify(content) if 'Add' in request.form: - cur = db.execute("INSERT INTO news " - "('title', 'content', 'user_id', 'content_cache') " - "VALUES (?, ?, ?, ?)", - (request.form['title'], content, - session['user_id'], content_cache)) - news_id = cur.lastrowid - db.commit() - + metadata = get_metadata() + users = Table('users', metadata, autoload=True) + news = Table('news', metadata, autoload=True) + comments = Table('comments', metadata, autoload=True) + ins = news.insert().values(title = request.form['title'], + content = request.form['content'], + content_cache = content_cache, + user_id = session['user_id']) + result = db_session.execute(ins) + news_id = result.inserted_primary_key[0] + db_session.commit() # send email - emails = query_db(db, "SELECT email from users where notify=1") - emails = [email["email"] for email in emails] + #emails = query_db(db, "SELECT email from users where notify=1") + emails = None + #emails = [email["email"] for email in emails] if emails: message = Message(request.form['title'], sender="news.horel@gmail.com") @@ -159,20 +163,20 @@ def show_news(news_id): users = Table('users', metadata, autoload=True) news = Table('news', metadata, autoload=True) comments = Table('comments', metadata, autoload=True) - stmt = select([news]).select_from(news.outerjoin(users)).where(news.c.id == news_id) + stmt = select(['*']).select_from(news.outerjoin(users)).where(news.c.id == news_id) news_content = query_db(stmt, True) if request.method == 'GET': - stmt = select([comments]).select_from(comments.outerjoin(users)).\ + stmt = select(['*']).select_from(comments.outerjoin(users)).\ where(comments.c.news_id == news_id).order_by(comments.c.date) list_comments = query_db(stmt) return render_template("news/show.html", news=news_content, comments=list_comments) elif request.method == 'POST': ins = comments.insert().values(user_id=session['user_id'], - content=request.form['content'], - news_id=news_id, - content_cache = rstify(content)) + content=request.form['content'], + news_id=news_id, + content_cache = rstify(content)) db_session.execute(ins) - db.commit() + db_session.commit() return redirect(url_for('show_news', news_id=news_id)) @app.route('/news/<int:news_id>/edit', methods=['GET', 'POST']) @@ -254,6 +258,7 @@ def login(): stmt = users.update().where(users.c.id == user['id']).\ values(last_seen=datetime.utcnow()) db_session.execute(stmt) + db_session.commit() return redirect(url_for('list_news')) else: error = u'Mot de passe incorrect' |
