src/pyams_media/zmi/video.py
changeset 15 d1477fa29943
parent 0 fd39db613f8b
child 47 44889107d310
equal deleted inserted replaced
14:61775c0158f3 15:d1477fa29943
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
    12 from pyams_form.interfaces.form import IWidgetsPrefixViewletsManager
       
    13 from pyams_skin.help import ContentHelp
       
    14 from pyams_skin.interfaces import IContentHelp
       
    15 from pyams_template.template import template_config
       
    16 from pyams_utils.adapter import adapter_config
       
    17 from pyams_zmi.layer import IAdminLayer
       
    18 
    12 
    19 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    20 
    14 
    21 
    15 
    22 # import standard library
    16 # import standard library
    23 from decimal import Decimal
    17 from decimal import Decimal
    24 
    18 
    25 # import interfaces
    19 # import interfaces
    26 from pyams_file.interfaces import IVideo, IThumbnail
    20 from pyams_file.interfaces import IVideo, IThumbnail
       
    21 from pyams_form.interfaces.form import IWidgetsPrefixViewletsManager, IFormHelp
    27 from pyams_skin.interfaces.viewlet import IContextActions
    22 from pyams_skin.interfaces.viewlet import IContextActions
       
    23 from pyams_utils.interfaces import MANAGE_PERMISSION
       
    24 from pyams_zmi.layer import IAdminLayer
    28 from z3c.form.interfaces import HIDDEN_MODE
    25 from z3c.form.interfaces import HIDDEN_MODE
    29 
    26 
    30 # import packages
    27 # import packages
    31 from pyams_form.form import AJAXAddForm
    28 from pyams_form.form import AJAXAddForm
       
    29 from pyams_form.help import FormHelp
    32 from pyams_form.schema import CloseButton
    30 from pyams_form.schema import CloseButton
    33 from pyams_pagelet.pagelet import pagelet_config
    31 from pyams_pagelet.pagelet import pagelet_config
    34 from pyams_skin.layer import IPyAMSLayer
    32 from pyams_skin.layer import IPyAMSLayer
    35 from pyams_skin.viewlet.toolbar import ToolbarMenuDivider, ToolbarMenuItem
    33 from pyams_skin.viewlet.toolbar import ToolbarMenuDivider, ToolbarMenuItem
       
    34 from pyams_template.template import template_config
       
    35 from pyams_utils.adapter import adapter_config
    36 from pyams_utils.schema import DottedDecimalField
    36 from pyams_utils.schema import DottedDecimalField
    37 from pyams_viewlet.viewlet import viewlet_config, Viewlet
    37 from pyams_viewlet.viewlet import viewlet_config, Viewlet
    38 from pyams_zmi.form import AdminDialogAddForm
    38 from pyams_zmi.form import AdminDialogAddForm
    39 from pyramid.view import view_config
    39 from pyramid.view import view_config
    40 from z3c.form import field, button
    40 from z3c.form import field, button
    42 
    42 
    43 from pyams_media import _
    43 from pyams_media import _
    44 
    44 
    45 
    45 
    46 @viewlet_config(name='video.thumbnail.divider', context=IVideo, layer=IPyAMSLayer, view=Interface,
    46 @viewlet_config(name='video.thumbnail.divider', context=IVideo, layer=IPyAMSLayer, view=Interface,
    47                 manager=IContextActions, permission='manage', weight=19)
    47                 manager=IContextActions, permission=MANAGE_PERMISSION, weight=19)
    48 class VideoDividerAction(ToolbarMenuDivider):
    48 class VideoDividerAction(ToolbarMenuDivider):
    49     """Video divider action"""
    49     """Video divider action"""
    50 
    50 
    51 
    51 
    52 #
    52 #
    53 # Video thumbnail
    53 # Video thumbnail
    54 #
    54 #
    55 
    55 
    56 @viewlet_config(name='video.thumbnail.action', context=IVideo, layer=IPyAMSLayer, view=Interface,
    56 @viewlet_config(name='video.thumbnail.action', context=IVideo, layer=IPyAMSLayer, view=Interface,
    57                 manager=IContextActions, permission='manage', weight=20)
    57                 manager=IContextActions, permission=MANAGE_PERMISSION, weight=20)
    58 class VideoThumbnailAction(ToolbarMenuItem):
    58 class VideoThumbnailAction(ToolbarMenuItem):
    59     """Video thumbnail selection action"""
    59     """Video thumbnail selection action"""
    60 
    60 
    61     label = _("Select thumbnail...")
    61     label = _("Select thumbnail...")
    62     label_css_class = 'fa fa-fw fa-film'
    62     label_css_class = 'fa fa-fw fa-film'
    78     time = DottedDecimalField(title=_("Thumbnail timestamp"),
    78     time = DottedDecimalField(title=_("Thumbnail timestamp"),
    79                               required=True,
    79                               required=True,
    80                               default=Decimal(5))
    80                               default=Decimal(5))
    81 
    81 
    82 
    82 
    83 @pagelet_config(name='video-thumbnail.html', context=IVideo, layer=IPyAMSLayer, permission='manage')
    83 @pagelet_config(name='video-thumbnail.html', context=IVideo, layer=IPyAMSLayer, permission=MANAGE_PERMISSION)
    84 class VideoThumbnailEditForm(AdminDialogAddForm):
    84 class VideoThumbnailEditForm(AdminDialogAddForm):
    85     """Video thumbnail selection form"""
    85     """Video thumbnail selection form"""
    86 
    86 
    87     legend = _("Select video thumbnail")
    87     legend = _("Select video thumbnail")
    88     icon_css_class = 'fa fa-fw fa-film'
    88     icon_css_class = 'fa fa-fw fa-film'
   114             thumbnailer.clear_thumbnails()
   114             thumbnailer.clear_thumbnails()
   115             return thumbnailer.get_thumbnail('{0[0]}x{0[1]}'.format(size), 'png', time)
   115             return thumbnailer.get_thumbnail('{0[0]}x{0[1]}'.format(size), 'png', time)
   116 
   116 
   117 
   117 
   118 @view_config(name='video-thumbnail.json', context=IVideo, request_type=IPyAMSLayer,
   118 @view_config(name='video-thumbnail.json', context=IVideo, request_type=IPyAMSLayer,
   119              permission='manage', renderer='json', xhr=True)
   119              permission=MANAGE_PERMISSION, renderer='json', xhr=True)
   120 class VideoThumbnailAJAXEditForm(AJAXAddForm, VideoThumbnailEditForm):
   120 class VideoThumbnailAJAXEditForm(AJAXAddForm, VideoThumbnailEditForm):
   121     """Video thumbnail selection form, JSON renderer"""
   121     """Video thumbnail selection form, JSON renderer"""
   122 
   122 
   123     def get_ajax_output(self, changes):
   123     def get_ajax_output(self, changes):
   124         translate = self.request.localizer.translate
   124         translate = self.request.localizer.translate
   135 @template_config(template='templates/video-thumbnail.pt')
   135 @template_config(template='templates/video-thumbnail.pt')
   136 class VideoThumbnailViewletsPrefix(Viewlet):
   136 class VideoThumbnailViewletsPrefix(Viewlet):
   137     """Video thumbnail edit form viewlets prefix"""
   137     """Video thumbnail edit form viewlets prefix"""
   138 
   138 
   139 
   139 
   140 @adapter_config(context=(IVideo, IAdminLayer, VideoThumbnailEditForm), provides=IContentHelp)
   140 @adapter_config(context=(IVideo, IAdminLayer, VideoThumbnailEditForm), provides=IFormHelp)
   141 class VideoThumbnailEditFormHelpAdapter(ContentHelp):
   141 class VideoThumbnailEditFormHelpAdapter(FormHelp):
   142     """Video thumbnail selection form help adapter"""
   142     """Video thumbnail selection form help adapter"""
   143 
   143 
   144     message = _("""You can play the video until you display the image you want.
   144     message = _("""You can play the video until you display the image you want.
   145 
   145 
   146 By pausing the video and clicking on ''Select thumbnail'' button, the selected frame will be used as
   146 By pausing the video and clicking on ''Select thumbnail'' button, the selected frame will be used as