From c5c696389d67e5b42f0dc165c1a33d85a1997509 Mon Sep 17 00:00:00 2001 From: laund Date: Wed, 3 Sep 2025 13:00:11 +0200 Subject: [PATCH] Only use Grid.FORMATTERS_BY_TYPE if field.represent is default --- py4web/utils/grid.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/py4web/utils/grid.py b/py4web/utils/grid.py index 0b20a1c7..f47d2d16 100644 --- a/py4web/utils/grid.py +++ b/py4web/utils/grid.py @@ -8,7 +8,7 @@ import functools from urllib.parse import urlparse -from pydal.objects import Expression, Field, FieldVirtual +from pydal.objects import Expression, Field, FieldVirtual, get_default_represent from pydal.querybuilder import QueryBuilder from yatl.helpers import ( CAT, @@ -37,6 +37,8 @@ NAV = TAG.nav HEADER = TAG.header +PYDAL_DEFAULT_REPRESENTS = [get_default_represent(""), get_default_represent("list:")] + def title(text): """Turns text into a title""" @@ -763,8 +765,9 @@ def compute(row, col=col): # deal with download links in special manner if no representation if col.type == "upload" and value and hasattr(col, "download_url"): value = A("download", _href=col.download_url(value)) - elif type(value).__name__ in self.formatters_by_type: - value = self.formatters_by_type[type(value).__name__](value) + elif col.represent in PYDAL_DEFAULT_REPRESENTS: + if type(value).__name__ in self.formatters_by_type: + value = self.formatters_by_type[type(value).__name__](value) elif col.represent: value = col.represent(value, row) return value