src/pyams_content/component/gallery/__init__.py
changeset 426 ad309e5090bd
parent 395 2a39b333a585
child 501 3407e6940f6a
equal deleted inserted replaced
425:a3147e47cd39 426:ad309e5090bd
    15 
    15 
    16 # import standard library
    16 # import standard library
    17 
    17 
    18 # import interfaces
    18 # import interfaces
    19 from pyams_content.component.gallery.interfaces import IBaseGallery, IGallery, IGalleryTarget, \
    19 from pyams_content.component.gallery.interfaces import IBaseGallery, IGallery, IGalleryTarget, \
    20     GALLERY_CONTAINER_KEY
    20     GALLERY_CONTAINER_KEY, GALLERY_RENDERERS
    21 from pyams_content.component.paragraph import IBaseParagraph
    21 from pyams_content.component.paragraph import IBaseParagraph
    22 from pyams_content.features.checker.interfaces import IContentChecker
    22 from pyams_content.features.checker.interfaces import IContentChecker
    23 from pyams_content.shared.common.interfaces import IWfSharedContent
    23 from pyams_content.shared.common.interfaces import IWfSharedContent
    24 from pyams_form.interfaces.form import IFormContextPermissionChecker
    24 from pyams_form.interfaces.form import IFormContextPermissionChecker
    25 from pyams_i18n.interfaces import II18n
    25 from pyams_i18n.interfaces import II18n
    29 from zope.traversing.interfaces import ITraversable
    29 from zope.traversing.interfaces import ITraversable
    30 
    30 
    31 # import packages
    31 # import packages
    32 from pyams_catalog.utils import index_object
    32 from pyams_catalog.utils import index_object
    33 from pyams_content.features.checker import BaseContentChecker
    33 from pyams_content.features.checker import BaseContentChecker
    34 from pyams_content.features.renderer import RenderedContentMixin
    34 from pyams_content.features.renderer import RenderedContentMixin, IContentRenderer
    35 from pyams_utils.adapter import adapter_config, ContextAdapter
    35 from pyams_utils.adapter import adapter_config, ContextAdapter
    36 from pyams_utils.container import BTreeOrderedContainer
    36 from pyams_utils.container import BTreeOrderedContainer
       
    37 from pyams_utils.request import check_request
    37 from pyams_utils.traversing import get_parent
    38 from pyams_utils.traversing import get_parent
       
    39 from pyams_utils.vocabulary import vocabulary_config
    38 from pyramid.events import subscriber
    40 from pyramid.events import subscriber
    39 from pyramid.threadlocal import get_current_registry
    41 from pyramid.threadlocal import get_current_registry
    40 from zope.interface import implementer
    42 from zope.interface import implementer
    41 from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent
    43 from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent
    42 from zope.location import locate
    44 from zope.location import locate
    43 from zope.schema.fieldproperty import FieldProperty
    45 from zope.schema.fieldproperty import FieldProperty
       
    46 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
    44 
    47 
    45 from pyams_content import _
    48 from pyams_content import _
    46 
    49 
    47 
    50 
    48 #
    51 #
   175 
   178 
   176 @adapter_config(name='gallery', context=IGalleryTarget, provides=IContentChecker)
   179 @adapter_config(name='gallery', context=IGalleryTarget, provides=IContentChecker)
   177 def GalleryTargetContentChecker(context):
   180 def GalleryTargetContentChecker(context):
   178     gallery = IGallery(context)
   181     gallery = IGallery(context)
   179     return IContentChecker(gallery, None)
   182     return IContentChecker(gallery, None)
       
   183 
       
   184 
       
   185 @vocabulary_config(name=GALLERY_RENDERERS)
       
   186 class GalleryRendererVocabulary(SimpleVocabulary):
       
   187     """Gallery renderers vocabulary"""
       
   188 
       
   189     def __init__(self, context=None):
       
   190         request = check_request()
       
   191         translate = request.localizer.translate
       
   192         registry = request.registry
       
   193         if not IBaseGallery.providedBy(context):
       
   194             context = Gallery()
       
   195         terms = [SimpleTerm(name, title=translate(adapter.label))
       
   196                  for name, adapter in sorted(registry.getAdapters((context, request), IContentRenderer),
       
   197                                              key=lambda x: x[1].weight)]
       
   198         super(GalleryRendererVocabulary, self).__init__(terms)