Wrap action decorator for old url_name behavior

This commit is contained in:
Ryan P Kilby 2018-04-04 12:21:12 -04:00
parent bf561559bd
commit 2cc1bf7cf6

View File

@ -148,13 +148,7 @@ def action(methods=None, detail=None, url_path=None, url_name=None, **kwargs):
func.bind_to_methods = methods func.bind_to_methods = methods
func.detail = detail func.detail = detail
func.url_path = url_path if url_path else func.__name__ func.url_path = url_path if url_path else func.__name__
func.url_name = url_name func.url_name = url_name if url_name else func.__name__.replace('_', '-')
if not url_name:
# Remove in 3.10
if kwargs.get('_url_name_from_path', False):
func.url_name = func.url_path.replace('_', '-')
else:
func.url_name = func.__name__.replace('_', '-')
func.kwargs = kwargs func.kwargs = kwargs
return func return func
return decorator return decorator
@ -169,7 +163,13 @@ def detail_route(methods=None, **kwargs):
"`action`, which accepts a `detail` bool. Use `@action(detail=True)` instead.", "`action`, which accepts a `detail` bool. Use `@action(detail=True)` instead.",
PendingDeprecationWarning, stacklevel=2 PendingDeprecationWarning, stacklevel=2
) )
return action(methods, detail=True, _url_name_from_path=True, **kwargs)
def decorator(func):
func = action(methods, detail=True, **kwargs)(func)
if 'url_name' not in kwargs:
func.url_name = func.url_path.replace('_', '-')
return func
return decorator
def list_route(methods=None, **kwargs): def list_route(methods=None, **kwargs):
@ -181,4 +181,10 @@ def list_route(methods=None, **kwargs):
"`action`, which accepts a `detail` bool. Use `@action(detail=False)` instead.", "`action`, which accepts a `detail` bool. Use `@action(detail=False)` instead.",
PendingDeprecationWarning, stacklevel=2 PendingDeprecationWarning, stacklevel=2
) )
return action(methods, detail=False, _url_name_from_path=True, **kwargs)
def decorator(func):
func = action(methods, detail=False, **kwargs)(func)
if 'url_name' not in kwargs:
func.url_name = func.url_path.replace('_', '-')
return func
return decorator