Mercurial > piecrust2
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) +