7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 from pyams_content.component.paragraph import BaseParagraph, IParagraphFactory, BaseParagraphFactory |
|
13 from pyams_content.features.renderer import RenderersVocabulary |
|
14 |
|
15 |
|
16 __docformat__ = 'restructuredtext' |
|
17 |
12 |
18 from collections import OrderedDict |
13 from collections import OrderedDict |
19 |
14 |
20 from persistent import Persistent |
15 from persistent import Persistent |
21 from zope.componentvocabulary.vocabulary import UtilityTerm, UtilityVocabulary |
16 from zope.componentvocabulary.vocabulary import UtilityTerm, UtilityVocabulary |
25 from zope.location.interfaces import ISublocations |
20 from zope.location.interfaces import ISublocations |
26 from zope.schema import Bool, Choice, Date, Decimal, Int, List, Text, TextLine, URI |
21 from zope.schema import Bool, Choice, Date, Decimal, Int, List, Text, TextLine, URI |
27 from zope.schema.fieldproperty import FieldProperty |
22 from zope.schema.fieldproperty import FieldProperty |
28 from zope.traversing.interfaces import ITraversable |
23 from zope.traversing.interfaces import ITraversable |
29 |
24 |
30 from pyams_content.shared.form.interfaces import FORM_FIELD_CONTAINER_KEY, IFormField, \ |
25 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, IParagraphFactory |
31 IFormFieldContainer, \ |
26 from pyams_content.features.renderer import RenderersVocabulary |
32 IFormFieldContainerTarget, IFormFieldFactory, IWfForm, IFormFieldsParagraph, \ |
27 from pyams_content.shared.form.interfaces import FORM_FIELDS_PARAGRAPH_NAME, \ |
33 FORM_FIELDS_PARAGRAPH_NAME, FORM_FIELDS_PARAGRAPH_TYPE, FORM_FIELDS_PARAGRAPH_RENDERERS |
28 FORM_FIELDS_PARAGRAPH_RENDERERS, FORM_FIELDS_PARAGRAPH_TYPE, FORM_FIELD_CONTAINER_KEY, \ |
|
29 IFormField, IFormFieldContainer, IFormFieldContainerTarget, IFormFieldFactory, \ |
|
30 IFormFieldsParagraph, IWfForm |
34 from pyams_form.interfaces.form import IFormContextPermissionChecker |
31 from pyams_form.interfaces.form import IFormContextPermissionChecker |
35 from pyams_i18n.interfaces import II18n |
32 from pyams_i18n.interfaces import II18n |
36 from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter |
33 from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter |
37 from pyams_utils.factory import factory_config |
34 from pyams_utils.factory import factory_config |
38 from pyams_utils.registry import get_global_registry, utility_config |
35 from pyams_utils.registry import get_global_registry, utility_config |
39 from pyams_utils.request import check_request |
36 from pyams_utils.request import check_request |
40 from pyams_utils.schema import MailAddressField |
37 from pyams_utils.schema import MailAddressField |
41 from pyams_utils.traversing import get_parent |
38 from pyams_utils.traversing import get_parent |
42 from pyams_utils.vocabulary import vocabulary_config |
39 from pyams_utils.vocabulary import vocabulary_config |
43 |
40 |
|
41 |
|
42 __docformat__ = 'restructuredtext' |
|
43 |
44 from pyams_content import _ |
44 from pyams_content import _ |
45 |
45 |
46 |
46 |
47 @implementer(IFormField) |
47 @implementer(IFormField) |
48 class FormField(Persistent, Contained): |
48 class FormField(Persistent, Contained): |
78 if factory is not None: |
78 if factory is not None: |
79 yield factory.get_schema_field(field) |
79 yield factory.get_schema_field(field) |
80 |
80 |
81 def find_fields(self, factory): |
81 def find_fields(self, factory): |
82 for field in self.values(): |
82 for field in self.values(): |
83 if field.field_type == factory: |
83 if field.visible and (field.field_type == factory): |
84 yield field |
84 yield field |
85 |
85 |
86 |
86 |
87 @adapter_config(context=IFormFieldContainerTarget, provides=IFormFieldContainer) |
87 @adapter_config(context=IFormFieldContainerTarget, provides=IFormFieldContainer) |
88 def form_field_container_factory(context): |
88 def form_field_container_factory(context): |