diff options
| author | tanwanirahul | 2014-11-03 14:43:53 +0100 |
|---|---|---|
| committer | tanwanirahul | 2014-11-03 14:43:53 +0100 |
| commit | d972df7c9c1867b4a0a57307f423a488c4d4f4b1 (patch) | |
| tree | 2694b855d38d8779e55e818fa2d019a0a772cb4d /rest_framework/routers.py | |
| parent | 96bb77dc35a75df0fd9ad2fabb0f4661b2485600 (diff) | |
| download | django-rest-framework-d972df7c9c1867b4a0a57307f423a488c4d4f4b1.tar.bz2 | |
Ability to override default method names by customizing it
Diffstat (limited to 'rest_framework/routers.py')
| -rw-r--r-- | rest_framework/routers.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/rest_framework/routers.py b/rest_framework/routers.py index 169e6e8b..d1c9fa1b 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -176,23 +176,27 @@ class SimpleRouter(BaseRouter): if isinstance(route, DynamicDetailRoute): # Dynamic detail routes (@detail_route decorator) for httpmethods, methodname in detail_routes: + method_kwargs = getattr(viewset, methodname).kwargs + custom_method_name = method_kwargs.pop("custom_method_name", None) or methodname initkwargs = route.initkwargs.copy() - initkwargs.update(getattr(viewset, methodname).kwargs) + initkwargs.update(method_kwargs) ret.append(Route( - url=replace_methodname(route.url, methodname), + url=replace_methodname(route.url, custom_method_name), mapping=dict((httpmethod, methodname) for httpmethod in httpmethods), - name=replace_methodname(route.name, methodname), + name=replace_methodname(route.name, custom_method_name), initkwargs=initkwargs, )) elif isinstance(route, DynamicListRoute): # Dynamic list routes (@list_route decorator) for httpmethods, methodname in list_routes: + method_kwargs = getattr(viewset, methodname).kwargs + custom_method_name = method_kwargs.pop("custom_method_name", None) or methodname initkwargs = route.initkwargs.copy() - initkwargs.update(getattr(viewset, methodname).kwargs) + initkwargs.update(method_kwargs) ret.append(Route( - url=replace_methodname(route.url, methodname), + url=replace_methodname(route.url, custom_method_name), mapping=dict((httpmethod, methodname) for httpmethod in httpmethods), - name=replace_methodname(route.name, methodname), + name=replace_methodname(route.name, custom_method_name), initkwargs=initkwargs, )) else: |
