Skip to content

Commit 8c52bbb

Browse files
committed
fixing issue with apps overwriting other paths
1 parent 1112f77 commit 8c52bbb

3 files changed

Lines changed: 20 additions & 19 deletions

File tree

dash/dash.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ def _add_url(self, name: str, view_func: RouteCallable, methods=("GET",)) -> Non
742742
self.routes.append(full_name)
743743

744744
def _setup_routes(self):
745-
self.server_factory.setup_component_suites(self.server, self)
745+
self.server_factory.setup_component_suites(self)
746746
self._add_url("_dash-layout", self.serve_layout)
747747
self._add_url("_dash-dependencies", self.dependencies)
748748
self._add_url(
@@ -755,8 +755,8 @@ def _setup_routes(self):
755755
"_favicon.ico",
756756
self.server_factory._serve_default_favicon, # pylint: disable=protected-access
757757
)
758-
self.server_factory.setup_index(self.server, self)
759-
self.server_factory.setup_catchall(self.server, self)
758+
self.server_factory.setup_index(self)
759+
self.server_factory.setup_catchall(self)
760760

761761
if jupyter_dash.active:
762762
self._add_url(

dash/server_factories/fastapi_factory.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,16 +83,17 @@ async def wrapped(*_args, **_kwargs):
8383

8484
return wrapped
8585

86-
def setup_index(self, app, dash_app):
86+
def setup_index(self, dash_app):
8787
async def index(request: Request):
8888
adapter = FastAPIRequestAdapter()
8989
set_request_adapter(adapter)
9090
adapter.set_request(request)
9191
return Response(content=dash_app.render_index(), media_type="text/html")
9292

93-
self.add_url_rule(app, "/", index, endpoint="index", methods=["GET"])
93+
# pylint: disable=protected-access
94+
dash_app._add_url("", index, methods=["GET"])
9495

95-
def setup_catchall(self, app, dash_app):
96+
def setup_catchall(self, dash_app):
9697
@dash_app.server.on_event("startup")
9798
def _setup_catchall():
9899
dash_app.enable_dev_tools(
@@ -105,9 +106,8 @@ async def catchall(request: Request):
105106
adapter.set_request(request)
106107
return Response(content=dash_app.render_index(), media_type="text/html")
107108

108-
self.add_url_rule(
109-
app, "/{path:path}", catchall, endpoint="catchall", methods=["GET"]
110-
)
109+
# pylint: disable=protected-access
110+
dash_app._add_url("{path:path}", catchall, methods=["GET"])
111111

112112
def add_url_rule(self, app, rule, view_func, endpoint=None, methods=None):
113113
if rule == "":
@@ -213,15 +213,15 @@ def serve_component_suites(
213213
return StarletteResponse(status_code=304)
214214
return StarletteResponse(content=data, media_type=mimetype, headers=headers)
215215

216-
def setup_component_suites(self, app, dash_app):
216+
def setup_component_suites(self, dash_app):
217217
async def serve(request: Request, package_name: str, fingerprinted_path: str):
218218
return self.serve_component_suites(
219219
dash_app, package_name, fingerprinted_path, request
220220
)
221221

222222
# pylint: disable=protected-access
223223
dash_app._add_url(
224-
"/_dash-component-suites/<string:package_name>/<path:fingerprinted_path>",
224+
"_dash-component-suites/<string:package_name>/<path:fingerprinted_path>",
225225
serve,
226226
)
227227

dash/server_factories/flask_factory.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ def _wrap_errors(error):
5050
return tb, 500
5151

5252
def add_url_rule(self, app, rule, view_func, endpoint=None, methods=None):
53+
print(rule, endpoint, methods)
5354
app.add_url_rule(
5455
rule, view_func=view_func, endpoint=endpoint, methods=methods or ["GET"]
5556
)
@@ -72,23 +73,23 @@ def jsonify(self, obj):
7273
def get_request_adapter(self):
7374
return FlaskRequestAdapter
7475

75-
def setup_catchall(self, app, dash_app):
76+
def setup_catchall(self, dash_app):
7677
def catchall(*args, **kwargs):
7778
adapter = FlaskRequestAdapter()
7879
set_request_adapter(adapter)
7980
return dash_app.render_index(*args, **kwargs)
8081

81-
self.add_url_rule(
82-
app, "/<path:path>", catchall, endpoint="catchall", methods=["GET"]
83-
)
82+
# pylint: disable=protected-access
83+
dash_app._add_url("<path:path>", catchall, methods=["GET"])
8484

85-
def setup_index(self, app, dash_app):
85+
def setup_index(self, dash_app):
8686
def index(*args, **kwargs):
8787
adapter = FlaskRequestAdapter()
8888
set_request_adapter(adapter)
8989
return dash_app.render_index(*args, **kwargs)
9090

91-
self.add_url_rule(app, "/", index, endpoint="/", methods=["GET"])
91+
# pylint: disable=protected-access
92+
dash_app._add_url("", index, methods=["GET"])
9293

9394
def serve_component_suites(self, dash_app, package_name, fingerprinted_path):
9495
path_in_pkg, has_fingerprint = check_fingerprint(fingerprinted_path)
@@ -115,15 +116,15 @@ def serve_component_suites(self, dash_app, package_name, fingerprinted_path):
115116
response = flask.Response(None, status=304)
116117
return response
117118

118-
def setup_component_suites(self, app, dash_app):
119+
def setup_component_suites(self, dash_app):
119120
def serve(package_name, fingerprinted_path):
120121
return self.serve_component_suites(
121122
dash_app, package_name, fingerprinted_path
122123
)
123124

124125
# pylint: disable=protected-access
125126
dash_app._add_url(
126-
"/_dash-component-suites/<string:package_name>/<path:fingerprinted_path>",
127+
"_dash-component-suites/<string:package_name>/<path:fingerprinted_path>",
127128
serve,
128129
)
129130

0 commit comments

Comments
 (0)