Mercurial > piecrust2
comparison 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 |
comparison
equal
deleted
inserted
replaced
777:8d633ca59bc5 | 778:5e91bc0e3b4d |
---|---|
1 from flask import g, abort, render_template, url_for | |
2 from flask.ext.login import login_required | |
3 from piecrust.data.paginator import Paginator | |
4 from ..blueprint import foodtruck_bp | |
5 from ..textutil import text_preview, html_to_text | |
6 from ..views import with_menu_context | |
7 | |
8 | |
9 @foodtruck_bp.route('/list/<source_name>/', defaults={'page_num': 1}) | |
10 @foodtruck_bp.route('/list/<source_name>/<int:page_num>') | |
11 @login_required | |
12 def list_source(source_name, page_num): | |
13 site = g.site.piecrust_app | |
14 source = site.getSource(source_name) | |
15 if source is None: | |
16 abort(400) | |
17 | |
18 i = 0 | |
19 default_author = site.config.get('site/author') | |
20 data = {'title': "List %s" % source_name} | |
21 data['pages'] = [] | |
22 pgn = Paginator(None, source, page_num=page_num, items_per_page=20) | |
23 for p in pgn.items: | |
24 page_data = { | |
25 'title': p['title'], | |
26 'author': p.get('author', default_author), | |
27 'slug': p['slug'], | |
28 'timestamp': p['timestamp'], | |
29 'tags': p.get('tags', []), | |
30 'category': p.get('category'), | |
31 'source': source_name, | |
32 'url': url_for('.edit_page', slug=p['slug']) | |
33 } | |
34 data['pages'].append(page_data) | |
35 | |
36 prev_page_url = None | |
37 if pgn.prev_page_number: | |
38 prev_page_url = url_for( | |
39 '.list_source', source_name=source_name, | |
40 page_num=pgn.prev_page_number) | |
41 next_page_url = None | |
42 if pgn.next_page_number: | |
43 next_page_url = url_for( | |
44 '.list_source', source_name=source_name, | |
45 page_num=pgn.next_page_number) | |
46 | |
47 page_urls = [] | |
48 for i in pgn.all_page_numbers(7): | |
49 url = None | |
50 if i != page_num: | |
51 url = url_for('.list_source', source_name=source_name, page_num=i) | |
52 page_urls.append({'num': i, 'url': url}) | |
53 | |
54 data['pagination'] = { | |
55 'prev_page': prev_page_url, | |
56 'next_page': next_page_url, | |
57 'nums': page_urls | |
58 } | |
59 | |
60 with_menu_context(data) | |
61 return render_template('list_source.html', **data) | |
62 |