--- 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