Mercurial > piecrust2
comparison piecrust/sources/posts.py @ 792:58ebf50235a5
routing: Simplify how routes are defined.
* No more declaring the type of route parameters -- the sources and generators
already know what type each parameter is supposed to be.
* Same for variadic parameters -- we know already.
* Update cache version to force a clear reload of the config.
* Update tests.
TODO: simplify code in the `Route` class to use source or generator transparently.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 07 Sep 2016 08:58:41 -0700 |
parents | ff404adfcf45 |
children | f0930178fd01 |
comparison
equal
deleted
inserted
replaced
791:504d6817352d | 792:58ebf50235a5 |
---|---|
2 import os.path | 2 import os.path |
3 import re | 3 import re |
4 import logging | 4 import logging |
5 import datetime | 5 import datetime |
6 from piecrust import osutil | 6 from piecrust import osutil |
7 from piecrust.routing import RouteParameter | |
7 from piecrust.sources.base import ( | 8 from piecrust.sources.base import ( |
8 PageSource, InvalidFileSystemEndpointError, PageFactory, | 9 PageSource, InvalidFileSystemEndpointError, PageFactory, |
9 MODE_CREATING, MODE_PARSING) | 10 MODE_CREATING, MODE_PARSING) |
10 from piecrust.sources.interfaces import ( | 11 from piecrust.sources.interfaces import ( |
11 IPreparingSource, IInteractiveSource, InteractiveField) | 12 IPreparingSource, IInteractiveSource, InteractiveField) |
33 | 34 |
34 def resolveRef(self, ref_path): | 35 def resolveRef(self, ref_path): |
35 path = os.path.normpath(os.path.join(self.fs_endpoint_path, ref_path)) | 36 path = os.path.normpath(os.path.join(self.fs_endpoint_path, ref_path)) |
36 metadata = self._parseMetadataFromPath(ref_path) | 37 metadata = self._parseMetadataFromPath(ref_path) |
37 return path, metadata | 38 return path, metadata |
39 | |
40 def getSupportedRouteParameters(self): | |
41 return [ | |
42 RouteParameter('slug', RouteParameter.TYPE_STRING), | |
43 RouteParameter('day', RouteParameter.TYPE_INT2), | |
44 RouteParameter('month', RouteParameter.TYPE_INT2), | |
45 RouteParameter('year', RouteParameter.TYPE_INT4)] | |
38 | 46 |
39 def buildPageFactory(self, path): | 47 def buildPageFactory(self, path): |
40 if not path.startswith(self.fs_endpoint_path): | 48 if not path.startswith(self.fs_endpoint_path): |
41 raise Exception("Page path '%s' isn't inside '%s'." % ( | 49 raise Exception("Page path '%s' isn't inside '%s'." % ( |
42 path, self.fs_endpoint_path)) | 50 path, self.fs_endpoint_path)) |