Source code for pyams_media.audio

#
# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#

__docformat__ = 'restructuredtext'


# import standard library

# import interfaces
from pyams_file.interfaces import IAudio
from pyams_media.interfaces import IAudioType
from pyams_utils.interfaces.tales import ITALESExtension

# import packages
from pyams_utils.adapter import adapter_config, ContextAdapter, ContextRequestViewAdapter
from zope.interface import Interface


#
# Custom audio types
#

[docs]@adapter_config(context=IAudio, provides=IAudioType) class AudioTypeAdapter(ContextAdapter): """Default audio content type adapter""" @property def audio_type(self): return self.context.content_type
[docs]@adapter_config(name='audio_type', context=(Interface, Interface, Interface), provides=ITALESExtension) class AudioTypeExtension(ContextRequestViewAdapter): """extension:audio_type(media) TALES extension"""
[docs] def render(self, context=None): if context is None: context = self.context if not IAudio.providedBy(context): return None registry = self.request.registry content_type = context.content_type if isinstance(content_type, bytes): content_type = content_type.decode() adapter = registry.queryAdapter(context, IAudioType, name=content_type) if adapter is None: adapter = registry.queryAdapter(context, IAudioType) if adapter is not None: audio_type = adapter.audio_type if isinstance(audio_type, bytes): audio_type = audio_type.decode() return audio_type