src/pyams_content/component/paragraph/zmi/container.py
changeset 1006 cbb65b4b8742
parent 956 a8723fffbaf6
child 1070 ea0c7ac589c4
--- a/src/pyams_content/component/paragraph/zmi/container.py	Tue Oct 09 15:05:38 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/container.py	Tue Oct 09 15:06:10 2018 +0200
@@ -12,56 +12,52 @@
 
 __docformat__ = 'restructuredtext'
 
-
-# import standard library
 import json
 
-# import interfaces
-from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
-from pyams_content.component.association.interfaces import IAssociationContainer
-from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
-    IBaseParagraph, IParagraphFactorySettings
-from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphTitleToolbar, \
-    IParagraphContainerTable, IParagraphContainerView
-from pyams_form.interfaces.form import IFormSecurityContext, IInnerSubForm
-from pyams_i18n.interfaces import II18n
-from pyams_skin.interfaces import IInnerPage, IPageHeader
-from pyams_skin.interfaces.container import ITableElementEditor
-from pyams_skin.layer import IPyAMSLayer
-from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
-from pyams_zmi.interfaces.menu import IPropertiesMenu
-from pyams_zmi.layer import IAdminLayer
-from z3c.table.interfaces import IColumn, IValues
-from zope.contentprovider.interfaces import IContentProvider
-
-# import packages
-from pyams_content.component.association.zmi import AssociationsContainerView
-from pyams_content.component.paragraph import BaseParagraph
-from pyams_content.shared.common.zmi import WfModifiedContentColumnMixin
-from pyams_content.skin import pyams_content
-from pyams_form.security import ProtectedFormObjectMixin
-from pyams_pagelet.pagelet import pagelet_config
-from pyams_skin.container import switch_element_visibility, switch_element_attribute
-from pyams_skin.page import DefaultPageHeaderAdapter
-from pyams_skin.table import BaseTable, I18nColumn, TrashColumn, SorterColumn, ImageColumn, \
-    VisibilitySwitcherColumn, AttributeSwitcherColumn
-from pyams_skin.viewlet.menu import MenuItem
-from pyams_template.template import template_config
-from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, NullAdapter
-from pyams_utils.fanstatic import get_resource_path
-from pyams_utils.traversing import get_parent
-from pyams_utils.url import absolute_url
-from pyams_viewlet.manager import viewletmanager_config, WeightOrderedViewletManager, TemplateBasedViewletManager
-from pyams_viewlet.viewlet import viewlet_config, Viewlet
-from pyams_zmi.form import AdminDialogDisplayForm
-from pyams_zmi.view import AdminView, ContainerAdminView
-from pyams_zmi.zmi.table import InnerTableView
 from pyramid.decorator import reify
 from pyramid.exceptions import NotFound
 from pyramid.view import view_config
 from z3c.form import field
 from z3c.table.column import GetAttrColumn
-from zope.interface import implementer, Interface
+from z3c.table.interfaces import IColumn, IValues
+from zope.contentprovider.interfaces import IContentProvider
+from zope.interface import Interface, implementer
+
+from pyams_content.component.association.interfaces import IAssociationContainer
+from pyams_content.component.association.zmi import AssociationsContainerView
+from pyams_content.component.paragraph import BaseParagraph
+from pyams_content.component.paragraph.interfaces import IBaseParagraph, IParagraphContainer, IParagraphContainerTarget, \
+    IParagraphFactorySettings
+from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerTable, IParagraphContainerView, \
+    IParagraphInnerEditor, IParagraphTitleToolbar, IParagraphTitleValue
+from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
+from pyams_content.shared.common.zmi import WfModifiedContentColumnMixin
+from pyams_content.skin import pyams_content
+from pyams_form.interfaces.form import IFormSecurityContext, IInnerSubForm
+from pyams_form.security import ProtectedFormObjectMixin
+from pyams_i18n.interfaces import II18n
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.container import switch_element_attribute, switch_element_visibility
+from pyams_skin.interfaces import IInnerPage, IPageHeader
+from pyams_skin.interfaces.container import ITableElementEditor
+from pyams_skin.layer import IPyAMSLayer
+from pyams_skin.page import DefaultPageHeaderAdapter
+from pyams_skin.table import AttributeSwitcherColumn, BaseTable, I18nColumn, ImageColumn, SorterColumn, TrashColumn, \
+    VisibilitySwitcherColumn
+from pyams_skin.viewlet.menu import MenuItem
+from pyams_template.template import template_config
+from pyams_utils.adapter import ContextRequestViewAdapter, NullAdapter, adapter_config
+from pyams_utils.fanstatic import get_resource_path
+from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
+from pyams_utils.traversing import get_parent
+from pyams_utils.url import absolute_url
+from pyams_viewlet.manager import TemplateBasedViewletManager, WeightOrderedViewletManager, viewletmanager_config
+from pyams_viewlet.viewlet import Viewlet, viewlet_config
+from pyams_zmi.form import AdminDialogDisplayForm
+from pyams_zmi.interfaces.menu import IPropertiesMenu
+from pyams_zmi.layer import IAdminLayer
+from pyams_zmi.view import AdminView, ContainerAdminView
+from pyams_zmi.zmi.table import InnerTableView
 
 from pyams_content import _
 
