diff piecrust/admin/views/sources.py @ 778:5e91bc0e3b4d

internal: Move admin panel code into the piecrust package.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 16 Jul 2016 15:02:24 +0200
parents foodtruck/views/sources.py@3885421c29a3
children 82509bce94ca
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/piecrust/admin/views/sources.py	Sat Jul 16 15:02:24 2016 +0200
@@ -0,0 +1,62 @@
+from flask import g, abort, render_template, url_for
+from flask.ext.login import login_required
+from piecrust.data.paginator import Paginator
+from ..blueprint import foodtruck_bp
+from ..textutil import text_preview, html_to_text
+from ..views import with_menu_context
+
+
+@foodtruck_bp.route('/list/<source_name>/', defaults={'page_num': 1})
+@foodtruck_bp.route('/list/<source_name>/<int:page_num>')
+@login_required
+def list_source(source_name, page_num):
+    site = g.site.piecrust_app
+    source = site.getSource(source_name)
+    if source is None:
+        abort(400)
+
+    i = 0
+    default_author = site.config.get('site/author')
+    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'],
+                'author': p.get('author', default_author),
+                'slug': p['slug'],
+                'timestamp': p['timestamp'],
+                'tags': p.get('tags', []),
+                'category': p.get('category'),
+                '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)
+