aboutsummaryrefslogtreecommitdiff
path: root/pyaggr3g470r
diff options
context:
space:
mode:
Diffstat (limited to 'pyaggr3g470r')
-rw-r--r--pyaggr3g470r/templates/history.html89
-rwxr-xr-xpyaggr3g470r/utils.py26
-rw-r--r--pyaggr3g470r/views/views.py11
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'])
bgstack15