diff options
-rw-r--r-- | pyaggr3g470r/templates/history.html | 89 | ||||
-rwxr-xr-x | pyaggr3g470r/utils.py | 26 | ||||
-rw-r--r-- | pyaggr3g470r/views/views.py | 11 |
3 files changed, 50 insertions, 76 deletions
diff --git a/pyaggr3g470r/templates/history.html b/pyaggr3g470r/templates/history.html index 0194cb89..6216f616 100644 --- a/pyaggr3g470r/templates/history.html +++ b/pyaggr3g470r/templates/history.html @@ -1,74 +1,19 @@ - {% extends "layout.html" %} - {% block head %} -{{ super() }} -<script type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script> -<style type="text/css"> -rect { - fill: purple ; - padding: 7px; - margin: 2px; - color: white; - } -rect:hover - { - opacity : 0.5; - } -</style> -{% endblock %} - +{% extends "layout.html" %} {% block content %} <div class="container"> -<h1>History</h1> -<div align="center" id="pie_chart"> - <div class="chart"> - </div> - - -<script type="text/javascript"> -function createGraph(dataset, w, h) { - var barPadding = 1; - - //Create SVG element - var svg = d3.select("#pie_chart .chart") - .append("svg") - .attr("width", w) - .attr("height", h); - - svg.selectAll("rect") - .data(dataset) - .enter() - .append("rect") - .on("click", clickEvent) - .attr("x", function(d, i) { - return i * (w / dataset.length); - }) - .attr("y", function(d) { - return h - (d * 4); - }) - .attr("width", w / dataset.length - barPadding) - .attr("height", function(d) { - return d * 4; - }); -} - -function clickEvent(d){ - //var op = prompt("Please enter the value", ""); - alert(d); - -}; - - - -var w = 800; -var h = 100; -var dataset = [ 12, 10, 13, 19, 21, 25, 22, 18, 15, 13, - 11, 12, 15, 20, 18, 17, 16, 18, 23, 25 ]; - -createGraph(dataset, w, h); - - -</script> - - -</div> -{% endblock %}
\ No newline at end of file + <h1>{{ _('History') }}</h1> + <ul class="list-group"> + {% for article in articles_counter %} + {% if year == None %} + <li class="list-group-item"><a href="/history/{{ article }}">{{ article }}</a> : {{ articles_counter[article] }} articles</li> + {% elif month == None %} + <li class="list-group-item"><a href="/history/{{ year }}/{{ article }}">{{ article }}</a> : {{ articles_counter[article] }} articles</li> + {% else %} + {% for article in articles %} + <li class="list-group-item"><a href="/article/{{ article.id }}">{{ article.title | safe }}</a></li> + {% endfor %} + {% endif %} + {% endfor %} + </ul> +</div><!-- /.container --> +{% endblock %} diff --git a/pyaggr3g470r/utils.py b/pyaggr3g470r/utils.py index ba440c78..ae140327 100755 --- a/pyaggr3g470r/utils.py +++ b/pyaggr3g470r/utils.py @@ -54,6 +54,7 @@ from contextlib import contextmanager import conf from flask import g +from pyaggr3g470r import controllers from pyaggr3g470r.models import User, Feed, Article @@ -84,6 +85,31 @@ def fetch(id, feed_id=None): cmd = [conf.PYTHON, conf.basedir+'/manager.py', 'fetch_asyncio', str(id), str(feed_id)] p = subprocess.Popen(cmd, stdout=subprocess.PIPE) +def history(year=None, month=None): + """ + """ + import datetime, time, sqlalchemy + articles_counter = Counter() + if None != month and None != year: + articles = controllers.ArticleController(1).read(). \ + filter(sqlalchemy.extract('year', Article.date) == year). \ + filter(sqlalchemy.extract('month', Article.date) == month) + elif None != year: + articles = controllers.ArticleController(1).read(). \ + filter(sqlalchemy.extract('year', Article.date) == year) + else: + articles = controllers.ArticleController(1).read() + + for article in articles: + if None != month: + articles_counter[article.date.day] += 1 + elif None != year: + articles_counter[article.date.month] += 1 + else: + articles_counter[article.date.year] += 1 + + return articles_counter, articles + def import_opml(email, opml_content): """ Import new feeds from an OPML file. diff --git a/pyaggr3g470r/views/views.py b/pyaggr3g470r/views/views.py index 88835068..b7ccf955 100644 --- a/pyaggr3g470r/views/views.py +++ b/pyaggr3g470r/views/views.py @@ -539,10 +539,13 @@ def management(): not_on_heroku = not conf.ON_HEROKU) @app.route('/history', methods=['GET']) -@login_required -def history(): - #user = User.query.filter(User.id == g.user.id).first() - return render_template('history.html') +@app.route('/history/<int:year>', methods=['GET']) +@app.route('/history/<int:year>/<int:month>', methods=['GET']) +def history(year=None, month=None): + articles_counter, articles = utils.history(year, month) + return render_template('history.html', articles_counter=articles_counter, + articles=articles, + year=year, month=month) @app.route('/bookmarklet', methods=['GET']) @app.route('/create_feed', methods=['GET', 'POST']) |