Moved BaseView.absolute_url() to Datasette

This commit is contained in:
Simon Willison 2019-04-13 12:16:05 -07:00
commit 13ee3c222f
3 changed files with 9 additions and 9 deletions

View file

@ -398,6 +398,12 @@ class Datasette:
labeled_fks[(fk["column"], id)] = value
return labeled_fks
def absolute_url(self, request, path):
url = urllib.parse.urljoin(request.url, path)
if url.startswith("http://") and self.config("force_https_urls"):
url = "https://" + url[len("http://"):]
return url
def inspect(self):
" Inspect the database and return a dictionary of table metadata "
if self._inspect:

View file

@ -207,12 +207,6 @@ class BaseView(RenderMixin):
return name, expected, correct_hash_provided, None
def absolute_url(self, request, path):
url = urllib.parse.urljoin(request.url, path)
if url.startswith("http://") and self.ds.config("force_https_urls"):
url = "https://" + url[len("http://"):]
return url
def get_templates(self, database, table=None):
assert NotImplemented

View file

@ -536,7 +536,7 @@ class TableView(RowTableShared):
row["value"]
),
"count": row["count"],
"toggle_url": self.absolute_url(request, toggle_path),
"toggle_url": self.ds.absolute_url(request, toggle_path),
"selected": selected,
})
except InterruptedError:
@ -620,7 +620,7 @@ class TableView(RowTableShared):
added_args["_sort_desc"] = sort_desc
else:
added_args = {"_next": next_value}
next_url = self.absolute_url(
next_url = self.ds.absolute_url(
request, path_with_replaced_args(request, added_args)
)
rows = rows[:page_size]
@ -672,7 +672,7 @@ class TableView(RowTableShared):
):
suggested_facets.append({
'name': facet_column,
'toggle_url': self.absolute_url(
'toggle_url': self.ds.absolute_url(
request, path_with_added_args(
request, {"_facet": facet_column}
)