src/pyams_content/shared/form/handler.py
changeset 1361 53541532b673
parent 1346 88b5ce31afdc
equal deleted inserted replaced
1360:aeda74fe562f 1361:53541532b673
     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