Skip to content

Commit a809824

Browse files
committed
upgraded py4web
1 parent 0f6e3a8 commit a809824

File tree

3 files changed

+31
-25
lines changed

3 files changed

+31
-25
lines changed

py4web/utils/grid.py

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -372,21 +372,24 @@ def maybe_call(obj, *args, **kwargs):
372372
return obj(*args, **kwargs)
373373

374374

375-
def reference_represent(value):
375+
def reference_represent(field, value):
376376
"""
377377
Assumes value is a pydal.objects.Reference value and represts is using the
378378
table._format of the referenced table
379379
"""
380-
table = value._table
380+
if not value:
381+
return ""
382+
table = field.referenced_table()
383+
if not table:
384+
return "#{value}"
381385
row = table(value)
382386
if not row:
383-
return ""
387+
return "#{value}(missing)"
384388
if isinstance(table._format, str):
385389
return table._format % row
386390
elif callable(table._format):
387391
return table._format(row)
388-
else:
389-
return str(value)
392+
return str(value)
390393

391394

392395
def datetime_represent(value):
@@ -432,17 +435,20 @@ def time_represent(value):
432435

433436
class Grid:
434437
represent_by_type = {
435-
"id": lambda value: f"#{value}",
436-
"boolean": lambda value: "☑" if value else "☐" if value is False else "",
437-
"float": lambda value: "%.2f" % value,
438-
"double": lambda value: "%.2f" % value,
439-
"decimal": lambda value: "%.2f" % value,
438+
"id": lambda field, value: f"#{value}",
439+
"boolean": lambda field, value: "☑" if value else "☐" if value is False else "",
440+
"integer": lambda field, value: str(value) if value is not None else "",
441+
"bigint": lambda field, value: str(value) if value is not None else "",
442+
"float": lambda field, value: "%.2f" % value if value is not None else "",
443+
"double": lambda field, value: "%.2f" % value if value is not None else "",
444+
"decimal": lambda field, value: "%.2f" % value if value is not None else "",
440445
"reference": reference_represent,
441-
"datetime": datetime_represent,
442-
"date": date_represent,
443-
"time": time_represent,
444-
"list": lambda value: ", ".join(str(x) for x in value) or "",
445-
"password": lambda value: "******",
446+
"big-reference": reference_represent,
447+
"datetime": lambda field, value: datetime_represent(value),
448+
"date": lambda field, value: date_represent(value),
449+
"time": lambda field, value: time_represent(value),
450+
"list": lambda field, value: ", ".join(str(x) for x in value) or "",
451+
"password": lambda field, value: "******",
446452
}
447453

448454
def __init__(
@@ -775,16 +781,16 @@ def col2key(col):
775781
and A("download", _href=f(row[name]))
776782
or ""
777783
)
778-
# field represent override default formatters by type
784+
# field represent override default representation by type
779785
elif col.represent:
780786
represent_col = lambda row, name=str(col), f=col.represent: f(
781787
row[name], row
782788
)
783-
# we do not know better, use formatters by type (type is the stripped Field type)
789+
# we do not know better, use formarepresent by type (type is the stripped Field type)
784790
elif type_name in self.represent_by_type:
785-
represent_col = lambda row, name=str(col), f=self.represent_by_type[
786-
type_name
787-
]: f(row[name])
791+
represent_col = lambda row, col=col, f=self.represent_by_type[
792+
col.type_name
793+
]: f(col, row[str(col)])
788794
else:
789795
represent_col = lambda row, name=str(col): row[name]
790796

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ dependencies = [
2626
"pluralize >= 20250901.2",
2727
"rocket3 >= 20241225.1",
2828
"yatl >= 20230507.3",
29-
"pydal>=20250913.1",
29+
"pydal>=20250914.1",
3030
"watchgod >= 0.6",
3131
]
3232

uv.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)