src/pyams_default_theme/component/association/__init__.py
changeset 181 97e8610cbabd
parent 179 f805794b2500
child 204 713edde7dbf1
--- a/src/pyams_default_theme/component/association/__init__.py	Thu Oct 11 14:51:45 2018 +0200
+++ b/src/pyams_default_theme/component/association/__init__.py	Fri Oct 12 10:28:46 2018 +0200
@@ -12,28 +12,25 @@
 
 __docformat__ = 'restructuredtext'
 
-
-# import standard library
-
-# import packages
 from persistent import Persistent
 from zope.interface import implementer
 from zope.location import Location
 from zope.schema.fieldproperty import FieldProperty
 
-# import interfaces
-from pyams_content.component.association.interfaces import IAssociationParagraph, IAssociationInfo, \
-    IAssociationContainer
-from pyams_content.component.links.interfaces import IInternalLink
-from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer
+from pyams_content.component.association.interfaces import IAssociationContainer, IAssociationInfo, \
+    IAssociationParagraph
+from pyams_content.component.extfile import IExtFile
+from pyams_content.component.links.interfaces import IBaseLink, IInternalLink
+from pyams_content.component.paragraph.interfaces import IParagraphContainer, IParagraphContainerTarget
 from pyams_content.features.renderer.interfaces import IContentRenderer
 from pyams_content.features.renderer.skin import BaseContentRenderer
-from pyams_default_theme import _
 from pyams_default_theme.component.association.interfaces import IAssociationParagraphRemoteContentRendererSettings
 from pyams_skin.layer import IPyAMSLayer
 from pyams_template.template import template_config
 from pyams_utils.adapter import adapter_config, get_annotation_adapter
 
+from pyams_default_theme import _
+
 
 #
 # Associations paragraph default renderer
@@ -45,15 +42,27 @@
     """Associations paragraph default renderer"""
 
     label = _("Default associations renderer")
-    associations = ()
+    i18n_context_attrs = ('title',)
+
+    links = None
+    attachments = None
 
-    i18n_context_attrs = ('title', )
+    def get_associations(self):
+        yield from IAssociationContainer(self.context).get_visible_items(self.request)
+
+    @staticmethod
+    def get_link_info(link):
+        return IAssociationInfo(link)
 
     def update(self):
-        super(AssociationParagraphDefaultRenderer, self).update()
-        self.associations = [{'url': item.get_url(self.request),
-                              'title': IAssociationInfo(item).user_title}
-                             for item in IAssociationContainer(self.context).get_visible_items(self.request)]
+        super().update()
+        self.attachments = []
+        self.links = []
+        for item in self.get_associations():
+            if IExtFile.providedBy(item):
+                self.attachments.append(item)
+            elif IBaseLink.providedBy(item):
+                self.links.append(item)
 
 
 #
@@ -86,8 +95,9 @@
     """Associations container remote content renderer"""
 
     label = _("Include remote content")
+    weight = 10
 
-    i18n_context_attrs = ('title', )
+    i18n_context_attrs = ('title',)
     links = ()
 
     settings_interface = IAssociationParagraphRemoteContentRendererSettings