annotate piecrust/taxonomies.py @ 532:c3c1171679de 2.0.0b1

prepare: Fix the RSS template.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 29 Jul 2015 08:58:51 -0700
parents e7b865f8f335
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
242
f130365568ff internal: Code reorganization to put less stuff in `sources.base`.
Ludovic Chabant <ludovic@chabant.com>
parents: 3
diff changeset
1 from piecrust.sources.pageref import PageRef, PageNotFoundError
3
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 class Taxonomy(object):
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 def __init__(self, app, name, config):
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 self.app = app
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 self.name = name
317
6c5de6edacf7 internal: Be more forgiving about building `Taxonomy` objects. Add `setting_name`.
Ludovic Chabant <ludovic@chabant.com>
parents: 242
diff changeset
8 self.term_name = config.get('term', name)
6c5de6edacf7 internal: Be more forgiving about building `Taxonomy` objects. Add `setting_name`.
Ludovic Chabant <ludovic@chabant.com>
parents: 242
diff changeset
9 self.is_multiple = config.get('multiple', False)
6c5de6edacf7 internal: Be more forgiving about building `Taxonomy` objects. Add `setting_name`.
Ludovic Chabant <ludovic@chabant.com>
parents: 242
diff changeset
10 self.page_ref = config.get('page')
3
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 self._source_page_refs = {}
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12
317
6c5de6edacf7 internal: Be more forgiving about building `Taxonomy` objects. Add `setting_name`.
Ludovic Chabant <ludovic@chabant.com>
parents: 242
diff changeset
13 @property
6c5de6edacf7 internal: Be more forgiving about building `Taxonomy` objects. Add `setting_name`.
Ludovic Chabant <ludovic@chabant.com>
parents: 242
diff changeset
14 def setting_name(self):
6c5de6edacf7 internal: Be more forgiving about building `Taxonomy` objects. Add `setting_name`.
Ludovic Chabant <ludovic@chabant.com>
parents: 242
diff changeset
15 if self.is_multiple:
6c5de6edacf7 internal: Be more forgiving about building `Taxonomy` objects. Add `setting_name`.
Ludovic Chabant <ludovic@chabant.com>
parents: 242
diff changeset
16 return self.name
6c5de6edacf7 internal: Be more forgiving about building `Taxonomy` objects. Add `setting_name`.
Ludovic Chabant <ludovic@chabant.com>
parents: 242
diff changeset
17 return self.term_name
6c5de6edacf7 internal: Be more forgiving about building `Taxonomy` objects. Add `setting_name`.
Ludovic Chabant <ludovic@chabant.com>
parents: 242
diff changeset
18
411
e7b865f8f335 bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents: 317
diff changeset
19 def resolvePagePath(self, source):
e7b865f8f335 bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents: 317
diff changeset
20 pr = self.getPageRef(source)
3
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 try:
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 return pr.path
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 except PageNotFoundError:
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 return None
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25
411
e7b865f8f335 bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents: 317
diff changeset
26 def getPageRef(self, source):
e7b865f8f335 bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents: 317
diff changeset
27 if source.name in self._source_page_refs:
e7b865f8f335 bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents: 317
diff changeset
28 return self._source_page_refs[source.name]
3
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29
411
e7b865f8f335 bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents: 317
diff changeset
30 ref_path = source.getTaxonomyPageRef(self.name)
3
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 page_ref = PageRef(self.app, ref_path)
411
e7b865f8f335 bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents: 317
diff changeset
32 self._source_page_refs[source.name] = page_ref
3
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 return page_ref
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34