From 0853263f38d6f54b2a6978d31bba643d3f1f156e Mon Sep 17 00:00:00 2001 From: Cédric Bonhomme Date: Tue, 23 Sep 2014 06:56:24 +0200 Subject: Significative performance improvement for the /favorites view. --- pyaggr3g470r/templates/favorites.html | 6 +++--- pyaggr3g470r/views.py | 10 ++++------ 2 files changed, 7 insertions(+), 9 deletions(-) (limited to 'pyaggr3g470r') diff --git a/pyaggr3g470r/templates/favorites.html b/pyaggr3g470r/templates/favorites.html index 9be16692..210f7343 100644 --- a/pyaggr3g470r/templates/favorites.html +++ b/pyaggr3g470r/templates/favorites.html @@ -18,7 +18,7 @@ - {% for number in range(0, feed.articles.all()|length-(feed.articles.all()|length % 3), 3) %} + {% for number in range(0, feed.articles|length-(feed.articles|length % 3), 3) %}
{% for n in range(number, number+3) %}
@@ -30,9 +30,9 @@ {% endfor %}
{% endfor %} - {% if feed.articles.all()|length % 3 != 0 %} + {% if feed.articles|length % 3 != 0 %}
- {% for n in range(feed.articles.all()|length-(feed.articles.all()|length % 3), feed.articles.all()|length) %} + {% for n in range(feed.articles|length-(feed.articles|length % 3), feed.articles|length) %}
{% if feed.articles[n].readed %}

{% else %}

{% endif %} {{ feed.articles[n].title|safe }} diff --git a/pyaggr3g470r/views.py b/pyaggr3g470r/views.py index 0212e496..6e8b35d2 100644 --- a/pyaggr3g470r/views.py +++ b/pyaggr3g470r/views.py @@ -431,13 +431,11 @@ def favorites(): """ feeds_with_like = Feed.query.filter(Feed.user_id == g.user.id, Feed.articles.any(like=True)) result, nb_favorites = [], 0 + light_feed = namedtuple('Feed', ['id', 'title', 'articles'], verbose=False, rename=False) for feed in feeds_with_like: - new_feed = feed - new_feed.articles = Article.query.filter(Article.user_id == g.user.id, Article.feed_id == feed.id, Article.like == True).all() - length = len(new_feed.articles.all()) - if length != 0: - result.append(new_feed) - nb_favorites += length + articles = Article.query.filter(Article.user_id == g.user.id, Article.feed_id == feed.id, Article.like == True).all() + result.append(light_feed(feed.id, feed.title, articles)) + nb_favorites += len(articles) return render_template('favorites.html', feeds=result, nb_favorites=nb_favorites) @app.route('/unread/', methods=['GET']) -- cgit