Mercurial > piecrust2
annotate piecrust/taxonomies.py @ 544:9a00e694b42c
cm: Changelog generator script.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 31 Jul 2015 23:35:07 -0700 |
parents | e7b865f8f335 |
children |
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 |