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 |
12 from collections import OrderedDict |
13 __docformat__ = 'restructuredtext' |
|
14 |
13 |
15 from persistent import Persistent |
14 from persistent import Persistent |
16 from zope.componentvocabulary.vocabulary import UtilityTerm, UtilityVocabulary |
15 from zope.componentvocabulary.vocabulary import UtilityTerm, UtilityVocabulary |
17 from zope.schema.fieldproperty import FieldProperty |
16 from zope.schema.fieldproperty import FieldProperty |
18 |
17 |
19 from pyams_content.shared.form.interfaces import IFormHandler, IMailtoHandlerInfo, IMailtoHandlerTarget |
18 from pyams_content.shared.form.interfaces import IFormHandler, IMailtoHandlerInfo, \ |
20 from pyams_utils.adapter import adapter_config, get_annotation_adapter |
19 IMailtoHandlerTarget |
|
20 from pyams_utils.adapter import adapter_config, get_adapter_weight, get_annotation_adapter |
21 from pyams_utils.factory import factory_config |
21 from pyams_utils.factory import factory_config |
22 from pyams_utils.registry import utility_config |
22 from pyams_utils.registry import utility_config |
23 from pyams_utils.request import check_request |
23 from pyams_utils.request import check_request |
24 from pyams_utils.vocabulary import vocabulary_config |
24 from pyams_utils.vocabulary import vocabulary_config |
|
25 |
|
26 |
|
27 __docformat__ = 'restructuredtext' |
25 |
28 |
26 from pyams_content import _ |
29 from pyams_content import _ |
27 |
30 |
28 |
31 |
29 @vocabulary_config(name='PyAMS form handlers') |
32 @vocabulary_config(name='PyAMS form handlers') |
36 request = check_request() |
39 request = check_request() |
37 registry = request.registry |
40 registry = request.registry |
38 translate = request.localizer.translate |
41 translate = request.localizer.translate |
39 utils = [(None, translate(_("No selected handler...")))] + \ |
42 utils = [(None, translate(_("No selected handler...")))] + \ |
40 [(name, translate(util.label)) |
43 [(name, translate(util.label)) |
41 for (name, util) in registry.getUtilitiesFor(self.interface)] |
44 for (name, util) in sorted(registry.getUtilitiesFor(self.interface), |
42 self._terms = dict((title, UtilityTerm(name, title)) for name, title in utils) |
45 key=get_adapter_weight)] |
|
46 self._terms = OrderedDict((title, UtilityTerm(name, title)) for name, title in utils) |
43 |
47 |
44 def __iter__(self): |
48 def __iter__(self): |
45 return iter(self._terms.values()) |
49 return iter(self._terms.values()) |
46 |
50 |
47 |
51 |
71 @utility_config(name='mailto', provides=IFormHandler) |
75 @utility_config(name='mailto', provides=IFormHandler) |
72 class MailtoFormHandler(object): |
76 class MailtoFormHandler(object): |
73 """Mailto form handler""" |
77 """Mailto form handler""" |
74 |
78 |
75 label = _("Direct mailto form handler") |
79 label = _("Direct mailto form handler") |
|
80 weight = 10 |
|
81 |
76 target_interface = IMailtoHandlerTarget |
82 target_interface = IMailtoHandlerTarget |
77 handler_info = IMailtoHandlerInfo |
83 handler_info = IMailtoHandlerInfo |
78 |
84 |
79 def handle(self, form, data, user_data): |
85 def handle(self, form, data, user_data): |
80 # TODO: handle form data |
86 # TODO: handle form data |