Mercurial > piecrust2
view piecrust/sources/interfaces.py @ 380:f33712c4cfab
routing: Fix bugs with matching URLs with correct route but missing metadata.
When matching a route like `/foo/%slug%` against an URL like `/foo`, the route
will (correctly) return a match, but it will be completely missing the `slug`
metadata, resulting in problems elsewhere. This change makes it so that any
missing route metadata will be filled in with an empty string.
And because this means generated URLs may differ from the incoming URL when
using trailing slashes (`/foo/` _vs._ `/foo`), we make the assert in the
chef server handle those discrepancies.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 10 May 2015 00:34:21 -0700 |
parents | f130365568ff |
children | 0c74a6c4533d |
line wrap: on
line source
class IPaginationSource(object): """ Defines the interface for a source that can be used as the data for an iterator or a pagination. """ def getItemsPerPage(self): raise NotImplementedError() def getSourceIterator(self): raise NotImplementedError() def getSorterIterator(self, it): raise NotImplementedError() def getTailIterator(self, it): raise NotImplementedError() def getPaginationFilter(self, page): raise NotImplementedError() def getSettingAccessor(self): raise NotImplementedError() class IListableSource: """ Defines the interface for a source that can be iterated on in a hierarchical manner, for use with the `family` data endpoint. """ def listPath(self, rel_path): raise NotImplementedError() def getDirpath(self, rel_path): raise NotImplementedError() def getBasename(self, rel_path): raise NotImplementedError() class IPreparingSource: """ Defines the interface for a source whose pages can be created by the `chef prepare` command. """ def setupPrepareParser(self, parser, app): raise NotImplementedError() def buildMetadata(self, args): raise NotImplementedError()