Mercurial > piecrust2
annotate piecrust/environment.py @ 369:4b1019bb2533
serve: Giant refactor to change how we handle data when serving pages.
* We need a distinction between source metadata and route metadata. In most
cases they're the same, but in cases like taxonomy pages, route metadata
contains more things that can't be in source metadata if we want to re-use
cached pages.
* Create a new `QualifiedPage` type which is a page with a specific route
and route metadata. Pass this around in many places.
* Instead of passing an URL around, use the route in the `QualifiedPage` to
generate URLs. This is better since it removes the guess-work from trying
to generate URLs for sub-pages.
* Deep-copy app and page configurations before passing them around to things
that could modify them, like data builders and such.
* Exclude taxonomy pages from iterator data providers.
* Properly nest iterator data providers for when the theme and user page
sources are merged inside `site.pages`.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 03 May 2015 18:47:10 -0700 |
parents | aa6b7ff6a193 |
children | c2ca72fb7f0b |
rev | line source |
---|---|
47
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
1 import re |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
2 import time |
47
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
3 import json |
0 | 4 import logging |
336
aa6b7ff6a193
internal: Use hashes for cache paths.
Ludovic Chabant <ludovic@chabant.com>
parents:
158
diff
changeset
|
5 import hashlib |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
6 import threading |
114
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
7 import contextlib |
67
563ce5dd02af
I don't care what the YAML spec says, ordered maps are the only sane way.
Ludovic Chabant <ludovic@chabant.com>
parents:
52
diff
changeset
|
8 import collections |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
9 import repoze.lru |
0 | 10 |
11 | |
12 logger = logging.getLogger(__name__) | |
13 | |
14 | |
47
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
15 re_fs_cache_key = re.compile(r'[^\d\w\-\._]+') |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
16 |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
17 |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
18 def _make_fs_cache_key(key): |
336
aa6b7ff6a193
internal: Use hashes for cache paths.
Ludovic Chabant <ludovic@chabant.com>
parents:
158
diff
changeset
|
19 return hashlib.md5(key.encode('utf8')).hexdigest() |
47
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
20 |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
21 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
22 class MemCache(object): |
47
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
23 """ Simple memory cache. It can be backed by a simple file-system |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
24 cache, but items need to be JSON-serializable to do this. |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
25 """ |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
26 def __init__(self, size=2048): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
27 self.cache = repoze.lru.LRUCache(size) |
47
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
28 self.fs_cache = None |
96
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
29 self._invalidated_fs_items = set() |
114
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
30 self._lock = threading.RLock() |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
31 |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
32 @contextlib.contextmanager |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
33 def startBatchGet(self): |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
34 logger.debug("Starting batch cache operation.") |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
35 with self._lock: |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
36 yield |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
37 logger.debug("Ending batch cache operation.") |
96
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
38 |
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
39 def invalidate(self, key): |
114
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
40 with self._lock: |
96
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
41 logger.debug("Invalidating cache item '%s'." % key) |
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
42 self.cache.invalidate(key) |
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
43 if self.fs_cache: |
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
44 logger.debug("Invalidating FS cache item '%s'." % key) |
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
45 fs_key = _make_fs_cache_key(key) |
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
46 self._invalidated_fs_items.add(fs_key) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
47 |
49
fce061f8c2ed
Fix cache validation issue with rendered segments, limit disk access.
Ludovic Chabant <ludovic@chabant.com>
parents:
47
diff
changeset
|
48 def get(self, key, item_maker, fs_cache_time=None): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
49 item = self.cache.get(key) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
50 if item is None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
51 logger.debug("Acquiring lock for: %s" % key) |
114
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
52 with self._lock: |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
53 item = self.cache.get(key) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
54 if item is None: |
49
fce061f8c2ed
Fix cache validation issue with rendered segments, limit disk access.
Ludovic Chabant <ludovic@chabant.com>
parents:
47
diff
changeset
|
55 if (self.fs_cache is not None and |
fce061f8c2ed
Fix cache validation issue with rendered segments, limit disk access.
Ludovic Chabant <ludovic@chabant.com>
parents:
47
diff
changeset
|
56 fs_cache_time is not None): |
47
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
57 # Try first from the file-system cache. |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
58 fs_key = _make_fs_cache_key(key) |
96
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
59 if (fs_key not in self._invalidated_fs_items and |
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
60 self.fs_cache.isValid(fs_key, fs_cache_time)): |
49
fce061f8c2ed
Fix cache validation issue with rendered segments, limit disk access.
Ludovic Chabant <ludovic@chabant.com>
parents:
47
diff
changeset
|
61 logger.debug("'%s' found in file-system cache." % |
fce061f8c2ed
Fix cache validation issue with rendered segments, limit disk access.
Ludovic Chabant <ludovic@chabant.com>
parents:
47
diff
changeset
|
62 key) |
47
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
63 item_raw = self.fs_cache.read(fs_key) |
158
1187739e5a19
Fix some indentation and line lengths.
Ludovic Chabant <ludovic@chabant.com>
parents:
114
diff
changeset
|
64 item = json.loads( |
1187739e5a19
Fix some indentation and line lengths.
Ludovic Chabant <ludovic@chabant.com>
parents:
114
diff
changeset
|
65 item_raw, |
67
563ce5dd02af
I don't care what the YAML spec says, ordered maps are the only sane way.
Ludovic Chabant <ludovic@chabant.com>
parents:
52
diff
changeset
|
66 object_pairs_hook=collections.OrderedDict) |
47
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
67 self.cache.put(key, item) |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
68 return item |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
69 |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
70 # Look into the mem-cache. |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
71 logger.debug("'%s' not found in cache, must build." % key) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
72 item = item_maker() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
73 self.cache.put(key, item) |
47
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
74 |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
75 # Save to the file-system if needed. |
50
2fec3ee1298f
Properly override pages between realms.
Ludovic Chabant <ludovic@chabant.com>
parents:
49
diff
changeset
|
76 if (self.fs_cache is not None and |
2fec3ee1298f
Properly override pages between realms.
Ludovic Chabant <ludovic@chabant.com>
parents:
49
diff
changeset
|
77 fs_cache_time is not None): |
47
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
78 item_raw = json.dumps(item) |
558e3602be40
Cache rendered segments to disk.
Ludovic Chabant <ludovic@chabant.com>
parents:
32
diff
changeset
|
79 self.fs_cache.write(fs_key, item_raw) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
80 return item |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
81 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
82 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
83 class ExecutionInfo(object): |
96
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
84 def __init__(self, page, render_ctx): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
85 self.page = page |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
86 self.render_ctx = render_ctx |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
87 self.was_cache_valid = False |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
88 self.start_time = time.clock() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
89 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
90 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
91 class ExecutionInfoStack(threading.local): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
92 def __init__(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
93 self._page_stack = [] |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
94 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
95 @property |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
96 def current_page_info(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
97 if len(self._page_stack) == 0: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
98 return None |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
99 return self._page_stack[-1] |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
100 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
101 @property |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
102 def is_main_page(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
103 return len(self._page_stack) == 1 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
104 |
12
30a42341cfa8
Define page slugs properly, avoid recursions with debug data.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
105 def hasPage(self, page): |
30a42341cfa8
Define page slugs properly, avoid recursions with debug data.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
106 for ei in self._page_stack: |
30a42341cfa8
Define page slugs properly, avoid recursions with debug data.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
107 if ei.page == page: |
30a42341cfa8
Define page slugs properly, avoid recursions with debug data.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
108 return True |
30a42341cfa8
Define page slugs properly, avoid recursions with debug data.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
109 return False |
30a42341cfa8
Define page slugs properly, avoid recursions with debug data.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
110 |
96
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
111 def pushPage(self, page, render_ctx): |
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
112 if len(self._page_stack) > 0: |
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
113 top = self._page_stack[-1] |
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
114 assert top.page is not page |
0445a2232de7
Improvements and fixes to incremental baking.
Ludovic Chabant <ludovic@chabant.com>
parents:
67
diff
changeset
|
115 self._page_stack.append(ExecutionInfo(page, render_ctx)) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
116 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
117 def popPage(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
118 del self._page_stack[-1] |
0 | 119 |
114
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
120 def clear(self): |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
121 self._page_stack = [] |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
122 |
0 | 123 |
124 class Environment(object): | |
125 def __init__(self): | |
114
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
126 self.start_time = None |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
127 self.exec_info_stack = ExecutionInfoStack() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
128 self.was_cache_cleaned = False |
114
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
129 self.base_asset_url_format = '%uri%' |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
130 self.page_repository = MemCache() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
131 self.rendered_segments_repository = MemCache() |
111
208c652551a3
Quick fix for making the server correctly update referenced pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
96
diff
changeset
|
132 self.fs_caches = { |
208c652551a3
Quick fix for making the server correctly update referenced pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
96
diff
changeset
|
133 'renders': self.rendered_segments_repository} |
114
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
134 |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
135 def initialize(self, app): |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
136 self.start_time = time.clock() |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
137 self.exec_info_stack.clear() |
371a6c879ab9
When possible, try and batch-load pages so we only lock once.
Ludovic Chabant <ludovic@chabant.com>
parents:
111
diff
changeset
|
138 self.was_cache_cleaned = False |
32
43091c9837bf
Fix problems with asset URLs.
Ludovic Chabant <ludovic@chabant.com>
parents:
12
diff
changeset
|
139 self.base_asset_url_format = '%uri%' |
0 | 140 |
111
208c652551a3
Quick fix for making the server correctly update referenced pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
96
diff
changeset
|
141 for name, repo in self.fs_caches.items(): |
208c652551a3
Quick fix for making the server correctly update referenced pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
96
diff
changeset
|
142 cache = app.cache.getCache(name) |
208c652551a3
Quick fix for making the server correctly update referenced pages.
Ludovic Chabant <ludovic@chabant.com>
parents:
96
diff
changeset
|
143 repo.fs_cache = cache |
0 | 144 |
145 | |
146 class StandardEnvironment(Environment): | |
1
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
0
diff
changeset
|
147 def __init__(self): |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
0
diff
changeset
|
148 super(StandardEnvironment, self).__init__() |
0 | 149 |