src/pyams_content/component/extfile/interfaces/__init__.py
changeset 140 67bad9f880ee
parent 0 7c0001cacf8e
child 200 af969d925a91
--- 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"""