14 |
14 |
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 IGallery, IGalleryTarget, \ |
19 from pyams_content.component.gallery.interfaces import IBaseGallery, IGallery, IGalleryTarget, \ |
20 GALLERY_CONTAINER_KEY, IGalleryRenderer |
20 GALLERY_CONTAINER_KEY |
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_utils.adapter import adapter_config, ContextAdapter |
35 from pyams_utils.adapter import adapter_config, ContextAdapter |
35 from pyams_utils.container import BTreeOrderedContainer |
36 from pyams_utils.container import BTreeOrderedContainer |
36 from pyams_utils.request import check_request |
|
37 from pyams_utils.traversing import get_parent |
37 from pyams_utils.traversing import get_parent |
38 from pyams_utils.vocabulary import vocabulary_config |
|
39 from pyramid.events import subscriber |
38 from pyramid.events import subscriber |
40 from pyramid.threadlocal import get_current_registry |
39 from pyramid.threadlocal import get_current_registry |
41 from zope.interface import implementer |
40 from zope.interface import implementer |
42 from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent |
41 from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent |
43 from zope.location import locate |
42 from zope.location import locate |
44 from zope.schema.fieldproperty import FieldProperty |
43 from zope.schema.fieldproperty import FieldProperty |
45 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm |
|
46 |
44 |
47 from pyams_content import _ |
45 from pyams_content import _ |
48 |
46 |
49 |
47 |
50 # |
48 # |
51 # Galleries container |
49 # Galleries container |
52 # |
50 # |
53 |
51 |
54 @implementer(IGallery) |
52 @implementer(IGallery) |
55 class Gallery(BTreeOrderedContainer): |
53 class Gallery(BTreeOrderedContainer, RenderedContentMixin): |
56 """Gallery persistent class""" |
54 """Gallery persistent class""" |
57 |
55 |
58 title = FieldProperty(IGallery['title']) |
56 title = FieldProperty(IGallery['title']) |
59 description = FieldProperty(IGallery['description']) |
57 description = FieldProperty(IGallery['description']) |
60 renderer = FieldProperty(IGallery['renderer']) |
58 renderer = FieldProperty(IGallery['renderer']) |
177 |
175 |
178 @adapter_config(name='gallery', context=IGalleryTarget, provides=IContentChecker) |
176 @adapter_config(name='gallery', context=IGalleryTarget, provides=IContentChecker) |
179 def GalleryTargetContentChecker(context): |
177 def GalleryTargetContentChecker(context): |
180 gallery = IGallery(context) |
178 gallery = IGallery(context) |
181 return IContentChecker(gallery, None) |
179 return IContentChecker(gallery, None) |
182 |
|
183 |
|
184 @vocabulary_config(name='PyAMS gallery renderers') |
|
185 class GalleryRendererVocabulary(SimpleVocabulary): |
|
186 """Gallery renderer utilities vocabulary""" |
|
187 |
|
188 def __init__(self, context=None): |
|
189 request = check_request() |
|
190 translate = request.localizer.translate |
|
191 registry = request.registry |
|
192 context = Gallery() |
|
193 terms = [SimpleTerm(name, title=translate(adapter.label)) |
|
194 for name, adapter in sorted(registry.getAdapters((context, request), IGalleryRenderer), |
|
195 key=lambda x: x[1].weight)] |
|
196 super(GalleryRendererVocabulary, self).__init__(terms) |
|