src/pyams_content/component/paragraph/contact.py
changeset 555 8e8a14452567
parent 515 a1d5eb955e54
child 575 e61e7effa80a
equal deleted inserted replaced
554:120ce09ade94 555:8e8a14452567
    23 from pyams_file.interfaces import IImage, IResponsiveImage
    23 from pyams_file.interfaces import IImage, IResponsiveImage
    24 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
    24 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
    25 
    25 
    26 # import packages
    26 # import packages
    27 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker
    27 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker
    28 from pyams_content.features.renderer import RenderedContentMixin, IContentRenderer
    28 from pyams_content.features.renderer import RenderersVocabulary
    29 from pyams_file.property import FileProperty
    29 from pyams_file.property import FileProperty
    30 from pyams_utils.adapter import adapter_config
    30 from pyams_utils.adapter import adapter_config
       
    31 from pyams_utils.factory import factory_config
    31 from pyams_utils.registry import utility_config, get_utility
    32 from pyams_utils.registry import utility_config, get_utility
    32 from pyams_utils.request import check_request
       
    33 from pyams_utils.traversing import get_parent
    33 from pyams_utils.traversing import get_parent
    34 from pyams_utils.vocabulary import vocabulary_config
    34 from pyams_utils.vocabulary import vocabulary_config
    35 from zope.interface import implementer, alsoProvides
    35 from zope.interface import implementer, alsoProvides
    36 from zope.schema.fieldproperty import FieldProperty
    36 from zope.schema.fieldproperty import FieldProperty
    37 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
       
    38 
    37 
    39 from pyams_content import _
    38 from pyams_content import _
    40 
    39 
    41 
    40 
    42 @implementer(IContactParagraph)
    41 @implementer(IContactParagraph)
    43 class ContactParagraph(RenderedContentMixin, BaseParagraph):
    42 @factory_config(provided=IContactParagraph)
       
    43 class ContactParagraph(BaseParagraph):
    44     """Contact paragraph"""
    44     """Contact paragraph"""
    45 
    45 
    46     icon_class = 'fa-id-card-o'
    46     icon_class = 'fa-id-card-o'
    47     icon_hint = _("Contact card")
    47     icon_hint = _("Contact card")
    48 
    48 
   110                 output.append(translate(MISSING_VALUE).format(field=field_title))
   110                 output.append(translate(MISSING_VALUE).format(field=field_title))
   111         return output
   111         return output
   112 
   112 
   113 
   113 
   114 @vocabulary_config(name=CONTACT_PARAGRAPH_RENDERERS)
   114 @vocabulary_config(name=CONTACT_PARAGRAPH_RENDERERS)
   115 class ContactParagraphRendererVocabulary(SimpleVocabulary):
   115 class ContactParagraphRendererVocabulary(RenderersVocabulary):
   116     """Contact paragraph renderers vocabulary"""
   116     """Contact paragraph renderers vocabulary"""
   117 
   117 
   118     def __init__(self, context=None):
   118     content_interface = IContactParagraph
   119         request = check_request()
       
   120         translate = request.localizer.translate
       
   121         registry = request.registry
       
   122         if not IContactParagraph.providedBy(context):
       
   123             context = ContactParagraph()
       
   124         terms = [SimpleTerm(name, title=translate(adapter.label))
       
   125                  for name, adapter in sorted(registry.getAdapters((context, request), IContentRenderer),
       
   126                                              key=lambda x: x[1].weight)]
       
   127         super(ContactParagraphRendererVocabulary, self).__init__(terms)