Mercurial > piecrust2
view 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 |
line wrap: on
line source
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)