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