From b9ab27523f28986588ba5d07818652f1f9854c9c Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Tue, 24 Feb 2026 20:03:59 -0600 Subject: [PATCH] fix: add `Notes` schema type this is because the dict we get from (normalizing the) farmOS API record will have e.g. `notes=None` but that winds up rendering as "None" instead of empty string - so we use colander.null value in such cases so empty string is rendered --- src/wuttafarm/web/forms/schema.py | 23 +++++++++++++++++++++++ src/wuttafarm/web/views/farmos/logs.py | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/wuttafarm/web/forms/schema.py b/src/wuttafarm/web/forms/schema.py index a5c396b..075c36c 100644 --- a/src/wuttafarm/web/forms/schema.py +++ b/src/wuttafarm/web/forms/schema.py @@ -28,6 +28,7 @@ import json import colander from wuttaweb.forms.schema import ObjectRef, WuttaSet +from wuttaweb.forms.widgets import NotesWidget class AnimalTypeRef(ObjectRef): @@ -380,3 +381,25 @@ class LogAssetRefs(WuttaSet): from wuttafarm.web.forms.widgets import LogAssetRefsWidget return LogAssetRefsWidget(self.request, **kwargs) + + +class Notes(colander.String): + """ + Custom schema type for "note" fields. + """ + + def serialize(self, node, appstruct): + """ """ + if not appstruct: + return colander.null + + return super().serialize(node, appstruct) + + def widget_maker(self, **kwargs): + """ + Construct a default widget for the field. + + :returns: Instance of + :class:`~wuttaweb.forms.widgets.NotesWidget`. + """ + return NotesWidget(**kwargs) diff --git a/src/wuttafarm/web/views/farmos/logs.py b/src/wuttafarm/web/views/farmos/logs.py index f20eb0e..6e6dc36 100644 --- a/src/wuttafarm/web/views/farmos/logs.py +++ b/src/wuttafarm/web/views/farmos/logs.py @@ -25,7 +25,7 @@ View for farmOS Harvest Logs from webhelpers2.html import tags -from wuttaweb.forms.schema import WuttaDateTime, WuttaDictEnum, Notes +from wuttaweb.forms.schema import WuttaDateTime, WuttaDictEnum from wuttaweb.forms.widgets import WuttaDateTimeWidget from wuttafarm.web.views.farmos import FarmOSMasterView @@ -42,6 +42,7 @@ from wuttafarm.web.forms.schema import ( FarmOSAssetRefs, FarmOSRefs, LogQuick, + Notes, ) from wuttafarm.web.util import render_quantity_objects