Skip to content

Commit

Permalink
Speed up / clarify 'traversal' module's 'model_path', 'model_path_tup…
Browse files Browse the repository at this point in the history
…le',

and '_model_path_list' functions.
  • Loading branch information
tseaver committed Apr 30, 2009
1 parent 27b8759 commit a6b51e9
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 14 deletions.
3 changes: 3 additions & 0 deletions CHANGES.txt
Expand Up @@ -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)
==================

Expand Down
19 changes: 5 additions & 14 deletions repoze/bfg/traversal.py
Expand Up @@ -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):
"""
Expand Down Expand Up @@ -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):
Expand Down

0 comments on commit a6b51e9

Please sign in to comment.