view piecrust/admin/views/sources.py @ 928:41db689d36b6

serve: Fix post editing when the post has assets.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 01 Oct 2017 20:38:43 -0700
parents dcdec4b951a1
children 7ecb946bfafd
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 ..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(source, None, sub_num=page_num, items_per_page=20)
    for p in pgn.items:
        page_data = {
            'title': p['title'],
            'author': p.get('author', default_author),
            'timestamp': p['timestamp'],
            'tags': p.get('tags', []),
            'category': p.get('category'),
            'source': source_name,
            'url': url_for('.edit_page', uri=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)