aboutsummaryrefslogtreecommitdiffstats
path: root/famille.py
diff options
context:
space:
mode:
authorGuillaume Horel <guillaume.horel@gmail.com>2013-09-17 23:45:23 -0400
committerGuillaume Horel <guillaume.horel@gmail.com>2013-09-17 23:45:23 -0400
commit0964d019e20308ceb36656630777a2253dcbfff3 (patch)
treeb74a33dc0e19bbbf380108bb888dabf72b78e2f7 /famille.py
parent6043b1e054be92d4282d886b0d53c8403e8eddc1 (diff)
downloadfamille-flask-0964d019e20308ceb36656630777a2253dcbfff3.tar.gz
login() function works, now just need to update the rest!
Diffstat (limited to 'famille.py')
-rw-r--r--famille.py48
1 files changed, 24 insertions, 24 deletions
diff --git a/famille.py b/famille.py
index 0fa2f62..db06b94 100644
--- a/famille.py
+++ b/famille.py
@@ -13,8 +13,14 @@ from email import utils
from bs4 import BeautifulSoup
from flask_mail import Mail, Message
import locale
-locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
+from sqlalchemy import create_engine, MetaData, Table
+from sqlalchemy.orm import scoped_session, sessionmaker
+locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
+engine = create_engine('sqlite:///famille.db', convert_unicode=True)
+db_session = scoped_session(sessionmaker(autocommit=False,
+ autoflush=False,
+ bind=engine))
def rstify(string):
w = Writer()
result = core.publish_parts(string, writer=w)['fragment']
@@ -74,22 +80,12 @@ def query_db(db, query, args=(), one=False):
cur.close()
return rv
-def connect_db():
- conn = sqlite3.connect(app.config['DATABASE'],
- detect_types=sqlite3.PARSE_DECLTYPES)
- conn.row_factory = sqlite3.Row
- return conn
-
-def get_db():
- if not hasattr(g, 'sqlite_db'):
- g.sqlite_db = connect_db()
- return g.sqlite_db
-
@app.teardown_appcontext
-def close_db(error):
- """Closes the database again at the end of the request."""
- if hasattr(g, 'sqlite_db'):
- g.sqlite_db.close()
+def shutdown_session(exception=None):
+ db_session.remove()
+
+def get_metadata():
+ return MetaData(bind=engine)
def login_required(f):
@wraps(f)
@@ -103,7 +99,10 @@ def login_required(f):
@app.route('/news/')
@login_required
def list_news():
- db = get_db()
+ metadata = get_metadata()
+ users = Table('users', metadata, autoload=True)
+ news = Table('news', metadata, autoload=True)
+ comments = Table('comments', metadata, autoload=True)
news = query_db(db, "SELECT news.*, users.user_name, count(comments.id) as ncomments FROM news "
"LEFT JOIN users ON news.user_id = users.id "
"LEFT JOIN comments ON news.id=comments.news_id GROUP BY news.id "
@@ -240,19 +239,20 @@ def login():
error = None
if request.method == 'POST':
- db = get_db()
+ metadata = get_metadata()
+ users = Table('users', metadata, autoload=True)
username = request.form['username']
- password = hashlib.md5(request.form['password']).hexdigest();
- user = query_db(db, 'select * from users where user_name = ?',
- (username,), True)
+ password = hashlib.md5(request.form['password']).hexdigest()
+ user = users.select(users.c.user_name == username).execute().first()
+
if user:
if user['password'] == password:
session['user_name'] = user['user_name']
session['user_id'] = user['id']
session['timezone'] = user['timezone'] or "UTC"
- db.execute("UPDATE users SET last_seen=? WHERE id=?",
- (datetime.utcnow(),session['user_id']))
- db.commit()
+ stmt = users.update().where(users.c.id == user['id']).\
+ values(last_seen=datetime.utcnow())
+ db_session.execute(stmt)
return redirect(url_for('list_news'))
else:
error = u'Mot de passe incorrect'