src/pyams_media/zmi/__init__.py
changeset 0 fd39db613f8b
child 11 967f905e1de5
equal deleted inserted replaced
-1:000000000000 0:fd39db613f8b
       
     1 #
       
     2 # Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
       
     3 # All Rights Reserved.
       
     4 #
       
     5 # This software is subject to the provisions of the Zope Public License,
       
     6 # Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
       
     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
       
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
       
    10 # FOR A PARTICULAR PURPOSE.
       
    11 #
       
    12 
       
    13 __docformat__ = 'restructuredtext'
       
    14 
       
    15 
       
    16 # import standard library
       
    17 
       
    18 # import interfaces
       
    19 from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager
       
    20 from pyams_media.interfaces import IMediaConversionUtility
       
    21 from pyams_skin.interfaces.viewlet import ITableItemColumnActionsMenu
       
    22 from pyams_skin.layer import IPyAMSLayer
       
    23 
       
    24 # import packages
       
    25 from pyams_form.form import AJAXEditForm, AJAXAddForm
       
    26 from pyams_form.schema import CloseButton
       
    27 from pyams_pagelet.pagelet import pagelet_config
       
    28 from pyams_skin.viewlet.toolbar import ToolbarMenuItem
       
    29 from pyams_template.template import template_config
       
    30 from pyams_utils.text import text_to_html
       
    31 from pyams_viewlet.viewlet import viewlet_config, Viewlet
       
    32 from pyams_zmi.control_panel import UtilitiesTable
       
    33 from pyams_zmi.form import AdminDialogEditForm, AdminDialogAddForm
       
    34 from pyams_zmi.layer import IAdminLayer
       
    35 from pyramid.view import view_config
       
    36 from z3c.form import field, button
       
    37 from zope.interface import Interface
       
    38 
       
    39 from pyams_media import _
       
    40 
       
    41 
       
    42 @pagelet_config(name='properties.html', context=IMediaConversionUtility, layer=IPyAMSLayer, permission='system.view')
       
    43 class MediaConversionUtilityPropertiesEditForm(AdminDialogEditForm):
       
    44     """Medias conversion utility properties edit form"""
       
    45 
       
    46     @property
       
    47     def title(self):
       
    48         return self.context.__name__
       
    49 
       
    50     legend = _("Update medias converter properties")
       
    51 
       
    52     fields = field.Fields(IMediaConversionUtility)
       
    53     label_css_class = 'control-label col-md-4'
       
    54     input_css_class = 'col-md-8'
       
    55 
       
    56     ajax_handler = 'properties.json'
       
    57     edit_permission = 'system.manage'
       
    58 
       
    59 
       
    60 @view_config(name='properties.json', context=IMediaConversionUtility, request_type=IPyAMSLayer,
       
    61              permission='system.manage', renderer='json', xhr=True)
       
    62 class MediaConversionUtilityPropertiesAJAXEditForm(AJAXEditForm, MediaConversionUtilityPropertiesEditForm):
       
    63     """Medias conversion utility properties edit form, JSON renderer"""
       
    64 
       
    65 
       
    66 @viewlet_config(name='test-conversion-process.menu', context=IMediaConversionUtility, layer=IAdminLayer,
       
    67                 view=UtilitiesTable, manager=ITableItemColumnActionsMenu, permission='system.manage')
       
    68 class MediaConversionProcessTestMenu(ToolbarMenuItem):
       
    69     """Medias conversion process test menu"""
       
    70 
       
    71     label = _("Test process connection...")
       
    72     label_css_class = 'fa fa-fw fa-film'
       
    73     url = 'test-conversion-process.html'
       
    74     modal_target = True
       
    75     stop_propagation = True
       
    76 
       
    77 
       
    78 class IMediaConversionProcessTestButtons(Interface):
       
    79     """Medias conversion process test buttons"""
       
    80 
       
    81     close = CloseButton(name='close', title=_("Close"))
       
    82     test = button.Button(name='test', title=_("Test connection"))
       
    83 
       
    84 
       
    85 @pagelet_config(name='test-conversion-process.html', context=IMediaConversionUtility, layer=IPyAMSLayer,
       
    86                 permission='system.manage')
       
    87 class MediaConversionProcessTestForm(AdminDialogAddForm):
       
    88     """Medias conversion process test form"""
       
    89 
       
    90     @property
       
    91     def title(self):
       
    92         return self.context.__name__
       
    93 
       
    94     legend = _("Test medias converter process connection")
       
    95     icon_css_class = 'fa fa-fw fa-film'
       
    96 
       
    97     prefix = 'test_form.'
       
    98     fields = field.Fields(Interface)
       
    99     buttons = button.Buttons(IMediaConversionProcessTestButtons)
       
   100     ajax_handler = 'test-conversion-process.json'
       
   101     edit_permission = 'system.manage'
       
   102 
       
   103     @property
       
   104     def form_target(self):
       
   105         return '#{0}_test_result'.format(self.id)
       
   106 
       
   107     def updateActions(self):
       
   108         super(MediaConversionProcessTestForm, self).updateActions()
       
   109         if 'test' in self.actions:
       
   110             self.actions['test'].addClass('btn-primary')
       
   111 
       
   112     def createAndAdd(self, data):
       
   113         return self.context.test_process()
       
   114 
       
   115 
       
   116 @viewlet_config(name='test-conversion-process.suffix', layer=IAdminLayer, manager=IWidgetsSuffixViewletsManager,
       
   117                 view=MediaConversionProcessTestForm, weight=50)
       
   118 @template_config(template='templates/process-test.pt')
       
   119 class MediaConversionProcessTestSuffix(Viewlet):
       
   120     """Media conversion process test form suffix"""
       
   121 
       
   122 
       
   123 @view_config(name='test-conversion-process.json', context=IMediaConversionUtility, request_type=IPyAMSLayer,
       
   124              permission='system.manage', renderer='json', xhr=True)
       
   125 class MediaConversionProcessAJAXTestForm(AJAXAddForm, MediaConversionProcessTestForm):
       
   126     """Medias conversion process test form, JSON renderer"""
       
   127 
       
   128     def get_ajax_output(self, changes):
       
   129         status, message = changes
       
   130         if status == 200:
       
   131             return {'status': 'success',
       
   132                     'content': {'html': text_to_html(message)},
       
   133                     'close_form': False}
       
   134         else:
       
   135             return {'status': 'info',
       
   136                     'content': {'html': text_to_html(message)},
       
   137                     'close_form': False}