Mercurial > piecrust2
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 |
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 |