From a6b51e9acbcd936114674ef7894aecfab061a42b Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Thu, 30 Apr 2009 18:17:29 +0000 Subject: Speed up / clarify 'traversal' module's 'model_path', 'model_path_tuple', and '_model_path_list' functions. --- CHANGES.txt | 3 +++ repoze/bfg/traversal.py | 19 +++++-------------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 5070ee707..17e75f66f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -98,6 +98,9 @@ Features - The notfound debug now shows the traversed path, the virtual root, and the virtual root path too. +- Speed up / clarify 'traversal' module's 'model_path', 'model_path_tuple', + and '_model_path_list' functions. + 0.7.0 (2009-04-11) ================== diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py index 40358ee7f..901368bba 100644 --- a/repoze/bfg/traversal.py +++ b/repoze/bfg/traversal.py @@ -180,11 +180,8 @@ def model_path(model, *elements): effectively replaced with a leading ``/``) when the path is generated. """ - path_list = _model_path_list(model, *elements) - if path_list: - path_list = [ quote_path_segment(name) for name in path_list ] - return '/' + '/'.join(path_list) - return '/' + path = _model_path_list(model, *elements) + return path and '/'.join([quote_path_segment(x) for x in path]) or '/' def model_path_tuple(model, *elements): """ @@ -220,19 +217,13 @@ def model_path_tuple(model, *elements): always be ignored (and effectively replaced with ``''``) when the path is generated. """ - path = _model_path_list(model, *elements) - if path: - return ('',) + tuple(path) - return ('',) + return tuple(_model_path_list(model, *elements)) def _model_path_list(model, *elements): """ Implementation detail shared by model_path and model_path_tuple """ - lpath = reversed(list(lineage(model))[:-1]) + lpath = reversed(list(lineage(model))) path = [ location.__name__ or '' for location in lpath ] - - if elements: - path = path + list(elements) - + path.extend(elements) return path def virtual_root(model, request): -- cgit v1.2.3