diff -r 000000000000 -r 7c0001cacf8e src/pyams_content/component/extfile/interfaces/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_content/component/extfile/interfaces/__init__.py Thu Oct 08 13:37:29 2015 +0200 @@ -0,0 +1,108 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# 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 zope.annotation.interfaces import IAttributeAnnotatable +from zope.container.interfaces import IContainer + +# import packages +from pyams_i18n.schema import I18nTextLineField, I18nTextField, I18nFileField, I18nThumbnailImageField +from pyams_utils.schema import PersistentList +from zope.container.constraints import containers, contains +from zope.interface import Interface, Attribute +from zope.schema import TextLine, Choice + +from pyams_content import _ + + +EXTFILE_CONTAINER_KEY = 'pyams_content.extfile' +EXTFILE_LINKS_CONTAINER_KEY = 'pyams_content.extfile.links' + + +class IBaseExtFile(IAttributeAnnotatable): + """Base external file interface""" + + containers('.IExtFileContainer') + + title = I18nTextLineField(title=_("Title"), + description=_("File title, as shown in front-office"), + required=True) + + description = I18nTextField(title=_("Description"), + description=_("File description displayed by front-office template"), + required=False) + + author = TextLine(title=_("Author"), + description=_("Name of document's author"), + required=False) + + +class IExtFile(IBaseExtFile): + """Generic external file interface""" + + data = I18nFileField(title=_("File data"), + description=_("File content"), + required=True) + + +class IExtMedia(IExtFile): + """External media file interface""" + + +class IExtImage(IExtMedia): + """External image file interface""" + + data = I18nThumbnailImageField(title=_("Image data"), + description=_("Image content"), + required=True) + + +class IExtVideo(IExtMedia): + """External video file interface""" + + +class IExtAudio(IExtMedia): + """External audio file interface""" + + +class IExtFileContainer(IContainer): + """External files container""" + + contains(IBaseExtFile) + + files = Attribute("Files list iterator") + medias = Attribute("Medias list iterator") + images = Attribute("Images list iterator") + videos = Attribute("Videos list iterator") + audios = Attribute("Audios list iterator") + + +class IExtFileContainerTarget(Interface): + """External files container marker interface""" + + +class IExtFileLinksContainer(Interface): + """External files links container interface""" + + files = PersistentList(title=_("External files"), + description=_("List of external files linked to this object"), + value_type=Choice(vocabulary="PyAMS content external files"), + required=False) + + +class IExtFileLinksContainerTarget(Interface): + """External files links container marker interface"""