44 from z3c.form.widget import FieldWidget, Widget, WidgetLayoutFactory, WidgetTemplateFactory |
44 from z3c.form.widget import FieldWidget, Widget, WidgetLayoutFactory, WidgetTemplateFactory |
45 from zope.component import getGlobalSiteManager |
45 from zope.component import getGlobalSiteManager |
46 from zope.interface import Interface, directlyProvides, implementer, implementer_only |
46 from zope.interface import Interface, directlyProvides, implementer, implementer_only |
47 from zope.pagetemplate.interfaces import IPageTemplate |
47 from zope.pagetemplate.interfaces import IPageTemplate |
48 from zope.schema.fieldproperty import FieldProperty |
48 from zope.schema.fieldproperty import FieldProperty |
49 from zope.schema.interfaces import IBytes, IChoice, IDate, IDatetime, IFloat, IInt, IList, ISet, \ |
49 from zope.schema.interfaces import IBytes, IChoice, IDate, IDatetime, IDecimal, IFloat, IInt, \ |
50 ITime, ITuple, IDecimal |
50 IList, ISet, ITime, ITuple |
51 |
51 |
52 from pyams_form.interfaces.form import IActionWidget, ICloseWidget, IColorWidget, IDateWidget, \ |
52 from pyams_form.interfaces.form import IActionWidget, ICloseWidget, IColorWidget, IDateWidget, \ |
53 IDatetimeWidget, IFloatWidget, IFormLayer, IHTMLWidget, IIntegerWidget, IJSONDictWidget, \ |
53 IDatetimeWidget, IDottedDecimalWidget, IFloatWidget, IFormLayer, IHTMLWidget, IIntegerWidget, \ |
54 IResetWidget, ISEOTextLineWidget, ISelect2Widget, ITextLineListWidget, ITimeWidget, \ |
54 IJSONDictWidget, IResetWidget, ISEOTextLineWidget, ISelect2Widget, ITextLineListWidget, \ |
55 IDottedDecimalWidget |
55 ITimeWidget |
56 from pyams_form.schema import IActionButton, ICloseButton, IResetButton |
56 from pyams_form.schema import IActionButton, ICloseButton, IResetButton |
57 from pyams_skin.interfaces.tinymce import ITinyMCEConfiguration |
57 from pyams_skin.interfaces.tinymce import ITinyMCEConfiguration |
58 from pyams_utils.adapter import adapter_config |
58 from pyams_utils.adapter import adapter_config |
59 from pyams_utils.interfaces.data import IObjectData |
59 from pyams_utils.interfaces.data import IObjectData |
60 from pyams_utils.schema import IColorField, IHTMLField, IJSONDictField, ITextLineListField, \ |
60 from pyams_utils.schema import IColorField, IDottedDecimalField, IHTMLField, IJSONDictField, \ |
61 IJSONDictFieldsGetter, IDottedDecimalField, DottedDecimalField |
61 IJSONDictFieldsGetter, ITextLineListField |
62 from pyams_utils.timezone import localgmtime, tztime |
62 from pyams_utils.timezone import localgmtime, tztime |
63 from pyams_utils.widget.decimal import DottedDecimalDataConverter |
63 from pyams_utils.widget.decimal import DottedDecimalDataConverter |
64 |
64 |
65 |
65 |
66 __docformat__ = 'restructuredtext' |
66 __docformat__ = 'restructuredtext' |
718 if self.name not in self.request and self.name + '-empty-marker' in self.request: |
718 if self.name not in self.request and self.name + '-empty-marker' in self.request: |
719 return [] |
719 return [] |
720 value = self.request.get(self.name, default) |
720 value = self.request.get(self.name, default) |
721 if value != default: |
721 if value != default: |
722 if not isinstance(value, (set, tuple, list)): |
722 if not isinstance(value, (set, tuple, list)): |
723 value = set(value.split('|')) |
723 value = set(value.split('|')) if value else set() |
724 # do some kind of validation, at least only use existing values |
724 # do some kind of validation, at least only use existing values |
725 for token in value: |
725 for token in value: |
726 if token == self.noValueToken: |
726 if token == self.noValueToken: |
727 continue |
727 continue |
728 try: |
728 try: |