diff foodtruck/views/sources.py @ 587:d4a01a023998

admin: Add "FoodTruck" admin panel from the side experiment project.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 16 Jan 2016 14:24:35 -0800
parents
children 2713b54b5d76
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/foodtruck/views/sources.py	Sat Jan 16 14:24:35 2016 -0800
@@ -0,0 +1,55 @@
+from flask import g, abort, render_template, url_for
+from flask.ext.login import login_required
+from piecrust.data.paginator import Paginator
+from ..views import with_menu_context
+from ..web import app
+
+
+@app.route('/list/<source_name>/', defaults={'page_num': 1})
+@app.route('/list/<source_name>/<int:page_num>')
+@login_required
+def list_source(source_name, page_num):
+    site = g.sites.get().piecrust_app
+    source = site.getSource(source_name)
+    if source is None:
+        abort(400)
+
+    i = 0
+    data = {'title': "List %s" % source_name}
+    data['pages'] = []
+    pgn = Paginator(None, source, page_num=page_num, items_per_page=20)
+    for p in pgn.items:
+        page_data = {
+                'title': p['title'],
+                'slug': p['slug'],
+                'source': source_name,
+                'url': url_for('edit_page', slug=p['slug'])}
+        data['pages'].append(page_data)
+
+    prev_page_url = None
+    if pgn.prev_page_number:
+        prev_page_url = url_for(
+                'list_source', source_name=source_name,
+                page_num=pgn.prev_page_number)
+    next_page_url = None
+    if pgn.next_page_number:
+        next_page_url = url_for(
+                'list_source', source_name=source_name,
+                page_num=pgn.next_page_number)
+
+    page_urls = []
+    for i in pgn.all_page_numbers(7):
+        url = None
+        if i != page_num:
+            url = url_for('list_source', source_name=source_name, page_num=i)
+        page_urls.append({'num': i, 'url': url})
+
+    data['pagination'] = {
+            'prev_page': prev_page_url,
+            'next_page': next_page_url,
+            'nums': page_urls
+            }
+
+    with_menu_context(data)
+    return render_template('list_source.html', **data)
+