src/pyams_content/component/gallery/zmi/__init__.py
changeset 395 2a39b333a585
parent 363 86d1a240d4dc
child 527 5dd1aa8bedd9
equal deleted inserted replaced
394:1ebcb03e9bff 395:2a39b333a585
    18 import zipfile
    18 import zipfile
    19 
    19 
    20 from io import BytesIO
    20 from io import BytesIO
    21 
    21 
    22 # import interfaces
    22 # import interfaces
    23 from pyams_content.component.gallery.interfaces import IGallery, IGalleryRenderer
    23 from pyams_content.component.gallery.interfaces import IGallery
    24 from pyams_content.component.gallery.zmi.interfaces import IGalleryMediasAddFields, IGalleryContentsView
    24 from pyams_content.component.gallery.zmi.interfaces import IGalleryMediasAddFields, IGalleryContentsView
       
    25 from pyams_content.features.renderer.interfaces import IContentRenderer
    25 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    26 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    26 from pyams_file.interfaces import IFileInfo
    27 from pyams_file.interfaces import IFileInfo
    27 from pyams_form.interfaces.form import IWidgetsPrefixViewletsManager
    28 from pyams_form.interfaces.form import IWidgetsPrefixViewletsManager
    28 from pyams_i18n.interfaces import II18n
    29 from pyams_i18n.interfaces import II18n
    29 from pyams_skin.layer import IPyAMSLayer
    30 from pyams_skin.layer import IPyAMSLayer
    30 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    31 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    31 from pyramid.interfaces import IView
    32 from pyramid.interfaces import IView
    32 
    33 
    33 # import packages
    34 # import packages
    34 from pyams_content.shared.common.zmi import WfSharedContentPermissionMixin
    35 from pyams_content.shared.common.zmi import WfSharedContentPermissionMixin
       
    36 from pyams_content.features.renderer.zmi import BaseContentRenderer
       
    37 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
    35 from pyams_form.form import AJAXEditForm
    38 from pyams_form.form import AJAXEditForm
    36 from pyams_pagelet.pagelet import pagelet_config
    39 from pyams_pagelet.pagelet import pagelet_config
    37 from pyams_template.template import template_config, get_view_template
    40 from pyams_template.template import template_config
    38 from pyams_utils.adapter import adapter_config, ContextRequestAdapter
    41 from pyams_utils.adapter import adapter_config
    39 from pyams_utils.url import absolute_url
    42 from pyams_utils.url import absolute_url
    40 from pyams_viewlet.viewlet import viewlet_config, Viewlet
    43 from pyams_viewlet.viewlet import viewlet_config, Viewlet
    41 from pyams_zmi.form import AdminDialogEditForm, AdminDialogDisplayForm
    44 from pyams_zmi.form import AdminDialogEditForm, AdminDialogDisplayForm
    42 from pyramid.exceptions import NotFound
    45 from pyramid.exceptions import NotFound
    43 from pyramid.renderers import render_to_response
    46 from pyramid.renderers import render_to_response
    59 
    62 
    60     legend = _("Update gallery properties")
    63     legend = _("Update gallery properties")
    61     icon_css_class = 'fa fa-fw fa-picture-o'
    64     icon_css_class = 'fa fa-fw fa-picture-o'
    62 
    65 
    63     fields = field.Fields(IGallery).omit('__parent__', '__file__')
    66     fields = field.Fields(IGallery).omit('__parent__', '__file__')
       
    67     fields['renderer'].widgetFactory = RendererFieldWidget
       
    68 
    64     ajax_handler = 'properties.json'
    69     ajax_handler = 'properties.json'
    65     edit_permission = MANAGE_CONTENT_PERMISSION
    70     edit_permission = MANAGE_CONTENT_PERMISSION
    66 
    71 
    67     def updateWidgets(self, prefix=None):
    72     def updateWidgets(self, prefix=None):
    68         super(GalleryPropertiesEditForm, self).updateWidgets(prefix)
    73         super(GalleryPropertiesEditForm, self).updateWidgets(prefix)
   152     media.visible = not media.visible
   157     media.visible = not media.visible
   153     return {'visible': media.visible}
   158     return {'visible': media.visible}
   154 
   159 
   155 
   160 
   156 #
   161 #
   157 # Gallery renderers
       
   158 #
       
   159 
       
   160 class BaseGalleryRenderer(ContextRequestAdapter):
       
   161     """Base gallery renderer"""
       
   162 
       
   163     def update(self):
       
   164         pass
       
   165 
       
   166     render = get_view_template()
       
   167 
       
   168 
       
   169 @adapter_config(name='default', context=(IGallery, IPyAMSLayer), provides=IGalleryRenderer)
       
   170 @template_config(template='templates/renderer-default.pt', layer=IPyAMSLayer)
       
   171 class DefaultGalleryRenderer(BaseGalleryRenderer):
       
   172     """Default gallery renderer"""
       
   173 
       
   174     label = _("Default gallery renderer")
       
   175     weight = 1
       
   176 
       
   177 
       
   178 #
       
   179 # Gallery medias downloader
   162 # Gallery medias downloader
   180 #
   163 #
   181 
   164 
   182 @view_config(name='get-medias.zip', context=IGallery, request_type=IPyAMSLayer,
   165 @view_config(name='get-medias.zip', context=IGallery, request_type=IPyAMSLayer,
   183              permission=VIEW_SYSTEM_PERMISSION)
   166              permission=VIEW_SYSTEM_PERMISSION)