Coverage for gws-app/gws/plugin/model_field/date/__init__.py: 86%
21 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-05 13:35 +0200
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-05 13:35 +0200
1"""Date field.
3A scalar field for dates. Values from the client are parsed with
4``gws.lib.datetimex.parse`` and stored as ``datetime.date`` objects.
5They are always sent to the client as ISO date strings (``YYYY-MM-DD``);
6locale-specific formatting is left to the client. Without a configured
7widget, the field uses a ``date`` widget.
9Example::
11 fields+ { name "start_date" type "date" title "Start date" }
12"""
14import gws
15import gws.base.model.scalar_field
16import gws.lib.datetimex
19@gws.ext.config.modelField('date')
20class Config(gws.base.model.scalar_field.Config):
21 """Field for date values."""
23 pass
26@gws.ext.props.modelField('date')
27class Props(gws.base.model.scalar_field.Props):
28 pass
31@gws.ext.object.modelField('date')
32class Object(gws.base.model.scalar_field.Object):
33 """Date field object."""
35 attributeType = gws.AttributeType.date
37 def configure_widget(self):
38 if not super().configure_widget():
39 self.widget = self.root.create_shared(gws.ext.object.modelWidget, type='date')
40 return True
42 def prop_to_python(self, feature, value, mc):
43 d = gws.lib.datetimex.parse(value)
44 return gws.lib.datetimex.dt.date(d.year, d.month, d.day) if d else gws.ErrorValue
46 def python_to_prop(self, feature, value, mc):
47 return gws.lib.datetimex.to_iso_date_string(value)