diff options
-rw-r--r-- | pyaggr3g470r/templates/favorites.html | 48 | ||||
-rw-r--r-- | pyaggr3g470r/templates/layout.html | 27 | ||||
-rw-r--r-- | pyaggr3g470r/views/views.py | 26 |
3 files changed, 22 insertions, 79 deletions
diff --git a/pyaggr3g470r/templates/favorites.html b/pyaggr3g470r/templates/favorites.html deleted file mode 100644 index 210f7343..00000000 --- a/pyaggr3g470r/templates/favorites.html +++ /dev/null @@ -1,48 +0,0 @@ - {% extends "layout.html" %} -{% block content %} -<div class="container"> - {% if feeds|count == 0 %} - <div class="page-header"> - <h1>{{ _('No favorites') }}</h1> - </div> - {% else %} - <div class="page-header"> - <h1>{{ _('Favorites articles') }} <small>{{ nb_favorites }}</small></h1> - </div> - {% for feed in feeds|sort(attribute="title") %} - <div class="row"> - <div class="col-md-6 col-md-offset-3"> - <h1>{{ feed.title|safe }}</h1> - <a href="/articles/{{ feed.id }}/100"><i class="glyphicon glyphicon-th-list" title="{{ _('More articles') }}"></i></a> - <a href="/feed/{{ feed.id }}"><i class="glyphicon glyphicon-info-sign" title="{{ _('Details') }}"></i></a> - <a href="/edit_feed/{{ feed.id }}"><i class="glyphicon glyphicon-edit" title="{{ _('Edit this feed') }}"></i></a> - </div> - </div> - {% for number in range(0, feed.articles|length-(feed.articles|length % 3), 3) %} - <div class="row"> - {% for n in range(number, number+3) %} - <div class="col-xs-6 col-sm-4 col-md-4"> - {% if feed.articles[n].readed %}<h3>{% else %}<h1>{% endif %} - <a href="/article/{{ feed.articles[n].id }}">{{ feed.articles[n].title|safe }}</a> - {% if feed.articles[n].readed %}</h3>{% else %}</h1>{% endif %} - <h6>{{ feed.articles[n].date | datetime }}</h6> - </div> - {% endfor %} - </div> - {% endfor %} - {% if feed.articles|length % 3 != 0 %} - <div class="row"> - {% for n in range(feed.articles|length-(feed.articles|length % 3), feed.articles|length) %} - <div class="col-xs-6 col-sm-4 col-md-4"> - {% if feed.articles[n].readed %}<h3>{% else %}<h1>{% endif %} - <a href="/article/{{ feed.articles[n].id }}">{{ feed.articles[n].title|safe }}</a> - {% if feed.articles[n].readed %}</h3>{% else %}</h1>{% endif %} - <h6>{{ feed.articles[n].date | datetime }}</h6> - </div> - {% endfor %} - </div> - {% endif %} - {% endfor %} - {% endif %} -</div><!-- /.container --> -{% endblock %} diff --git a/pyaggr3g470r/templates/layout.html b/pyaggr3g470r/templates/layout.html index 90263fb8..f9b51127 100644 --- a/pyaggr3g470r/templates/layout.html +++ b/pyaggr3g470r/templates/layout.html @@ -6,7 +6,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="description" content="pyAggr3g470r is a web-based news aggregator." /> <meta name="author" content="" /> - <title>{% if head_title %}{{ head_title }} - {% endif %}pyAggr3g470r</title> + <title>pyAggr3g470r{% if head_title %} - {{ head_title }}{% endif %}</title> <link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}" /> <!-- Bootstrap core CSS --> <link href="{{ url_for('static', filename = 'css/bootstrap.css') }}" rel="stylesheet" media="screen" /> @@ -25,7 +25,7 @@ <span class="icon-bar"></span> <span class="icon-bar"></span> </button> - <a class="navbar-brand" href="/">pyAggr3g470r</a> + <a class="navbar-brand" href="/">pyAggr3g470r</a><span class="navbar-brand">{% if head_title %}- {{ head_title }}{% endif %}</span> </div> <!-- Collect the nav links, forms, and other content for toggling --> @@ -101,18 +101,19 @@ <script src="{{ url_for('static', filename = 'js/bootstrap.js') }}"></script> <script src="{{ url_for('static', filename = 'js/articles.js') }}"></script> <script type="text/javascript" class="source"> - if (window.location.href.indexOf("filter_=all") > -1){ - $("#tab-all").attr('class', "active"); - } - else if (window.location.href.indexOf("filter_=unread") > -1) { - $("#tab-unread").attr('class', "active"); - } - else if (window.location.href.indexOf("filter_=read") > -1) { - $("#tab-read").attr('class', "active"); - } - else { - $("#tab-unread").attr('class', "active"); + var filter_ = {% if filter_ %}"{{ filter_ }}"{% else %}undefined{% endif %}; + if (filter_ == undefined) { + if (window.location.href.indexOf("filter_=all") > -1){ + filter_ = 'all'; + } + else if (window.location.href.indexOf("filter_=unread") > -1) { + filter_ = 'unread'; + } + else if (window.location.href.indexOf("filter_=read") > -1) { + filter_ = 'read'; + } } + $("#tab-" + filter_).attr('class', "active"); </script> </body> </html> diff --git a/pyaggr3g470r/views/views.py b/pyaggr3g470r/views/views.py index ff33b576..623cf5d4 100644 --- a/pyaggr3g470r/views/views.py +++ b/pyaggr3g470r/views/views.py @@ -224,11 +224,14 @@ def signup(): return render_template('signup.html', form=form) @app.route('/') +@app.route('/favorites') @login_required def home(): """ Home page for connected users. Displays by default unread articles. """ + favorites = request.path.startswith('/favorites') + head_title = gettext('Favorites') if favorites else '' feed_contr = FeedController(g.user.id) arti_contr = ArticleController(g.user.id) feeds = {feed.id: feed.title for feed in feed_contr.read()} @@ -237,11 +240,13 @@ def home(): in_error = {feed.id: feed.error_count for feed in feed_contr.read(error_count__gt=2)} - filter_ = request.args.get('filter_', 'unread') + filter_ = request.args.get('filter_', 'all' if favorites else 'unread') feed_id = int(request.args.get('feed', 0)) limit = request.args.get('limit', 1000) filters = {} + if favorites: + filters['like'] = True if filter_ != 'all': filters['readed'] = filter_ == 'read' if feed_id: @@ -256,12 +261,13 @@ def home(): return url_for('home', filter_=filter_, limit=limit, feed=feed) articles = list(articles) - if not articles: + if not articles and not favorites: return redirect(gen_url(filter_='all')) return render_template('home.html', gen_url=gen_url, feed_id=feed_id, filter_=filter_, limit=limit, feeds=feeds, unread=unread, articles=articles, in_error=in_error, + head_title=head_title, default_max_error = conf.DEFAULT_MAX_ERROR) @@ -348,22 +354,6 @@ def delete(article_id=None): return redirect(url_for('home')) -@app.route('/favorites', methods=['GET']) -@login_required -def favorites(): - """ - List favorites articles. - """ - 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: - 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('/inactives', methods=['GET']) @login_required def inactives(): |