Skip to content

Commit

Permalink
track added routes to avoid duplicates (e.g. 'message' for show, upda…
Browse files Browse the repository at this point in the history
…te, and delete actions)
  • Loading branch information
Yeeland Chen authored and Yeeland Chen committed Jun 14, 2011
1 parent 033c05b commit 3acef5e
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions pyramid_routehelper/__init__.py
Expand Up @@ -228,20 +228,29 @@ def swap(dct, newdct):
collection_path = path
new_path = path + '/new'
member_path = path + '/:id'

added_route_names = []

def add_route_and_view(self, action, route_name, path, request_method='any'):
if request_method != 'any':
request_method = request_method.upper()
else:
request_method = None

self.add_route(route_name, path, **kwargs)
if route_name not in added_route_names: # Check if the route name has been added already
self.add_route(route_name, path, **kwargs)
added_route_names.append(route_name)

self.add_view(view=handler, attr=action, route_name=route_name, request_method=request_method, **action_kwargs.get(action, {}).get('default', {}))

for format_kwargs in action_kwargs.get(action, {}).get('formatted', []):
format = format_kwargs.pop('format')
self.add_route("%s_formatted_%s" % (format, route_name),
"%s.%s" % (path, format), **kwargs)
formatted_route_name = "%s_formatted_%s" % (format, route_name)

if formatted_route_name not in added_route_names: # Check if the route name has been added already
added_route_names.append(formatted_route_name)
self.add_route(formatted_route_name, "%s.%s" % (path, format), **kwargs)

self.add_view(view=handler, attr=format_kwargs.pop('attr'), request_method=request_method,
route_name = "%s_formatted_%s" % (format, route_name), **format_kwargs)

Expand Down

0 comments on commit 3acef5e

Please sign in to comment.