annotate piecrust/taxonomies.py @ 402:043b9d8304c7 2.0.0a11

linker: Fix linker returning the wrong value for `is_dir` in some situations.
author Ludovic Chabant <ludovic@chabant.com>
date Mon, 18 May 2015 23:45:51 -0700
parents 6c5de6edacf7
children e7b865f8f335
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
3
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 def resolvePagePath(self, source_name):
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 pr = self.getPageRef(source_name)
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
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 def getPageRef(self, source_name):
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 if source_name in self._source_page_refs:
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 return self._source_page_refs[source_name]
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 source = self.app.getSource(source_name)
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 ref_path = (source.getTaxonomyPageRef(self.name) or
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 '%s:%s' % (source_name, self.page_ref))
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 page_ref = PageRef(self.app, ref_path)
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 self._source_page_refs[source_name] = page_ref
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 return page_ref
f485ba500df3 Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36