equal
deleted
inserted
replaced
63 def _add_item (self, url, title) : |
63 def _add_item (self, url, title) : |
64 """ |
64 """ |
65 Add item to pages list |
65 Add item to pages list |
66 """ |
66 """ |
67 |
67 |
|
68 # remove index from URL |
|
69 if url.endswith('/index') or url == 'index' : |
|
70 url = url[:-len('/index')] |
|
71 |
68 self.pages.append((url, title)) |
72 self.pages.append((url, title)) |
69 |
73 |
70 def get_title (self, page) : |
74 def get_title (self, page) : |
71 """ |
75 """ |
72 Gets the title for the given page, or None if not found |
76 Gets the title for the given page, or None if not found |
118 self.url = url |
122 self.url = url |
119 self.path = path |
123 self.path = path |
120 self.basename = basename |
124 self.basename = basename |
121 self.url_tail = url_tail |
125 self.url_tail = url_tail |
122 |
126 |
|
127 # unbound |
|
128 self.request = None |
|
129 |
123 # sub-init |
130 # sub-init |
124 self._init() |
131 self._init() |
125 |
132 |
126 def _init (self) : |
133 def _init (self) : |
127 """ |
134 """ |
128 Do initial data loading, etc |
135 Do initial data loading, etc |
129 """ |
136 """ |
130 |
137 |
131 pass |
138 pass |
|
139 |
|
140 def bind_request (self, request) : |
|
141 """ |
|
142 Bind this page-render to the given request |
|
143 """ |
|
144 |
|
145 self.request = request |
132 |
146 |
133 @property |
147 @property |
134 def title (self) : |
148 def title (self) : |
135 """ |
149 """ |
136 Return the page's title |
150 Return the page's title |
177 def content (self) : |
191 def content (self) : |
178 """ |
192 """ |
179 Loads the .tmpl file, and renders it |
193 Loads the .tmpl file, and renders it |
180 """ |
194 """ |
181 |
195 |
182 return template.render_file(self.path) |
196 return template.render_file(self.path, |
|
197 request = self.request, |
|
198 ) |
183 |
199 |
184 # list of page handlers, by type |
200 # list of page handlers, by type |
185 TYPE_HANDLERS = [ |
201 TYPE_HANDLERS = [ |
186 ('html', HTMLPage ), |
202 ('html', HTMLPage ), |
187 (template.TEMPLATE_EXT, TemplatePage ), |
203 (template.TEMPLATE_EXT, TemplatePage ), |
213 |
229 |
214 # name segments |
230 # name segments |
215 segments = name.split('/') |
231 segments = name.split('/') |
216 |
232 |
217 # iterate through the parts of the page segments |
233 # iterate through the parts of the page segments |
218 while segments : |
234 while True : |
|
235 segment = None |
|
236 |
219 # pop segment |
237 # pop segment |
220 segment = segments.pop(0) |
238 if segments : |
221 |
239 segment = segments.pop(0) |
222 # add to page url |
240 |
223 url_segments.append(segment) |
241 url_segments.append(segment) |
224 |
242 |
225 # translate empty -> index |
243 # translate empty -> index |
226 if not segment : |
244 if not segment : |
227 segment = 'index' |
245 segment = 'index' |
228 |
246 |
229 # look for it in the dir |
247 # look for it in the dir |
230 for filename in os.listdir(path) : |
248 for filename in os.listdir(path) : |
231 # build full file path |
249 # build full file path |
232 file_path = os.path.join(path, filename) |
250 file_path = os.path.join(path, filename) |
233 |
251 |
252 |
270 |
253 else : |
271 else : |
254 # inspect next file in dir |
272 # inspect next file in dir |
255 continue |
273 continue |
256 |
274 |
|
275 else : |
|
276 # did not find any dir or file, break out of while loop |
|
277 break |
|
278 |
257 # did not find the filename we were looking for in os.listdir |
279 # did not find the filename we were looking for in os.listdir |
258 raise PageError("Page not found: %s" % name, status='404 Not Found') |
280 raise PageError("Page not found: %s" % name, status='404 Not Found') |
259 |
281 |