src/pyams_content/shared/site/zmi/container.py
changeset 1060 29b1aaf9e080
parent 972 bfdb9bbc9175
child 1070 ea0c7ac589c4
--- a/src/pyams_content/shared/site/zmi/container.py	Tue Nov 06 14:40:22 2018 +0100
+++ b/src/pyams_content/shared/site/zmi/container.py	Wed Nov 07 17:29:16 2018 +0100
@@ -12,8 +12,6 @@
 
 __docformat__ = 'restructuredtext'
 
-
-# import standard library
 import json
 from datetime import datetime
 
@@ -27,17 +25,14 @@
 from zope.intid.interfaces import IIntIds
 from zope.lifecycleevent import ObjectMovedEvent
 
-from pyams_content import _
-# import interfaces
 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION, MANAGE_SITE_PERMISSION
 from pyams_content.shared.common.interfaces import ISharedContent
 from pyams_content.shared.common.interfaces.zmi import IDashboardTable
 from pyams_content.shared.common.zmi.dashboard import SharedToolDashboardOwnerColumn, SharedToolDashboardSequenceColumn, \
     SharedToolDashboardStatusColumn, SharedToolDashboardStatusDateColumn, SharedToolDashboardStatusPrincipalColumn, \
     SharedToolDashboardVersionColumn
-# import packages
 from pyams_content.shared.site import WfSiteTopic
-from pyams_content.shared.site.interfaces import IContentLink, ISiteContainer, ISiteManager
+from pyams_content.shared.site.interfaces import IBaseSiteItem, IContentLink, ISiteContainer, ISiteManager
 from pyams_content.skin import pyams_content
 from pyams_content.skin.zmi.interfaces import ISiteTreeMenu, ISiteTreeTable, IUserAddingsMenuLabel
 from pyams_form.form import ajax_config
@@ -71,8 +66,10 @@
 from pyams_zmi.layer import IAdminLayer
 from pyams_zmi.view import AdminView
 
+from pyams_content import _
 
-@adapter_config(context=(ISiteContainer, IAdminLayer), provides=IBreadcrumbItem)
+
+@adapter_config(context=(IBaseSiteItem, IAdminLayer), provides=IBreadcrumbItem)
 class SiteContainerBreadcrumbAdapter(BreadcrumbAdminLayerItem):
     """Site container breadcrumb adapter"""
 
@@ -96,7 +93,7 @@
 # Site container publication views
 #
 
