Adding allow route overwrite option
This commit is contained in:
parent
5ee36fd933
commit
50220ec738
@ -415,8 +415,11 @@ class Sanic(StaticHandleMixin, BaseSanic, StartupMixin, metaclass=TouchUpMeta):
|
|||||||
def _apply_listener(self, listener: FutureListener):
|
def _apply_listener(self, listener: FutureListener):
|
||||||
return self.register_listener(listener.listener, listener.event)
|
return self.register_listener(listener.listener, listener.event)
|
||||||
|
|
||||||
def _apply_route(self, route: FutureRoute) -> List[Route]:
|
def _apply_route(
|
||||||
|
self, route: FutureRoute, overwrite: bool = False
|
||||||
|
) -> List[Route]:
|
||||||
params = route._asdict()
|
params = route._asdict()
|
||||||
|
params["overwrite"] = overwrite
|
||||||
websocket = params.pop("websocket", False)
|
websocket = params.pop("websocket", False)
|
||||||
subprotocols = params.pop("subprotocols", None)
|
subprotocols = params.pop("subprotocols", None)
|
||||||
|
|
||||||
|
@ -93,6 +93,7 @@ class Blueprint(BaseSanic):
|
|||||||
"_future_listeners",
|
"_future_listeners",
|
||||||
"_future_exceptions",
|
"_future_exceptions",
|
||||||
"_future_signals",
|
"_future_signals",
|
||||||
|
"allow_route_overwrite",
|
||||||
"ctx",
|
"ctx",
|
||||||
"exceptions",
|
"exceptions",
|
||||||
"host",
|
"host",
|
||||||
@ -115,9 +116,11 @@ class Blueprint(BaseSanic):
|
|||||||
version: Optional[Union[int, str, float]] = None,
|
version: Optional[Union[int, str, float]] = None,
|
||||||
strict_slashes: Optional[bool] = None,
|
strict_slashes: Optional[bool] = None,
|
||||||
version_prefix: str = "/v",
|
version_prefix: str = "/v",
|
||||||
|
allow_route_overwrite: bool = False,
|
||||||
):
|
):
|
||||||
super().__init__(name=name)
|
super().__init__(name=name)
|
||||||
self.reset()
|
self.reset()
|
||||||
|
self.allow_route_overwrite = allow_route_overwrite
|
||||||
self.ctx = SimpleNamespace()
|
self.ctx = SimpleNamespace()
|
||||||
self.host = host
|
self.host = host
|
||||||
self.strict_slashes = strict_slashes
|
self.strict_slashes = strict_slashes
|
||||||
@ -167,6 +170,7 @@ class Blueprint(BaseSanic):
|
|||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self._apps: Set[Sanic] = set()
|
self._apps: Set[Sanic] = set()
|
||||||
|
self.allow_route_overwrite = False
|
||||||
self.exceptions: List[RouteHandler] = []
|
self.exceptions: List[RouteHandler] = []
|
||||||
self.listeners: Dict[str, List[ListenerType[Any]]] = {}
|
self.listeners: Dict[str, List[ListenerType[Any]]] = {}
|
||||||
self.middlewares: List[MiddlewareType] = []
|
self.middlewares: List[MiddlewareType] = []
|
||||||
@ -180,6 +184,7 @@ class Blueprint(BaseSanic):
|
|||||||
url_prefix: Optional[Union[str, Default]] = _default,
|
url_prefix: Optional[Union[str, Default]] = _default,
|
||||||
version: Optional[Union[int, str, float, Default]] = _default,
|
version: Optional[Union[int, str, float, Default]] = _default,
|
||||||
version_prefix: Union[str, Default] = _default,
|
version_prefix: Union[str, Default] = _default,
|
||||||
|
allow_route_overwrite: bool = _default,
|
||||||
strict_slashes: Optional[Union[bool, Default]] = _default,
|
strict_slashes: Optional[Union[bool, Default]] = _default,
|
||||||
with_registration: bool = True,
|
with_registration: bool = True,
|
||||||
with_ctx: bool = False,
|
with_ctx: bool = False,
|
||||||
@ -222,6 +227,8 @@ class Blueprint(BaseSanic):
|
|||||||
new_bp.strict_slashes = strict_slashes
|
new_bp.strict_slashes = strict_slashes
|
||||||
if not isinstance(version_prefix, Default):
|
if not isinstance(version_prefix, Default):
|
||||||
new_bp.version_prefix = version_prefix
|
new_bp.version_prefix = version_prefix
|
||||||
|
if not isinstance(allow_route_overwrite, Default):
|
||||||
|
new_bp.allow_route_overwrite = allow_route_overwrite
|
||||||
|
|
||||||
for key, value in attrs_backup.items():
|
for key, value in attrs_backup.items():
|
||||||
setattr(self, key, value)
|
setattr(self, key, value)
|
||||||
@ -277,7 +284,7 @@ class Blueprint(BaseSanic):
|
|||||||
bps.append(bp)
|
bps.append(bp)
|
||||||
return bps
|
return bps
|
||||||
|
|
||||||
def register(self, app, options):
|
def register(self, app: Sanic, options: Dict[str, Any]):
|
||||||
"""
|
"""
|
||||||
Register the blueprint to the sanic app.
|
Register the blueprint to the sanic app.
|
||||||
|
|
||||||
@ -351,7 +358,9 @@ class Blueprint(BaseSanic):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
registered.add(apply_route)
|
registered.add(apply_route)
|
||||||
route = app._apply_route(apply_route)
|
route = app._apply_route(
|
||||||
|
apply_route, overwrite=self.allow_route_overwrite
|
||||||
|
)
|
||||||
operation = (
|
operation = (
|
||||||
routes.extend if isinstance(route, list) else routes.append
|
routes.extend if isinstance(route, list) else routes.append
|
||||||
)
|
)
|
||||||
|
@ -78,6 +78,7 @@ class Router(BaseRouter):
|
|||||||
unquote: bool = False,
|
unquote: bool = False,
|
||||||
static: bool = False,
|
static: bool = False,
|
||||||
version_prefix: str = "/v",
|
version_prefix: str = "/v",
|
||||||
|
overwrite: bool = False,
|
||||||
error_format: Optional[str] = None,
|
error_format: Optional[str] = None,
|
||||||
) -> Union[Route, List[Route]]:
|
) -> Union[Route, List[Route]]:
|
||||||
"""
|
"""
|
||||||
@ -120,6 +121,7 @@ class Router(BaseRouter):
|
|||||||
name=name,
|
name=name,
|
||||||
strict=strict_slashes,
|
strict=strict_slashes,
|
||||||
unquote=unquote,
|
unquote=unquote,
|
||||||
|
overwrite=overwrite,
|
||||||
)
|
)
|
||||||
|
|
||||||
if isinstance(host, str):
|
if isinstance(host, str):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user