diff --git a/datasette/default_column_types.py b/datasette/default_column_types.py index f90a733e..94fb0823 100644 --- a/datasette/default_column_types.py +++ b/datasette/default_column_types.py @@ -5,6 +5,7 @@ import markupsafe from datasette import hookimpl from datasette.column_types import ColumnType, SQLiteType +from datasette.utils import truncate_url class UrlColumnType(ColumnType): @@ -15,8 +16,12 @@ class UrlColumnType(ColumnType): async def render_cell(self, value, column, table, database, datasette, request): if not value or not isinstance(value, str): return None - escaped = markupsafe.escape(value.strip()) - return markupsafe.Markup(f'{escaped}') + url = value.strip() + escaped = markupsafe.escape(url) + truncated = markupsafe.escape( + truncate_url(url, datasette.setting("truncate_cells_html")) + ) + return markupsafe.Markup(f'{truncated}') async def validate(self, value, datasette): if value is None or value == "": diff --git a/docs/changelog.rst b/docs/changelog.rst index 670166bb..9c8e7188 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -107,6 +107,7 @@ The edit interface takes :ref:`custom column types `. - Fixed a warning about ``gen.throw(*sys.exc_info())``. (:issue:`2776`) - New default custom column type ``textarea`` for multi-line text content. This is rendered as a ``