Skip to content

Commit

Permalink
support regexes as URL paths in django's bokeh_apps. Fixes bokeh#9946.
Browse files Browse the repository at this point in the history
  • Loading branch information
wearpants committed Apr 20, 2020
1 parent 820aa97 commit e97d839
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 5 deletions.
3 changes: 3 additions & 0 deletions bokeh/server/contexts.py
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,9 @@ def __getattr__(self, name):
return val
return super.__getattr__(name)

def __getitem__(self, name):
return self._request[name]

#-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
9 changes: 4 additions & 5 deletions bokeh/server/django/routing.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,16 +114,15 @@ def get_websocket_urlpatterns(self) -> List[URLPattern]:
def _add_new_routing(self, routing: Routing) -> None:
kwargs = dict(app_context=routing.app_context)

def join(*components):
return "/".join([ component.strip("/") for component in components if component ])

def urlpattern(suffix=""):
return r"^{}$".format(join(re.escape(routing.url)) + suffix)
if routing.url.endswith("/") and suffix.startswith("/"):
suffix = suffix[1:]
return r"^{}$".format(routing.url + suffix)

if routing.document:
self._http_urlpatterns.append(url(urlpattern(), DocConsumer, kwargs=kwargs))
if routing.autoload:
self._http_urlpatterns.append(url(urlpattern("/autoload.js"), AutoloadJsConsumer, kwargs=kwargs))
self._http_urlpatterns.append(url(urlpattern("/autoload\.js"), AutoloadJsConsumer, kwargs=kwargs))

self._websocket_urlpatterns.append(url(urlpattern("/ws"), WSConsumer, kwargs=kwargs))

Expand Down

0 comments on commit e97d839

Please sign in to comment.