Mercurial > piecrust2
annotate piecrust/app.py @ 852:4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
* Everything is a `ContentSource`, including assets directories.
* Most content sources are subclasses of the base file-system source.
* A source is processed by a "pipeline", and there are 2 built-in pipelines,
one for assets and one for pages. The asset pipeline is vaguely functional,
but the page pipeline is completely broken right now.
* Rewrite the baking process as just running appropriate pipelines on each
content item. This should allow for better parallelization.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 17 May 2017 00:11:48 -0700 |
parents | 7d83b9484b98 |
children | f070a4fc033c |
rev | line source |
---|---|
411
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
371
diff
changeset
|
1 import time |
0 | 2 import os.path |
3 import logging | |
758
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
4 import urllib.parse |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
5 from werkzeug.utils import cached_property |
271
12657039c436
internal: Re-use the cached resource directory.
Ludovic Chabant <ludovic@chabant.com>
parents:
260
diff
changeset
|
6 from piecrust import ( |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
7 RESOURCES_DIR, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
8 CACHE_DIR, TEMPLATES_DIR, ASSETS_DIR, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
9 THEME_DIR, PLUGINS_DIR, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
10 CONFIG_PATH, THEME_CONFIG_PATH) |
584
9ccc933ac2c7
internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
568
diff
changeset
|
11 from piecrust.appconfig import PieCrustConfiguration |
9ccc933ac2c7
internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
568
diff
changeset
|
12 from piecrust.cache import ExtensibleCache, NullExtensibleCache |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
13 from piecrust.configuration import ConfigurationError |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
14 from piecrust.environment import StandardEnvironment |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
15 from piecrust.page import Page |
758
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
16 from piecrust.plugins.base import PluginLoader |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
17 from piecrust.routing import Route |
0 | 18 |
19 | |
20 logger = logging.getLogger(__name__) | |
21 | |
22 | |
23 class PieCrust(object): | |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
24 def __init__(self, root_dir, cache=True, debug=False, theme_site=False, |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
25 env=None, cache_key=None): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
26 self.root_dir = root_dir |
0 | 27 self.debug = debug |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
28 self.theme_site = theme_site |
0 | 29 self.plugin_loader = PluginLoader(self) |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
30 self.cache_key = cache_key or 'default' |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
31 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
32 if cache: |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
33 self.cache = ExtensibleCache(self.cache_dir) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
34 else: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
35 self.cache = NullExtensibleCache() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
36 |
0 | 37 self.env = env |
38 if self.env is None: | |
39 self.env = StandardEnvironment() | |
40 self.env.initialize(self) | |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
41 self.env.stats.registerTimer('SiteConfigLoad') |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
42 self.env.stats.registerTimer('PageLoad') |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
43 self.env.stats.registerTimer("PageDataBuild") |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
44 self.env.stats.registerTimer("BuildRenderData") |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
45 self.env.stats.registerTimer("PageRender") |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
46 self.env.stats.registerTimer("PageRenderSegments") |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
47 self.env.stats.registerTimer("PageRenderLayout") |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
48 self.env.stats.registerTimer("PageSerialize") |
411
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
371
diff
changeset
|
49 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
50 @cached_property |
0 | 51 def config(self): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
52 logger.debug("Creating site configuration...") |
411
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
371
diff
changeset
|
53 start_time = time.perf_counter() |
e7b865f8f335
bake: Enable multiprocess baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
371
diff
changeset
|
54 |
663
3ceeca7bb71c
themes: Add support for a `--theme` argument to `chef`.
Ludovic Chabant <ludovic@chabant.com>
parents:
586
diff
changeset
|
55 if not self.theme_site: |
681
894d286b348f
internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents:
675
diff
changeset
|
56 path = os.path.join(self.root_dir, CONFIG_PATH) |
663
3ceeca7bb71c
themes: Add support for a `--theme` argument to `chef`.
Ludovic Chabant <ludovic@chabant.com>
parents:
586
diff
changeset
|
57 else: |
681
894d286b348f
internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents:
675
diff
changeset
|
58 path = os.path.join(self.root_dir, THEME_CONFIG_PATH) |
894d286b348f
internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents:
675
diff
changeset
|
59 |
894d286b348f
internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents:
675
diff
changeset
|
60 theme_path = None |
894d286b348f
internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents:
675
diff
changeset
|
61 if not self.theme_site and self.theme_dir: |
894d286b348f
internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents:
675
diff
changeset
|
62 theme_path = os.path.join(self.theme_dir, THEME_CONFIG_PATH) |
0 | 63 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
64 config_cache = self.cache.getCache('app') |
675
3df808b133f8
internal: Improve how theme configuration is validated and merged.
Ludovic Chabant <ludovic@chabant.com>
parents:
666
diff
changeset
|
65 config = PieCrustConfiguration( |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
66 path=path, theme_path=theme_path, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
67 cache=config_cache, theme_config=self.theme_site) |
681
894d286b348f
internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents:
675
diff
changeset
|
68 |
805
fd694f1297c7
config: Cleanup config loading code. Add support for a `local.yml` config.
Ludovic Chabant <ludovic@chabant.com>
parents:
758
diff
changeset
|
69 local_path = os.path.join( |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
70 self.root_dir, 'configs', 'local.yml') |
805
fd694f1297c7
config: Cleanup config loading code. Add support for a `local.yml` config.
Ludovic Chabant <ludovic@chabant.com>
parents:
758
diff
changeset
|
71 config.addVariant(local_path, raise_if_not_found=False) |
fd694f1297c7
config: Cleanup config loading code. Add support for a `local.yml` config.
Ludovic Chabant <ludovic@chabant.com>
parents:
758
diff
changeset
|
72 |
681
894d286b348f
internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents:
675
diff
changeset
|
73 if self.theme_site: |
894d286b348f
internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents:
675
diff
changeset
|
74 variant_path = os.path.join( |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
75 self.root_dir, 'configs', 'theme_preview.yml') |
681
894d286b348f
internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents:
675
diff
changeset
|
76 config.addVariant(variant_path, raise_if_not_found=False) |
0 | 77 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
78 self.env.stats.stepTimer('SiteConfigLoad', |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
79 time.perf_counter() - start_time) |
0 | 80 return config |
81 | |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
82 @cached_property |
36
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
83 def assets_dirs(self): |
584
9ccc933ac2c7
internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
568
diff
changeset
|
84 assets_dirs = self._get_configurable_dirs( |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
85 ASSETS_DIR, 'site/assets_dirs') |
36
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
86 |
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
87 # Also add the theme directory, if any. |
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
88 if self.theme_dir: |
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
89 default_theme_dir = os.path.join(self.theme_dir, ASSETS_DIR) |
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
90 if os.path.isdir(default_theme_dir): |
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
91 assets_dirs.append(default_theme_dir) |
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
92 |
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
93 return assets_dirs |
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
94 |
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
95 @cached_property |
0 | 96 def templates_dirs(self): |
584
9ccc933ac2c7
internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
568
diff
changeset
|
97 templates_dirs = self._get_configurable_dirs( |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
98 TEMPLATES_DIR, 'site/templates_dirs') |
0 | 99 |
36
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
31
diff
changeset
|
100 # Also, add the theme directory, if any. |
0 | 101 if self.theme_dir: |
102 default_theme_dir = os.path.join(self.theme_dir, TEMPLATES_DIR) | |
103 if os.path.isdir(default_theme_dir): | |
104 templates_dirs.append(default_theme_dir) | |
105 | |
106 return templates_dirs | |
107 | |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
108 @cached_property |
0 | 109 def theme_dir(self): |
709
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
110 # No theme if the curent site is already a theme. |
663
3ceeca7bb71c
themes: Add support for a `--theme` argument to `chef`.
Ludovic Chabant <ludovic@chabant.com>
parents:
586
diff
changeset
|
111 if self.theme_site: |
3ceeca7bb71c
themes: Add support for a `--theme` argument to `chef`.
Ludovic Chabant <ludovic@chabant.com>
parents:
586
diff
changeset
|
112 return None |
709
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
113 |
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
114 # See if there's a theme we absolutely want. |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
115 td = self._get_dir(THEME_DIR) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
116 if td is not None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
117 return td |
709
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
118 |
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
119 # Try to load a theme specified in the configuration. |
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
120 from piecrust.themes.base import ThemeLoader |
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
121 loader = ThemeLoader(self.root_dir) |
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
122 theme_dir = loader.getThemeDir() |
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
123 if theme_dir is not None: |
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
124 return theme_dir |
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
125 |
4285b2c9b872
themes: Add support for loading from a library of themes.
Ludovic Chabant <ludovic@chabant.com>
parents:
681
diff
changeset
|
126 # Nothing... use the default theme. |
271
12657039c436
internal: Re-use the cached resource directory.
Ludovic Chabant <ludovic@chabant.com>
parents:
260
diff
changeset
|
127 return os.path.join(RESOURCES_DIR, 'theme') |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
128 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
129 @cached_property |
848
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
815
diff
changeset
|
130 def plugins_dir(self): |
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
815
diff
changeset
|
131 return self._get_dir(PLUGINS_DIR) |
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
815
diff
changeset
|
132 |
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
815
diff
changeset
|
133 @cached_property |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
134 def cache_dir(self): |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
135 return os.path.join(self.root_dir, CACHE_DIR, self.cache_key) |
371
c2ca72fb7f0b
caching: Use separate caches for config variants and other contexts.
Ludovic Chabant <ludovic@chabant.com>
parents:
369
diff
changeset
|
136 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
137 @cached_property |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
138 def sources(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
139 defs = {} |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
140 for cls in self.plugin_loader.getSources(): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
141 defs[cls.SOURCE_NAME] = cls |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
142 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
143 sources = [] |
5 | 144 for n, s in self.config.get('site/sources').items(): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
145 cls = defs.get(s['type']) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
146 if cls is None: |
584
9ccc933ac2c7
internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
568
diff
changeset
|
147 raise ConfigurationError("No such page source type: %s" % |
9ccc933ac2c7
internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
568
diff
changeset
|
148 s['type']) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
149 src = cls(self, n, s) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
150 sources.append(src) |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
151 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
152 return sources |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
153 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
154 @cached_property |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
155 def routes(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
156 routes = [] |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
157 for r in self.config.get('site/routes'): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
158 rte = Route(self, r) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
159 routes.append(rte) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
160 return routes |
0 | 161 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
162 @cached_property |
758
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
163 def publishers(self): |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
164 defs_by_name = {} |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
165 defs_by_scheme = {} |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
166 for cls in self.plugin_loader.getPublishers(): |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
167 defs_by_name[cls.PUBLISHER_NAME] = cls |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
168 if cls.PUBLISHER_SCHEME: |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
169 defs_by_scheme[cls.PUBLISHER_SCHEME] = cls |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
170 |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
171 tgts = [] |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
172 publish_config = self.config.get('publish') |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
173 if publish_config is None: |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
174 return tgts |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
175 for n, t in publish_config.items(): |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
176 pub_type = None |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
177 is_scheme = False |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
178 if isinstance(t, dict): |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
179 pub_type = t.get('type') |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
180 elif isinstance(t, str): |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
181 comps = urllib.parse.urlparse(t) |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
182 pub_type = comps.scheme |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
183 is_scheme = True |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
184 cls = (defs_by_scheme.get(pub_type) if is_scheme |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
185 else defs_by_name.get(pub_type)) |
758
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
186 if cls is None: |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
187 raise ConfigurationError("No such publisher: %s" % pub_type) |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
188 tgt = cls(self, n, t) |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
189 tgts.append(tgt) |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
190 return tgts |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
191 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
192 def getSource(self, source_name): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
193 for source in self.sources: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
194 if source.name == source_name: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
195 return source |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
196 return None |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
197 |
711
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
709
diff
changeset
|
198 def getSourceRoutes(self, source_name): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
199 for route in self.routes: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
200 if route.source_name == source_name: |
711
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
709
diff
changeset
|
201 yield route |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
202 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
203 def getSourceRoute(self, source_name, route_params): |
711
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
709
diff
changeset
|
204 for route in self.getSourceRoutes(source_name): |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
205 if (route_params is None or |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
206 route.matchesParameters(route_params)): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
207 return route |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
208 return None |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
209 |
758
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
210 def getPublisher(self, target_name): |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
211 for pub in self.publishers: |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
212 if pub.target == target_name: |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
213 return pub |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
214 return None |
6abb436fea5b
publish: Make publisher more powerful and better exposed on the command line.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
215 |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
216 def getPage(self, content_item): |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
217 cache_key = content_item.spec |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
218 return self.env.page_repository.get( |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
219 cache_key, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
220 lambda: Page(content_item)) |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
221 |
0 | 222 def _get_dir(self, default_rel_dir): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
223 abs_dir = os.path.join(self.root_dir, default_rel_dir) |
0 | 224 if os.path.isdir(abs_dir): |
225 return abs_dir | |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
226 return None |
0 | 227 |
228 def _get_configurable_dirs(self, default_rel_dir, conf_name): | |
229 dirs = [] | |
230 | |
231 # Add custom directories from the configuration. | |
232 conf_dirs = self.config.get(conf_name) | |
233 if conf_dirs is not None: | |
5 | 234 if isinstance(conf_dirs, str): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
235 dirs.append(os.path.join(self.root_dir, conf_dirs)) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
236 else: |
56
2d617b889b00
Make template directories properly absolute.
Ludovic Chabant <ludovic@chabant.com>
parents:
39
diff
changeset
|
237 dirs += [os.path.join(self.root_dir, p) for p in conf_dirs] |
0 | 238 |
239 # Add the default directory if it exists. | |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
240 default_dir = os.path.join(self.root_dir, default_rel_dir) |
0 | 241 if os.path.isdir(default_dir): |
242 dirs.append(default_dir) | |
243 | |
244 return dirs | |
245 | |
466
456db44dcc53
bake: Pass the config variants and values from the CLI to the baker.
Ludovic Chabant <ludovic@chabant.com>
parents:
419
diff
changeset
|
246 |
456db44dcc53
bake: Pass the config variants and values from the CLI to the baker.
Ludovic Chabant <ludovic@chabant.com>
parents:
419
diff
changeset
|
247 def apply_variant_and_values(app, config_variant=None, config_values=None): |
456db44dcc53
bake: Pass the config variants and values from the CLI to the baker.
Ludovic Chabant <ludovic@chabant.com>
parents:
419
diff
changeset
|
248 if config_variant is not None: |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
249 logger.debug("Adding configuration variant '%s'." % config_variant) |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
250 variant_path = os.path.join( |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
251 app.root_dir, 'configs', '%s.yml' % config_variant) |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
252 app.config.addVariant(variant_path) |
466
456db44dcc53
bake: Pass the config variants and values from the CLI to the baker.
Ludovic Chabant <ludovic@chabant.com>
parents:
419
diff
changeset
|
253 |
456db44dcc53
bake: Pass the config variants and values from the CLI to the baker.
Ludovic Chabant <ludovic@chabant.com>
parents:
419
diff
changeset
|
254 if config_values is not None: |
456db44dcc53
bake: Pass the config variants and values from the CLI to the baker.
Ludovic Chabant <ludovic@chabant.com>
parents:
419
diff
changeset
|
255 for name, value in config_values: |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
256 logger.debug("Adding configuration override '%s': %s" % |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
257 (name, value)) |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
258 app.config.addVariantValue(name, value) |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
259 |
466
456db44dcc53
bake: Pass the config variants and values from the CLI to the baker.
Ludovic Chabant <ludovic@chabant.com>
parents:
419
diff
changeset
|
260 |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
261 class PieCrustFactory(object): |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
262 """ A class that builds a PieCrust app instance. |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
263 """ |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
264 def __init__( |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
265 self, root_dir, *, |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
266 cache=True, cache_key=None, |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
267 config_variant=None, config_values=None, |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
268 debug=False, theme_site=False): |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
269 self.root_dir = root_dir |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
270 self.cache = cache |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
271 self.cache_key = cache_key |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
272 self.config_variant = config_variant |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
273 self.config_values = config_values |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
274 self.debug = debug |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
275 self.theme_site = theme_site |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
276 |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
277 def create(self): |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
278 app = PieCrust( |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
279 self.root_dir, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
280 cache=self.cache, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
281 cache_key=self.cache_key, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
282 debug=self.debug, |
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
283 theme_site=self.theme_site) |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
284 apply_variant_and_values( |
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
285 app, self.config_variant, self.config_values) |
666
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
286 return app |
81d9c3a3a0b5
internal: Get rid of the whole "sub cache" business.
Ludovic Chabant <ludovic@chabant.com>
parents:
663
diff
changeset
|
287 |