src/pyams_content/component/paragraph/zmi/preview.py
changeset 406 5527bc086216
parent 245 6b02caf97666
child 431 a162e9f348f7
equal deleted inserted replaced
405:9c147733c02e 406:5527bc086216
    15 
    15 
    16 # import standard library
    16 # import standard library
    17 
    17 
    18 # import interfaces
    18 # import interfaces
    19 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
    19 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
    20     IParagraphSummary
    20     IParagraphPreview
    21 from pyams_content.features.preview.zmi.interfaces import IPreviewForm
    21 from pyams_content.features.preview.zmi.interfaces import IPreviewForm
    22 from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager
    22 from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager
    23 from pyams_i18n.interfaces import II18nManager
    23 from pyams_i18n.interfaces import II18nManager
       
    24 from pyams_skin.interfaces import IUserSkinnable
    24 from pyams_skin.layer import IPyAMSLayer
    25 from pyams_skin.layer import IPyAMSLayer
       
    26 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    25 
    27 
    26 # import packages
    28 # import packages
       
    29 from pyams_skin.skin import apply_skin
    27 from pyams_template.template import template_config
    30 from pyams_template.template import template_config
    28 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    31 from pyams_utils.request import copy_request
    29 from pyams_viewlet.viewlet import viewlet_config, Viewlet
    32 from pyams_viewlet.viewlet import viewlet_config, Viewlet
       
    33 from pyramid.decorator import reify
    30 
    34 
    31 
    35 
    32 @viewlet_config(name='paragraphs-preview', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    36 @viewlet_config(name='paragraphs-preview', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    33                 view=IPreviewForm, manager=IWidgetsSuffixViewletsManager,
    37                 view=IPreviewForm, manager=IWidgetsSuffixViewletsManager,
    34                 permission=VIEW_SYSTEM_PERMISSION, weight=100)
    38                 permission=VIEW_SYSTEM_PERMISSION, weight=100)
    40         super(ParagraphsContainerPreview, self).__init__(context, request, view, manager)
    44         super(ParagraphsContainerPreview, self).__init__(context, request, view, manager)
    41         self.paragraphs = [para for para in IParagraphContainer(self.context).values()
    45         self.paragraphs = [para for para in IParagraphContainer(self.context).values()
    42                            if para.visible]
    46                            if para.visible]
    43         self.languages = II18nManager(self.context).get_languages()
    47         self.languages = II18nManager(self.context).get_languages()
    44 
    48 
       
    49     @reify
       
    50     def render_request(self):
       
    51         request = copy_request(self.request)
       
    52         root = self.request.root
       
    53         skin = IUserSkinnable(root).get_skin()
       
    54         if skin is not None:
       
    55             apply_skin(request, skin)
       
    56         return request
       
    57 
    45     def render_paragraph(self, paragraph, language=None):
    58     def render_paragraph(self, paragraph, language=None):
    46         renderer = self.request.registry.queryMultiAdapter((paragraph, self.request), IParagraphSummary)
    59         renderer = self.request.registry.queryMultiAdapter((paragraph, self.render_request), IParagraphPreview)
    47         if renderer is not None:
    60         if renderer is not None:
    48             renderer.language = language
    61             renderer.language = language
    49             renderer.update()
    62             renderer.update()
    50             return renderer.render()
    63             return renderer.render()