Source code for ciowarehouse.handlers.handler_audio

"""A file handler for audios."""

from os.path import join

from chrysalio.helpers.literal import Literal
from ..lib.i18n import _
from ..lib.handler import Handler


# =============================================================================
[docs]def includeme(configurator): """Function to include CioWarehouse a handler. :type configurator: pyramid.config.Configurator :param configurator: Object used to do configuration declaration within the application. """ Handler.register(configurator, HandlerAudio)
# =============================================================================
[docs]class HandlerAudio(Handler): """Class to manage an audio.""" uid = 'audio' label = _('Generic audio file handling') extensions = ('.mp3', '.ogg', '.m4a') viewings = ( {'name': 'default', 'label': _('Default'), 'template': 'ciowarehouse:Templates/handler_layout_view.pt', 'css': ('/ciowarehouse/css/handler_audio.css',)},) # -------------------------------------------------------------------------
[docs] def view(self, request, warehouse, content=None, ts_factory=None): """Return a string containing HTML to display the file. See: :meth:`.lib.handler.Handler.view` """ content = '<div class="cioAudio"><audio controls="">'\ '<source src="{0}"/><span>{1}</span></audio></div>'.format( request.route_path( 'file_download', warehouse_id=warehouse.uid, path=join(*request.matchdict['path'])), request.localizer.translate( _('Your browser does not support HTML5 audio.'))) return self._chameleon_render( request, warehouse, self.viewings[0], ts_factory or _, {'content': Literal(content)})