Skip to content

Commit

Permalink
Backward support for "websocket_handler_" prefix in view_name
Browse files Browse the repository at this point in the history
  • Loading branch information
laggardkernel committed Mar 1, 2021
1 parent 6525c76 commit 68fa301
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions sanic/app.py
Expand Up @@ -12,6 +12,7 @@
from traceback import format_exc
from typing import Any, Dict, Optional, Type, Union
from urllib.parse import urlencode, urlunparse
from warnings import warn

from sanic import reloader_helpers
from sanic.asgi import ASGIApp
Expand Down Expand Up @@ -745,6 +746,23 @@ def url_for(self, view_name: str, **kwargs):
kw.update(name=view_name)

uri, route = self.router.find_route_by_view_name(view_name, **kw)

# TODO(laggardkernel): this fix should be removed in v21.3.
# Try again without the unnecessary prefix "websocket_handler_",
# which was added by accident on non-blueprint handlers. GH-2021
if not (uri and route) and view_name.startswith("websocket_handler_"):
view_name = view_name[18:]
uri, route = self.router.find_route_by_view_name(view_name, **kw)
if uri and route:
warn(
"The bug of adding unnecessary `websocket_handler_` prefix "
"in `view_name` param for non-blueprint handlers is fixed. "
"This backward support will be removed in v21.3. Please "
"update `Sanic.url_for()` callings in your code soon.",
DeprecationWarning,
stacklevel=2,
)

if not (uri and route):
raise URLBuildError(
f"Endpoint with name `{view_name}` was not found"
Expand Down

0 comments on commit 68fa301

Please sign in to comment.