Coverage for gws-app/gws/plugin/model_field/time/__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"""Time field.
3A scalar field for time values. Values from the client are parsed with
4``gws.lib.datetimex.parse_time`` and stored as ``datetime.time`` objects.
5They are always sent to the client as ISO strings; locale-specific
6formatting is left to the client. Without a configured widget, the field
7uses an ``input`` widget.
9Example::
11 fields+ { name "opens_at" type "time" title "Opening time" }
12"""
14import gws
15import gws.base.model.scalar_field
16import gws.lib.datetimex
19@gws.ext.config.modelField('time')
20class Config(gws.base.model.scalar_field.Config):
21 """Field for time values."""
23 pass
26@gws.ext.props.modelField('time')
27class Props(gws.base.model.scalar_field.Props):
28 pass
31@gws.ext.object.modelField('time')
32class Object(gws.base.model.scalar_field.Object):
33 """Time field object."""
35 attributeType = gws.AttributeType.datetime
37 def configure_widget(self):
38 if not super().configure_widget():
39 # @TODO time widget
40 self.widget = self.root.create_shared(gws.ext.object.modelWidget, type='input')
41 return True
43 def prop_to_python(self, feature, value, mc):
44 d = gws.lib.datetimex.parse_time(value)
45 return d if d else gws.ErrorValue
47 def python_to_prop(self, feature, value, mc):
48 return gws.lib.datetimex.time_to_iso_string(value)