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)})