Commit 940cf2e2 by Yannick PEROUX

Remove duplicated code in routers.SimpleRouter

parent 90f1c04c
...@@ -165,11 +165,9 @@ class SimpleRouter(BaseRouter): ...@@ -165,11 +165,9 @@ class SimpleRouter(BaseRouter):
else: else:
list_routes.append((httpmethods, methodname)) list_routes.append((httpmethods, methodname))
def _get_dynamic_routes(route, dynamic_routes):
ret = [] ret = []
for route in self.routes: for httpmethods, methodname in dynamic_routes:
if isinstance(route, DynamicDetailRoute):
# Dynamic detail routes (@detail_route decorator)
for httpmethods, methodname in detail_routes:
method_kwargs = getattr(viewset, methodname).kwargs method_kwargs = getattr(viewset, methodname).kwargs
initkwargs = route.initkwargs.copy() initkwargs = route.initkwargs.copy()
initkwargs.update(method_kwargs) initkwargs.update(method_kwargs)
...@@ -180,19 +178,17 @@ class SimpleRouter(BaseRouter): ...@@ -180,19 +178,17 @@ class SimpleRouter(BaseRouter):
name=replace_methodname(route.name, url_path), name=replace_methodname(route.name, url_path),
initkwargs=initkwargs, initkwargs=initkwargs,
)) ))
return ret
ret = []
for route in self.routes:
if isinstance(route, DynamicDetailRoute):
# Dynamic detail routes (@detail_route decorator)
ret += _get_dynamic_routes(route, detail_routes)
elif isinstance(route, DynamicListRoute): elif isinstance(route, DynamicListRoute):
# Dynamic list routes (@list_route decorator) # Dynamic list routes (@list_route decorator)
for httpmethods, methodname in list_routes: ret += _get_dynamic_routes(route, list_routes)
method_kwargs = getattr(viewset, methodname).kwargs
initkwargs = route.initkwargs.copy()
initkwargs.update(method_kwargs)
url_path = initkwargs.pop("url_path", None) or methodname
ret.append(Route(
url=replace_methodname(route.url, url_path),
mapping=dict((httpmethod, methodname) for httpmethod in httpmethods),
name=replace_methodname(route.name, url_path),
initkwargs=initkwargs,
))
else: else:
# Standard route # Standard route
ret.append(route) ret.append(route)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment