-
-
-
+
diff --git a/www/pocwww/pocwww/templates/pagination.jinja2 b/www/pocwww/pocwww/templates/pagination.jinja2
new file mode 100644
index 0000000..48c433f
--- /dev/null
+++ b/www/pocwww/pocwww/templates/pagination.jinja2
@@ -0,0 +1,41 @@
+{% macro render_pagination(pagination, endpoint) %}
+
+
+
+{% endmacro %}
diff --git a/www/pocwww/pocwww/views.py b/www/pocwww/pocwww/views.py
index 0952882..7fc101a 100644
--- a/www/pocwww/pocwww/views.py
+++ b/www/pocwww/pocwww/views.py
@@ -1,11 +1,47 @@
from pyramid.view import view_config
+from datetime import datetime, timedelta
from math import ceil
+class Pagination(object):
+
+ def __init__(self, page, per_page, total_count):
+ self.page = page
+ self.per_page = per_page
+ self.total_count = total_count
+ self.prev_num = page - 1
+ self.next_num = page + 1
+
+ @property
+ def pages(self):
+ return int(ceil(self.total_count / float(self.per_page)))
+
+ @property
+ def has_prev(self):
+ return self.page > 1
+
+ @property
+ def has_next(self):
+ return self.page < self.pages
+
+ def iter_pages(self, left_edge=2, left_current=2,
+ right_current=5, right_edge=2):
+ last = 0
+ for num in range(1, self.pages + 1):
+ if num <= left_edge or \
+ (num > self.page - left_current - 1 and
+ num < self.page + right_current) or \
+ num > self.pages - right_edge:
+ if last + 1 != num:
+ yield None
+ yield num
+ last = num
+
+
@view_config(route_name='home', renderer='templates/mytemplate.jinja2')
def my_view(request):
- return {'project': 'POC Web Interface'}
+ return {'project': 'POC Web Interface', 'navgroup':'dashboard'}
def card_page(request):
@@ -15,19 +51,44 @@ def card_page(request):
except KeyError:
pass
+ cards_date_start = datetime.utcnow().replace(hour=0, minute=0, second=0, microsecond=0)
+ try:
+ cards_date_start = datetime.strptime(request.matchdict['cards_date'], "%Y-%m-%d")
+ except KeyError:
+ pass
+
+ cards_date_end = cards_date_start + timedelta(days=1)
+
num_per_page = 100
- num_cards = request.db['cards'].count()
+ num_cards = request.db['cards'].find({'timestamp': {'$lt': cards_date_end, '$gte': cards_date_start}}).count()
pages = ceil(num_cards / num_per_page)
- cards = request.db['cards'].find().sort("timestamp", -1).skip(num_per_page * (page_num - 1)).limit(num_per_page)
- return {'cards': list(cards), 'page_num': page_num, 'total_pages': pages}
+ cards = request.db['cards'].find({'timestamp': {'$lt': cards_date_end, '$gte': cards_date_start}}).sort("timestamp", -1).skip(num_per_page * (page_num - 1)).limit(num_per_page)
+ return {'cards': list(cards), 'pagination': Pagination(page_num, num_per_page, num_cards), 'cards_date': cards_date_start.strftime("%Y-%m-%d"), 'navgroup': 'cards'}
-@view_config(route_name='cards', renderer='templates/cardlist.jinja2')
+@view_config(route_name='cards', renderer='templates/datelist.jinja2')
def cards(request):
- return card_page(request)
+ datelist = []
+ dateagg = request.db['cards'].aggregate([
+ {"$group": {
+ "_id": {"$concat": [
+ {"$substr": [{"$year": "$timestamp"}, 0, 4]},
+ "-",
+ {"$substr": [{"$month": "$timestamp"}, 0, 2]},
+ "-",
+ {"$substr": [{"$dayOfMonth": "$timestamp"}, 0, 2]},
+ ]},
+ "count": {"$sum": 1}
+ }},
+ {"$sort": {"_id": 1}}
+ ], useCursor=False)
+ for d in dateagg:
+ datelist.append({'count': d['count'], 'date': datetime.strptime(d['_id'], "%Y-%m-%d").date()})
+ return {'datelist': list(datelist), 'navgroup': 'cards'}
+@view_config(route_name='cards_date', renderer='templates/cardlist.jinja2')
@view_config(route_name='cards_page', renderer='templates/cardlist.jinja2')
def cards_page(request):
return card_page(request)
@@ -36,4 +97,4 @@ def cards_page(request):
@view_config(route_name='card_single', renderer='templates/cardsingle.jinja2')
def card_single(request):
card = list(request.db['cards'].find({"strokeNumber": int(request.matchdict['stroke_number'])}))
- return {"card": card[0]}
+ return {"card": card[0], 'navgroup': 'cards'}