comparison foodtruck/views/sources.py @ 772:3885421c29a3

admin: Make the whole FoodTruck site into a blueprint. This makes it possible to use an app factory, which makes it easier to write unit tests.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 03 Jul 2016 07:54:54 -0700
parents c1a94e1beb9d
children
comparison
equal deleted inserted replaced
771:673979a5d548 772:3885421c29a3
1 from flask import g, abort, render_template, url_for 1 from flask import g, abort, render_template, url_for
2 from flask.ext.login import login_required 2 from flask.ext.login import login_required
3 from piecrust.data.paginator import Paginator 3 from piecrust.data.paginator import Paginator
4 from ..blueprint import foodtruck_bp
4 from ..textutil import text_preview, html_to_text 5 from ..textutil import text_preview, html_to_text
5 from ..views import with_menu_context 6 from ..views import with_menu_context
6 from ..web import app
7 7
8 8
9 @app.route('/list/<source_name>/', defaults={'page_num': 1}) 9 @foodtruck_bp.route('/list/<source_name>/', defaults={'page_num': 1})
10 @app.route('/list/<source_name>/<int:page_num>') 10 @foodtruck_bp.route('/list/<source_name>/<int:page_num>')
11 @login_required 11 @login_required
12 def list_source(source_name, page_num): 12 def list_source(source_name, page_num):
13 site = g.site.piecrust_app 13 site = g.site.piecrust_app
14 source = site.getSource(source_name) 14 source = site.getSource(source_name)
15 if source is None: 15 if source is None:
27 'slug': p['slug'], 27 'slug': p['slug'],
28 'timestamp': p['timestamp'], 28 'timestamp': p['timestamp'],
29 'tags': p.get('tags', []), 29 'tags': p.get('tags', []),
30 'category': p.get('category'), 30 'category': p.get('category'),
31 'source': source_name, 31 'source': source_name,
32 'url': url_for('edit_page', slug=p['slug']) 32 'url': url_for('.edit_page', slug=p['slug'])
33 } 33 }
34 data['pages'].append(page_data) 34 data['pages'].append(page_data)
35 35
36 prev_page_url = None 36 prev_page_url = None
37 if pgn.prev_page_number: 37 if pgn.prev_page_number:
38 prev_page_url = url_for( 38 prev_page_url = url_for(
39 'list_source', source_name=source_name, 39 '.list_source', source_name=source_name,
40 page_num=pgn.prev_page_number) 40 page_num=pgn.prev_page_number)
41 next_page_url = None 41 next_page_url = None
42 if pgn.next_page_number: 42 if pgn.next_page_number:
43 next_page_url = url_for( 43 next_page_url = url_for(
44 'list_source', source_name=source_name, 44 '.list_source', source_name=source_name,
45 page_num=pgn.next_page_number) 45 page_num=pgn.next_page_number)
46 46
47 page_urls = [] 47 page_urls = []
48 for i in pgn.all_page_numbers(7): 48 for i in pgn.all_page_numbers(7):
49 url = None 49 url = None
50 if i != page_num: 50 if i != page_num:
51 url = url_for('list_source', source_name=source_name, page_num=i) 51 url = url_for('.list_source', source_name=source_name, page_num=i)
52 page_urls.append({'num': i, 'url': url}) 52 page_urls.append({'num': i, 'url': url})
53 53
54 data['pagination'] = { 54 data['pagination'] = {
55 'prev_page': prev_page_url, 55 'prev_page': prev_page_url,
56 'next_page': next_page_url, 56 'next_page': next_page_url,