Coverage for gws-app/gws/plugin/model_field/datetime/__init__.py: 71%

21 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-05 13:35 +0200

1"""Datetime field. 

2 

3A scalar field for date and time values. Values from the client are parsed 

4with ``gws.lib.datetimex.parse`` and stored as ``datetime`` objects. They are 

5always sent to the client as ISO strings; locale-specific formatting is left 

6to the client. Without a configured widget, the field uses an ``input`` widget. 

7 

8Example:: 

9 

10 fields+ { name "updated_at" type "datetime" title "Last update" } 

11""" 

12 

13import gws 

14import gws.base.model.scalar_field 

15import gws.lib.datetimex 

16 

17 

18@gws.ext.config.modelField('datetime') 

19class Config(gws.base.model.scalar_field.Config): 

20 """Field for date and time values.""" 

21 

22 pass 

23 

24 

25@gws.ext.props.modelField('datetime') 

26class Props(gws.base.model.scalar_field.Props): 

27 pass 

28 

29 

30@gws.ext.object.modelField('datetime') 

31class Object(gws.base.model.scalar_field.Object): 

32 """Datetime field object.""" 

33 

34 attributeType = gws.AttributeType.datetime 

35 

36 def configure_widget(self): 

37 if not super().configure_widget(): 

38 # @TODO datetime widget 

39 self.widget = self.root.create_shared(gws.ext.object.modelWidget, type='input') 

40 return True 

41 

42 def prop_to_python(self, feature, value, mc): 

43 d = gws.lib.datetimex.parse(value) 

44 return d or gws.ErrorValue 

45 

46 def python_to_prop(self, feature, value, mc): 

47 return gws.lib.datetimex.to_iso_string(value)