aboutsummaryrefslogtreecommitdiff
path: root/pyaggr3g470r
diff options
context:
space:
mode:
Diffstat (limited to 'pyaggr3g470r')
-rw-r--r--pyaggr3g470r/templates/favorites.html48
-rw-r--r--pyaggr3g470r/templates/layout.html27
-rw-r--r--pyaggr3g470r/views/views.py26
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():
bgstack15