@@ -170,58 +170,51 @@ def _handle_error(error):
170
170
self .registered_paths = {}
171
171
172
172
# urls
173
+ self .routes = []
173
174
174
- def add_url (name , view_func , methods = ('GET' ,)):
175
- self .server .add_url_rule (
176
- name ,
177
- view_func = view_func ,
178
- endpoint = name ,
179
- methods = list (methods )
180
- )
181
-
182
- add_url (
175
+ self ._add_url (
183
176
'{}_dash-layout' .format (self .config ['routes_pathname_prefix' ]),
184
177
self .serve_layout )
185
178
186
- add_url (
179
+ self . _add_url (
187
180
'{}_dash-dependencies' .format (
188
181
self .config ['routes_pathname_prefix' ]),
189
182
self .dependencies )
190
183
191
- add_url (
184
+ self . _add_url (
192
185
'{}_dash-update-component' .format (
193
186
self .config ['routes_pathname_prefix' ]),
194
187
self .dispatch ,
195
188
['POST' ])
196
189
197
- add_url ((
190
+ self . _add_url ((
198
191
'{}_dash-component-suites'
199
192
'/<string:package_name>'
200
193
'/<path:path_in_package_dist>' ).format (
201
194
self .config ['routes_pathname_prefix' ]),
202
- self .serve_component_suites )
195
+ self .serve_component_suites )
203
196
204
- add_url (
197
+ self . _add_url (
205
198
'{}_dash-routes' .format (self .config ['routes_pathname_prefix' ]),
206
199
self .serve_routes )
207
200
208
- add_url (
201
+ self . _add_url (
209
202
self .config ['routes_pathname_prefix' ],
210
203
self .index )
211
204
212
205
# catch-all for front-end routes, used by dcc.Location
213
- add_url (
206
+ self . _add_url (
214
207
'{}<path:path>' .format (self .config ['routes_pathname_prefix' ]),
215
208
self .index )
216
209
217
- add_url ('{}_favicon.ico' .format (self .config ['routes_pathname_prefix' ]),
218
- self ._serve_default_favicon )
210
+ self ._add_url (
211
+ '{}_favicon.ico' .format (self .config ['routes_pathname_prefix' ]),
212
+ self ._serve_default_favicon )
219
213
220
214
self .server .before_first_request (self ._setup_server )
221
215
222
216
self ._layout = None
223
217
self ._cached_layout = None
224
- self .routes = []
225
218
self ._dev_tools = _AttributeDict ({
226
219
'serve_dev_bundles' : False
227
220
})
@@ -230,6 +223,17 @@ def add_url(name, view_func, methods=('GET',)):
230
223
self .server .errorhandler (exceptions .InvalidResourceError )(
231
224
self ._invalid_resources_handler )
232
225
226
+ def _add_url (self , name , view_func , methods = ('GET' ,)):
227
+ self .server .add_url_rule (
228
+ name ,
229
+ view_func = view_func ,
230
+ endpoint = name ,
231
+ methods = list (methods ))
232
+
233
+ # record the url in Dash.routes so that it can be accessed later
234
+ # e.g. for adding authentication with flask_login
235
+ self .routes .append (name )
236
+
233
237
@property
234
238
def layout (self ):
235
239
return self ._layout
0 commit comments