comparison 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
comparison
equal deleted inserted replaced
586:59268b4d8c71 587:d4a01a023998
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 ..views import with_menu_context
5 from ..web import app
6
7
8 @app.route('/list/<source_name>/', defaults={'page_num': 1})
9 @app.route('/list/<source_name>/<int:page_num>')
10 @login_required
11 def list_source(source_name, page_num):
12 site = g.sites.get().piecrust_app
13 source = site.getSource(source_name)
14 if source is None:
15 abort(400)
16
17 i = 0
18 data = {'title': "List %s" % source_name}
19 data['pages'] = []
20 pgn = Paginator(None, source, page_num=page_num, items_per_page=20)
21 for p in pgn.items:
22 page_data = {
23 'title': p['title'],
24 'slug': p['slug'],
25 'source': source_name,
26 'url': url_for('edit_page', slug=p['slug'])}
27 data['pages'].append(page_data)
28
29 prev_page_url = None
30 if pgn.prev_page_number:
31 prev_page_url = url_for(
32 'list_source', source_name=source_name,
33 page_num=pgn.prev_page_number)
34 next_page_url = None
35 if pgn.next_page_number:
36 next_page_url = url_for(
37 'list_source', source_name=source_name,
38 page_num=pgn.next_page_number)
39
40 page_urls = []
41 for i in pgn.all_page_numbers(7):
42 url = None
43 if i != page_num:
44 url = url_for('list_source', source_name=source_name, page_num=i)
45 page_urls.append({'num': i, 'url': url})
46
47 data['pagination'] = {
48 'prev_page': prev_page_url,
49 'next_page': next_page_url,
50 'nums': page_urls
51 }
52
53 with_menu_context(data)
54 return render_template('list_source.html', **data)
55