@@ -252,7 +248,7 @@
     """Paragraph title toolbar viewlet manager"""
 
 
-def getParagraphTitleHints(item, request, table):
+def get_paragraph_title_hints(item, request, table):
     """Get paragraphs column title hints"""
     registry = request.registry
     provider = registry.queryMultiAdapter((item, request, table), IContentProvider,
@@ -275,6 +271,9 @@
         return '<span class="title">{0}</span>'.format(super(ParagraphContainerBaseTitleColumn, self).renderCell(item))
 
     def getValue(self, obj):
+        adapter = self.request.registry.queryMultiAdapter((obj, self.request), IParagraphTitleValue)
+        if adapter is not None:
+            return adapter
         return II18n(obj).query_attribute('title', request=self.request) or BaseParagraph.empty_title
 
 
@@ -292,11 +291,11 @@
                '        <i class="fa fa-plus-square-o switch"></i>' \
                '    </span>&nbsp;&nbsp;&nbsp;{title}' \
                '</span>'.format(
-                    hint=self.request.localizer.translate(_("Click to open/close all paragraphs editors")),
-                    title=super(ParagraphContainerTitleColumn, self).renderHeadCell())
+            hint=self.request.localizer.translate(_("Click to open/close all paragraphs editors")),
+            title=super(ParagraphContainerTitleColumn, self).renderHeadCell())
 
     def renderCell(self, item):
-        provider = getParagraphTitleHints(item, self.request, self.table) or ''
+        provider = get_paragraph_title_hints(item, self.request, self.table) or ''
         return '<div data-ams-stop-propagation="true" ' \
                '     data-ams-click-handler="PyAMS_content.paragraphs.switchEditor">{provider}' \
                '    <span class="small hint" title="{hint}" data-ams-hint-gravity="e">' \
@@ -304,9 +303,9 @@
                '    </span>&nbsp;&nbsp;&nbsp;<span class="title">{title}</span>' \
                '</div>' \
                '<div class="inner-table-form editor margin-x-10 margin-bottom-0"></div>'.format(
-                    provider=provider,
-                    hint=self.request.localizer.translate(_("Click to open/close paragraph editor")),
-                    title=super(ParagraphContainerTitleColumn, self).renderCell(item))
+            provider=provider,
+            hint=self.request.localizer.translate(_("Click to open/close paragraph editor")),
+            title=super(ParagraphContainerTitleColumn, self).renderCell(item))
 
 
 @template_config(template='templates/paragraph-title-icon.pt', layer=IPyAMSLayer)
@@ -433,7 +432,7 @@
                 view = AssociationsContainerView(paragraph, self.request)
                 view.widget_icon_class = 'fa fa-fw {0}'.format(paragraph.icon_class)
                 view.title = II18n(paragraph).query_attribute('title', request=self.request) or \
-                    BaseParagraph.empty_title
+                             BaseParagraph.empty_title
                 result.append(view)
         return result