comparison piecrust/serving.py @ 231:137bcd498ef9

serve: Fix a bug where empty route metadata is not the same as invalid route. Some routes can capture no metadata at all, like for example when `foo/%path:slug%` is capturing URL `foo`. The route is still valid, so it returns an empty dictionary. It's not the same as returning `None`, which means "no match".
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 11 Feb 2015 08:31:13 -0800
parents a951cd4ef361
children e534d2bc657c
comparison
equal deleted inserted replaced
230:016d42c23ba9 231:137bcd498ef9
412 def find_routes(routes, uri): 412 def find_routes(routes, uri):
413 uri = uri.lstrip('/') 413 uri = uri.lstrip('/')
414 res = [] 414 res = []
415 for route in routes: 415 for route in routes:
416 metadata = route.matchUri(uri) 416 metadata = route.matchUri(uri)
417 if metadata: 417 if metadata is not None:
418 res.append((route, metadata)) 418 res.append((route, metadata))
419 return res 419 return res
420 420
421 421
422 class ErrorMessageLoader(FileSystemLoader): 422 class ErrorMessageLoader(FileSystemLoader):