-@viewlet_config(name='workflow-publication.menu', context=ISiteContainer, layer=IPyAMSLayer, view=ISiteTreeTable,
+@viewlet_config(name='workflow-publication.menu', context=IBaseSiteItem, layer=IPyAMSLayer, view=ISiteTreeTable,
                 manager=ITableItemColumnActionsMenu, permission=MANAGE_SITE_PERMISSION, weight=210)
 class SiteContainerTableItemWorkflowPublicationMenu(ToolbarMenuItem):
     """Site container tree item workflow publication menu"""
@@ -108,7 +105,7 @@
     stop_propagation = True
 
 
-@viewlet_config(name='workflow-publication.menu', context=ISiteContainer, layer=IAdminLayer, manager=IPropertiesMenu,
+@viewlet_config(name='workflow-publication.menu', context=IBaseSiteItem, layer=IAdminLayer, manager=IPropertiesMenu,
                 permission=MANAGE_SITE_PERMISSION, weight=210)
 class SiteContainerWorkflowPublicationMenu(MenuItem):
     """Site container workflow publication menu"""
@@ -119,9 +116,9 @@
     modal_target = True
 
 
-@pagelet_config(name='workflow-publication.html', context=ISiteContainer, layer=IPyAMSLayer,
+@pagelet_config(name='workflow-publication.html', context=IBaseSiteItem, layer=IPyAMSLayer,
                 permission=MANAGE_SITE_PERMISSION)
-@ajax_config(name='workflow-publication.json', context=ISiteContainer, layer=IPyAMSLayer)
+@ajax_config(name='workflow-publication.json', context=IBaseSiteItem, layer=IPyAMSLayer)
 class SiteContainerWorkflowPublicationEditForm(AdminDialogEditForm):
     """Site container workflow publication edit form"""
 
@@ -150,8 +147,8 @@
                     icon_class = 'fa-eye-slash text-danger opaque'
                 value = '<i class="fa fa-fw {icon_class} hint align-base" title="{title}" ' \
                         'data-ams-hint-gravity="e"></i>'.format(
-                            icon_class=icon_class,
-                            title=self.request.localizer.translate(_("Visible element?")))
+                    icon_class=icon_class,
+                    title=self.request.localizer.translate(_("Visible element?")))
                 intids = get_utility(IIntIds)
                 output.setdefault('events', []).append(
                     get_json_table_cell_refresh_event(self.context, self.request,
@@ -166,9 +163,9 @@
 # Site container tree view
 #
 
-@viewlet_config(name='site-tree.menu', layer=IAdminLayer, context=ISiteContainer, manager=ISiteManagementMenu,
+@viewlet_config(name='site-tree.menu', layer=IAdminLayer, context=IBaseSiteItem, manager=ISiteManagementMenu,
                 permission=VIEW_SYSTEM_PERMISSION, weight=10)
-@viewletmanager_config(name='site-tree.menu', layer=IAdminLayer, context=ISiteContainer, provides=ISiteTreeMenu)
+@viewletmanager_config(name='site-tree.menu', layer=IAdminLayer, context=IBaseSiteItem, provides=ISiteTreeMenu)
 @implementer(ISiteTreeMenu)
 class SiteContainerTreeMenu(MenuItem):
     """Site container tree menu"""
@@ -231,7 +228,7 @@
         return attributes
 
 
-@adapter_config(name='sorter', context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
+@adapter_config(name='sorter', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
 class SiteContainerTreeSorterColumn(SorterColumn):
     """Site container tree sorter column"""
 
@@ -244,7 +241,7 @@
             return ''
 
 
-@view_config(name='set-site-order.json', context=ISiteContainer, request_type=IPyAMSLayer,
+@view_config(name='set-site-order.json', context=IBaseSiteItem, request_type=IPyAMSLayer,
              permission=MANAGE_SITE_PERMISSION, renderer='json', xhr=True)
 def set_site_order(request):
     """Set site elements order"""
@@ -297,7 +294,7 @@
     return result
 
 
-@adapter_config(name='visible', context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
+@adapter_config(name='visible', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
 class SiteContainerTreeVisibleColumn(JsActionColumn):
     """Site container tree visible column"""
 
@@ -332,8 +329,8 @@
                     icon_class = 'fa-eye-slash text-danger opaque'
             return '<i class="fa fa-fw {icon_class} hint align-base" title="{title}" ' \
                    'data-ams-hint-gravity="e"></i>'.format(
-                    icon_class=icon_class,
-                    title=self.request.localizer.translate(self.get_icon_hint(item)))
+                icon_class=icon_class,
+                title=self.request.localizer.translate(self.get_icon_hint(item)))
 
     def get_icon_hint(self, item):
         translate = self.request.localizer.translate
@@ -349,7 +346,7 @@
             return self.get_icon(item)
 
 
-@view_config(name='switch-content-visibility.json', context=ISiteContainer, request_type=IPyAMSLayer,
+@view_config(name='switch-content-visibility.json', context=IBaseSiteItem, request_type=IPyAMSLayer,
              permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
 def switch_content_visibility(request):
     """Switch content link visibility"""
@@ -364,7 +361,7 @@
     }
 
 
-@adapter_config(name='name', context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
+@adapter_config(name='name', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
 class SiteContainerTreeNameColumn(NameColumn):
     """Site container tree name column"""
 
@@ -377,8 +374,8 @@
                '        <i class="fa fa-fw fa-plus-square-o switch"></i>' \
                '    </span>&nbsp;&nbsp;{title}' \
                '</span>'.format(
-                    hint=self.request.localizer.translate(_("Click to open/close all folders")),
-                    title=super(SiteContainerTreeNameColumn, self).renderHeadCell())
+            hint=self.request.localizer.translate(_("Click to open/close all folders")),
+            title=super(SiteContainerTreeNameColumn, self).renderHeadCell())
 
     def renderCell(self, item, name=None):
         depth = -3
@@ -392,15 +389,15 @@
                '        <i class="fa fa-fw {switch}"></i>' \
                '    </span>&nbsp;&nbsp;<span class="title">{title}</span>' \
                '</div>'.format(
-                padding='<span class="tree-node-padding"></span>' * depth,
-                hint=self.request.localizer.translate(_("Click to show/hide inner folders")),
-                switch='fa-{state}-square-o switch'.format(
-                    state=self.table.rows_state or ('minus' if item in lineage(self.context) else 'plus'))
-                if ISiteContainer.providedBy(item) else '',
-                title=name or super(SiteContainerTreeNameColumn, self).renderCell(item))
+            padding='<span class="tree-node-padding"></span>' * depth,
+            hint=self.request.localizer.translate(_("Click to show/hide inner folders")),
+            switch='fa-{state}-square-o switch'.format(
+                state=self.table.rows_state or ('minus' if item in lineage(self.context) else 'plus'))
+            if ISiteContainer.providedBy(item) else '',
+            title=name or super(SiteContainerTreeNameColumn, self).renderCell(item))
 
 
-@adapter_config(name='content-type', context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
+@adapter_config(name='content-type', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
 class SiteContainerContentTypeColumn(I18nColumn, GetAttrColumn):
     """Site container content type column"""
 
@@ -412,7 +409,7 @@
         return self.request.localizer.translate(obj.content_name)
 
 
-@adapter_config(name='sequence', context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
+@adapter_config(name='sequence', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
 class SiteContainerTreeSequenceColumn(SharedToolDashboardSequenceColumn):
     """Site container tree OID column"""
 
@@ -426,7 +423,7 @@
         return result
 
 
-@adapter_config(name='status', context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
+@adapter_config(name='status', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
 class SiteContainerTreeStatusColumn(SharedToolDashboardStatusColumn):
     """Site container tree status column"""
 
@@ -440,7 +437,7 @@
         return result
 
 
-@adapter_config(name='status_date', context=(ISiteContainer, IPyAMSLayer, IDashboardTable), provides=IColumn)
+@adapter_config(name='status_date', context=(IBaseSiteItem, IPyAMSLayer, IDashboardTable), provides=IColumn)
 class SiteContainerTreeStatusDateColumn(SharedToolDashboardStatusDateColumn):
     """Site container tree status date column"""
 
@@ -454,7 +451,7 @@
         return result
 
 
-@adapter_config(name='version', context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
+@adapter_config(name='version', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
 class SiteContainerTreeVersionColumn(SharedToolDashboardVersionColumn):
     """Site container tree version column"""
 
@@ -468,7 +465,7 @@
         return result
 
 
-@adapter_config(name='status_principal', context=(ISiteContainer, IPyAMSLayer, IDashboardTable), provides=IColumn)
+@adapter_config(name='status_principal', context=(IBaseSiteItem, IPyAMSLayer, IDashboardTable), provides=IColumn)
 class SiteContainerTreeStatusPrincipalColumn(SharedToolDashboardStatusPrincipalColumn):
     """Site container tree status principal column"""
 
@@ -482,7 +479,7 @@
         return result
 
 
-@adapter_config(name='owner', context=(ISiteContainer, IPyAMSLayer, IDashboardTable), provides=IColumn)
+@adapter_config(name='owner', context=(IBaseSiteItem, IPyAMSLayer, IDashboardTable), provides=IColumn)
 class SiteContainerTreeOwnerColumn(SharedToolDashboardOwnerColumn):
     """Site container tree owner column"""
 
@@ -496,7 +493,7 @@
         return result
 
 
-@adapter_config(name='trash', context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
+@adapter_config(name='trash', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
 class SiteContainerTreeTrashColumn(TrashColumn):
     """Site container tree trash column"""
 
@@ -516,7 +513,7 @@
     return delete_container_element(request, ignore_permission=True)
 
 
-@adapter_config(context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IValues)
+@adapter_config(context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IValues)
 class SiteContainerTreeValuesAdapter(ContextRequestViewAdapter):
     """Site container tree values adapter"""
 
@@ -540,7 +537,7 @@
         return values
 
 
-@pagelet_config(name='site-tree.html', context=ISiteContainer, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='site-tree.html', context=IBaseSiteItem, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
 @implementer(IInnerPage)
 class SiteContainerTreeView(AdminView, ContainerView):
     """Site Container tree view"""
@@ -552,14 +549,14 @@
         self.table = SiteContainerTreeTable(context, request, can_sort=ISiteManager.providedBy(context))
 
 
-@adapter_config(context=(ISiteContainer, IAdminLayer, ISiteTreeTable), provides=IPageHeader)
+@adapter_config(context=(IBaseSiteItem, IAdminLayer, ISiteTreeTable), provides=IPageHeader)
 class SiteContainerViewHeaderAdapter(DefaultPageHeaderAdapter):
     """Site container tree view header adapter"""
 
     icon_class = 'fa fa-fw fa-sitemap'
 
 
-@view_config(name='get-tree.json', context=ISiteContainer, request_type=IPyAMSLayer,
+@view_config(name='get-tree.json', context=IBaseSiteItem, request_type=IPyAMSLayer,
              permission=VIEW_SYSTEM_PERMISSION, renderer='json', xhr=True)
 def get_tree(request):
     """Get whole tree"""
@@ -596,7 +593,7 @@
     return result
 
 
-@adapter_config(context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=ITableElementName)
+@adapter_config(context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=ITableElementName)
 class SiteContainerTableElementName(ContextRequestViewAdapter):
     """Site container tree table element name"""
 
@@ -605,7 +602,7 @@
         return II18n(self.context).query_attribute('title', request=self.request)
 
 
-@adapter_config(context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=ITableElementEditor)
+@adapter_config(context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=ITableElementEditor)
 class SiteContainerTableElementEditor(DefaultElementEditorAdapter):
     """Site container tree table element editor"""