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))