src/pyams_content/component/paragraph/milestone.py
changeset 555 8e8a14452567
parent 518 7384ea4d39d7
child 558 d9c6b1d7fefa
equal deleted inserted replaced
554:120ce09ade94 555:8e8a14452567
    32 
    32 
    33 # import interfaces
    33 # import interfaces
    34 from pyams_catalog.utils import index_object
    34 from pyams_catalog.utils import index_object
    35 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker
    35 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker
    36 from pyams_content.features.checker import BaseContentChecker
    36 from pyams_content.features.checker import BaseContentChecker
    37 from pyams_content.features.renderer import RenderedContentMixin, IContentRenderer
    37 from pyams_content.features.renderer import RenderersVocabulary
    38 from pyams_utils.adapter import adapter_config, ContextAdapter
    38 from pyams_utils.adapter import adapter_config, ContextAdapter
       
    39 from pyams_utils.factory import factory_config
    39 from pyams_utils.registry import get_current_registry, get_utility, utility_config
    40 from pyams_utils.registry import get_current_registry, get_utility, utility_config
    40 from pyams_utils.request import check_request
    41 from pyams_utils.request import check_request
    41 from pyams_utils.traversing import get_parent
    42 from pyams_utils.traversing import get_parent
    42 from pyams_utils.vocabulary import vocabulary_config
    43 from pyams_utils.vocabulary import vocabulary_config
    43 from pyramid.events import subscriber
    44 from pyramid.events import subscriber
    45 from zope.container.ordered import OrderedContainer
    46 from zope.container.ordered import OrderedContainer
    46 from zope.interface import implementer
    47 from zope.interface import implementer
    47 from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent
    48 from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent
    48 from zope.location import locate
    49 from zope.location import locate
    49 from zope.schema.fieldproperty import FieldProperty
    50 from zope.schema.fieldproperty import FieldProperty
    50 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
       
    51 
    51 
    52 from pyams_content import _
    52 from pyams_content import _
    53 
    53 
    54 
    54 
    55 #
    55 #
   219                 output.append(checker.get_check_output(request))
   219                 output.append(checker.get_check_output(request))
   220         return output
   220         return output
   221 
   221 
   222 
   222 
   223 @implementer(IMilestoneParagraph)
   223 @implementer(IMilestoneParagraph)
   224 class MilestoneParagraph(RenderedContentMixin, BaseParagraph):
   224 @factory_config(provided=IMilestoneParagraph)
       
   225 class MilestoneParagraph(BaseParagraph):
   225     """Milestones paragraph"""
   226     """Milestones paragraph"""
   226 
   227 
   227     icon_class = 'fa-arrows-h'
   228     icon_class = 'fa-arrows-h'
   228     icon_hint = _("Milestones")
   229     icon_hint = _("Milestones")
   229 
   230 
   269                     output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang))
   270                     output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang))
   270         return output
   271         return output
   271 
   272 
   272 
   273 
   273 @vocabulary_config(name=MILESTONE_PARAGRAPH_RENDERERS)
   274 @vocabulary_config(name=MILESTONE_PARAGRAPH_RENDERERS)
   274 class MilestoneParagraphRendererVocabulary(SimpleVocabulary):
   275 class MilestoneParagraphRendererVocabulary(RenderersVocabulary):
   275     """Milestones paragraph renderers vocabulary"""
   276     """Milestones paragraph renderers vocabulary"""
   276 
   277 
   277     def __init__(self, context=None):
   278     content_interface = IMilestoneParagraph
   278         request = check_request()
       
   279         translate = request.localizer.translate
       
   280         registry = request.registry
       
   281         if not IMilestoneParagraph.providedBy(context):
       
   282             context = MilestoneParagraph()
       
   283         terms = [SimpleTerm(name, title=translate(adapter.label))
       
   284                  for name, adapter in sorted(registry.getAdapters((context, request), IContentRenderer),
       
   285                                              key=lambda x: x[1].weight)]
       
   286         super(MilestoneParagraphRendererVocabulary, self).__init__(terms)