diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2013-09-26 00:06:49 -0400 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2013-09-26 00:06:49 -0400 |
| commit | 7a985982691d1b3824bd78d370bbb9b01cb5d153 (patch) | |
| tree | e40a5a8d5b5cb6d795723d6c0f1b4a1449fdd3b7 | |
| parent | b3ad29f3c88842d5fa6745e03c609b63e47ef811 (diff) | |
| download | famille-flask-7a985982691d1b3824bd78d370bbb9b01cb5d153.tar.gz | |
fixed the lock issue
| -rw-r--r-- | famille.py | 39 |
1 files changed, 23 insertions, 16 deletions
@@ -43,7 +43,7 @@ def format_date(date_object, formatstr=u"%a %d %b %Y à %Hh%M"): if not date_object: return "" formatstr = formatstr.encode("utf8") - return date_object.replace(tzinfo=timezone('utc')).\ + return date_object.replace(tzinfo=timezone('utc')). \ astimezone(timezone(session['timezone'])).strftime(formatstr).decode("utf8") @app.template_filter('format_ago') @@ -51,8 +51,8 @@ def format_ago(date_object, formatstr): if not date_object: return "" formatstr = formatstr.encode("utf8") - readable = date_object.replace(tzinfo=timezone('utc')).\ - astimezone(timezone(session['timezone'])).strftime(formatstr) + readable = date_object.replace(tzinfo=timezone('utc')). \ + astimezone(timezone(session['timezone'])).strftime(formatstr) iso_format = date_object.strftime('%Y-%m-%dT%H:%M:%SZ') return '<span class=timeago title="{0}">{1}</span>'.\ format(iso_format, readable).decode("utf8") @@ -74,7 +74,8 @@ def pluralize(word, count, plural=None): return "{0} {1}s".format(count, word) def query_db(stmt, one=False): - cur = db_session.execute(stmt) + db = db_session() + cur = db.execute(stmt) rv = cur.fetchone() if one else cur.fetchall() cur.close() return rv @@ -104,10 +105,11 @@ def list_news(): comments = Table('comments', metadata, autoload=True) stmt = select([news, users.c.user_name, func.count(comments.c.id).label('ncomments')]).\ - select_from(news.outerjoin(users).outerjoin(comments, comments.c.news_id==news.c.id)).\ - group_by(news.c.id).order_by(news.c.date.desc()) + select_from(news.outerjoin(users).outerjoin(comments, comments.c.news_id==news.c.id)).\ + group_by(news.c.id).order_by(news.c.date.desc()) list_news = query_db(stmt) - stmt = select([comments]).select_from(comments.outerjoin(users)).order_by(comments.c.date.desc()).limit(5) + stmt = select([comments]).select_from(comments.outerjoin(users)).\ + order_by(comments.c.date.desc()).limit(5) list_comments = query_db(stmt) stmt = select([users]).order_by(users.c.last_seen.desc()) list_users = query_db(stmt) @@ -126,12 +128,13 @@ def add_news(): 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 = content, content_cache = content_cache, user_id = session['user_id']) - result = db_session.execute(ins) + db = db_session() + result = db.execute(ins) news_id = result.inserted_primary_key[0] - db_session.commit() + db.commit() # send email #emails = query_db(db, "SELECT email from users where notify=1") emails = None @@ -162,26 +165,30 @@ 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(['*']).select_from(news.outerjoin(users)).where(news.c.id == news_id) + stmt = select([news,users.c.user_name]).select_from(news.outerjoin(users)).\ + where(news.c.id == news_id) news_content = query_db(stmt, True) if request.method == 'GET': - stmt = select(['*']).select_from(comments.outerjoin(users)).\ + stmt = select([comments, users.c.user_name]).\ + 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': + content = request.form['content'] ins = comments.insert().values(user_id=session['user_id'], - content=request.form['content'], + content=content, news_id=news_id, content_cache = rstify(content)) - db_session.execute(ins) - db_session.commit() + db = db_session() + db.execute(ins) + 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): - db = get_db() + db = db_session() if request.method == 'GET': news = query_db(db, "SELECT * from news WHERE news.id = ?", (news_id,), True) |
