src/pyams_content/component/video/zmi/paragraph.py
changeset 555 8e8a14452567
parent 550 9658debb49a3
child 570 196121e4a6f4
--- a/src/pyams_content/component/video/zmi/paragraph.py	Thu May 24 10:51:45 2018 +0200
+++ b/src/pyams_content/component/video/zmi/paragraph.py	Fri May 25 08:03:41 2018 +0200
@@ -17,13 +17,12 @@
 
 # import interfaces
 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
-    IBaseParagraph, IParagraphRenderer
+    IBaseParagraph
 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor
 from pyams_content.component.video.interfaces import IExternalVideoProvider, IExternalVideoSettings, \
-    IExternalVideoParagraph, IExternalVideoRenderer, EXTERNAL_VIDEO_PARAGRAPH_TYPE
+    IExternalVideoParagraph, EXTERNAL_VIDEO_PARAGRAPH_TYPE
 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
 from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager, IInnerForm
-from pyams_i18n.interfaces import II18n
 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
 from pyams_skin.layer import IPyAMSLayer
 from pyams_utils.interfaces.data import IObjectData
@@ -34,13 +33,14 @@
     BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm, get_json_paragraph_refresh_event, \
     IParagraphEditFormButtons
 from pyams_content.component.video.paragraph import ExternalVideoParagraph
+from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
 from pyams_form.group import NamedWidgetsGroup
 from pyams_pagelet.pagelet import pagelet_config
 from pyams_template.template import template_config
 from pyams_utils.adapter import adapter_config
-from pyams_utils.registry import get_utility, get_current_registry
+from pyams_utils.registry import get_utility
 from pyams_utils.url import absolute_url
-from pyams_viewlet.viewlet import viewlet_config, Viewlet, BaseContentProvider
+from pyams_viewlet.viewlet import viewlet_config, Viewlet
 from pyams_zmi.form import AdminDialogAddForm, InnerAdminAddForm, InnerAdminEditForm
 from pyramid.events import subscriber
 from pyramid.exceptions import NotFound
@@ -105,7 +105,7 @@
                                              switch=True,
                                              hide_if_empty=True))
             self.add_group(NamedWidgetsGroup(self, 'data_group', self.widgets,
-                                             ('description', 'author', 'provider_name'),
+                                             ('description', 'author', 'renderer', 'provider_name'),
                                              bordered=False))
         super(ExternalVideoParagraphAddForm, self).updateGroups()
 
@@ -215,6 +215,7 @@
     @property
     def fields(self):
         fields = field.Fields(IExternalVideoParagraph).omit('__parent__', '__name__', 'visible')
+        fields['renderer'].widgetFactory = RendererFieldWidget
         provider = self.context.get_provider()
         if provider is not None:
             fields += field.Fields(provider.settings_interface)
@@ -239,7 +240,7 @@
                                              switch=True,
                                              hide_if_empty=True))
             self.add_group(NamedWidgetsGroup(self, 'data_group', self.widgets,
-                                             ('description', 'author', 'provider_name'),
+                                             ('description', 'author', 'renderer', 'provider_name'),
                                              bordered=False))
         if 'provider_name' in self.widgets:
             provider = self.context.get_provider()
@@ -295,40 +296,3 @@
              permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
 class ExternalVideoParagraphInnerAJAXEditForm(BaseParagraphAJAXEditForm, ExternalVideoParagraphInnerEditForm):
     """External video paragraph inner edit form, JSON renderer"""
-
-
-#
-# Video paragraph renderer
-#
-
-@adapter_config(context=(IExternalVideoParagraph, IPyAMSLayer), provides=IParagraphRenderer)
-@template_config(template='templates/video-render.pt', layer=IPyAMSLayer)
-class ExternalVideoParagraphRenderer(BaseContentProvider):
-    """External video paragraph renderer"""
-
-    video_renderer = None
-
-    def __init__(self, context, request):
-        super(ExternalVideoParagraphRenderer, self).__init__(context, request)
-        provider = context.get_provider()
-        if provider is not None:
-            registry = get_current_registry()
-            self.video_renderer = registry.queryMultiAdapter((context.settings, request), IExternalVideoRenderer)
-
-    def update(self):
-        i18n = II18n(self.context)
-        if self.language:
-            for attr in ('title', 'body', 'description'):
-                setattr(self, attr, i18n.get_attribute(attr, self.language, request=self.request))
-        else:
-            for attr in ('title', 'body', 'description'):
-                setattr(self, attr, i18n.query_attribute(attr, request=self.request))
-        renderer = self.video_renderer
-        if renderer is not None:
-            renderer.update()
-
-    def render_video(self):
-        renderer = self.video_renderer
-        if not renderer:
-            return ''
-        return renderer.render()