src/pyams_content/component/gallery/__init__.py
changeset 426 ad309e5090bd
parent 395 2a39b333a585
child 501 3407e6940f6a
--- a/src/pyams_content/component/gallery/__init__.py	Fri Mar 02 13:48:23 2018 +0100
+++ b/src/pyams_content/component/gallery/__init__.py	Fri Mar 02 13:53:12 2018 +0100
@@ -17,7 +17,7 @@
 
 # import interfaces
 from pyams_content.component.gallery.interfaces import IBaseGallery, IGallery, IGalleryTarget, \
-    GALLERY_CONTAINER_KEY
+    GALLERY_CONTAINER_KEY, GALLERY_RENDERERS
 from pyams_content.component.paragraph import IBaseParagraph
 from pyams_content.features.checker.interfaces import IContentChecker
 from pyams_content.shared.common.interfaces import IWfSharedContent
@@ -31,16 +31,19 @@
 # import packages
 from pyams_catalog.utils import index_object
 from pyams_content.features.checker import BaseContentChecker
-from pyams_content.features.renderer import RenderedContentMixin
+from pyams_content.features.renderer import RenderedContentMixin, IContentRenderer
 from pyams_utils.adapter import adapter_config, ContextAdapter
 from pyams_utils.container import BTreeOrderedContainer
+from pyams_utils.request import check_request
 from pyams_utils.traversing import get_parent
+from pyams_utils.vocabulary import vocabulary_config
 from pyramid.events import subscriber
 from pyramid.threadlocal import get_current_registry
 from zope.interface import implementer
 from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent
 from zope.location import locate
 from zope.schema.fieldproperty import FieldProperty
+from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
 
 from pyams_content import _
 
@@ -177,3 +180,19 @@
 def GalleryTargetContentChecker(context):
     gallery = IGallery(context)
     return IContentChecker(gallery, None)
+
+
+@vocabulary_config(name=GALLERY_RENDERERS)
+class GalleryRendererVocabulary(SimpleVocabulary):
+    """Gallery renderers vocabulary"""
+
+    def __init__(self, context=None):
+        request = check_request()
+        translate = request.localizer.translate
+        registry = request.registry
+        if not IBaseGallery.providedBy(context):
+            context = Gallery()
+        terms = [SimpleTerm(name, title=translate(adapter.label))
+                 for name, adapter in sorted(registry.getAdapters((context, request), IContentRenderer),
+                                             key=lambda x: x[1].weight)]
+        super(GalleryRendererVocabulary, self).__init__(terms)