--- a/src/pyams_content/component/extfile/interfaces/__init__.py Mon Sep 11 14:53:15 2017 +0200
+++ b/src/pyams_content/component/extfile/interfaces/__init__.py Mon Sep 11 14:54:30 2017 +0200
@@ -16,14 +16,10 @@
# import standard library
# import interfaces
-from zope.annotation.interfaces import IAttributeAnnotatable
-from zope.container.interfaces import IContainer
+from pyams_content.component.association.interfaces import IAssociationItem, IAssociationTarget
# 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 _
@@ -33,14 +29,12 @@
EXTFILE_LINKS_CONTAINER_KEY = 'pyams_content.extfile.links'
-class IBaseExtFile(IAttributeAnnotatable):
+class IBaseExtFile(IAssociationItem):
"""Base external file interface"""
- containers('.IExtFileContainer')
-
title = I18nTextLineField(title=_("Title"),
description=_("File title, as shown in front-office"),
- required=True)
+ required=False)
description = I18nTextField(title=_("Description"),
description=_("File description displayed by front-office template"),
@@ -50,6 +44,15 @@
description=_("Name of document's author"),
required=False)
+ language = Choice(title=_("Language"),
+ description=_("File's content language"),
+ vocabulary="PyAMS base languages",
+ required=False)
+
+ filename = TextLine(title=_("Save file as..."),
+ description=_("Name under which the file will be saved"),
+ required=False)
+
class IExtFile(IBaseExtFile):
"""Generic external file interface"""
@@ -62,10 +65,18 @@
class IExtMedia(IExtFile):
"""External media file interface"""
+ title = I18nTextLineField(title=_("Legend"),
+ description=_("File legend, as shown in front-office"),
+ required=False)
+
class IExtImage(IExtMedia):
"""External image file interface"""
+ alt_title = I18nTextLineField(title=_("Accessibility title"),
+ description=_("Alternate title used to describe image content"),
+ required=False)
+
data = I18nThumbnailImageField(title=_("Image data"),
description=_("Image content"),
required=True)
@@ -79,30 +90,5 @@
"""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):
+class IExtFileContainerTarget(IAssociationTarget):
"""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"""