annotate piecrust/admin/views/sources.py @ 853:f070a4fc033c

core: Continue PieCrust3 refactor, simplify pages. The asset pipeline is still the only function pipeline at this point. * No more `QualifiedPage`, and several other pieces of code deleted. * Data providers are simpler and more focused. For instance, the page iterator doesn't try to support other types of items. * Route parameters are proper known source metadata to remove the confusion between the two. * Make the baker and pipeline more correctly manage records and record histories. * Add support for record collapsing and deleting stale outputs in the asset pipeline.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 21 May 2017 00:06:59 -0700
parents 82509bce94ca
children dcdec4b951a1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 from flask import g, abort, render_template, url_for
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 from flask.ext.login import login_required
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 from piecrust.data.paginator import Paginator
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 657
diff changeset
4 from ..blueprint import foodtruck_bp
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 from ..views import with_menu_context
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 657
diff changeset
8 @foodtruck_bp.route('/list/<source_name>/', defaults={'page_num': 1})
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 657
diff changeset
9 @foodtruck_bp.route('/list/<source_name>/<int:page_num>')
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 @login_required
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 def list_source(source_name, page_num):
610
efc1dc916e7c admin: Configuration changes.
Ludovic Chabant <ludovic@chabant.com>
parents: 593
diff changeset
12 site = g.site.piecrust_app
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 source = site.getSource(source_name)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 if source is None:
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 abort(400)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 i = 0
657
c1a94e1beb9d admin: Show a more classic blog post listing in FoodTruck.
Ludovic Chabant <ludovic@chabant.com>
parents: 610
diff changeset
18 default_author = site.config.get('site/author')
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 data = {'title': "List %s" % source_name}
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 data['pages'] = []
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 pgn = Paginator(None, source, page_num=page_num, items_per_page=20)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 for p in pgn.items:
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 page_data = {
812
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
24 'title': p['title'],
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
25 'author': p.get('author', default_author),
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
26 'slug': p['slug'],
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
27 'timestamp': p['timestamp'],
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
28 'tags': p.get('tags', []),
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
29 'category': p.get('category'),
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
30 'source': source_name,
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
31 'url': url_for('.edit_page', slug=p['slug'])
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
32 }
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 data['pages'].append(page_data)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 prev_page_url = None
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 if pgn.prev_page_number:
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 prev_page_url = url_for(
812
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
38 '.list_source', source_name=source_name,
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
39 page_num=pgn.prev_page_number)
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 next_page_url = None
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 if pgn.next_page_number:
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 next_page_url = url_for(
812
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
43 '.list_source', source_name=source_name,
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
44 page_num=pgn.next_page_number)
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 page_urls = []
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 for i in pgn.all_page_numbers(7):
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 url = None
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49 if i != page_num:
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 657
diff changeset
50 url = url_for('.list_source', source_name=source_name, page_num=i)
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 page_urls.append({'num': i, 'url': url})
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 data['pagination'] = {
812
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
54 'prev_page': prev_page_url,
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
55 'next_page': next_page_url,
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
56 'nums': page_urls
82509bce94ca internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents: 778
diff changeset
57 }
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
59 with_menu_context(data)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 return render_template('list_source.html', **data)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61