diff -r 34e6d07ea2e9 -r 29b1aaf9e080 src/pyams_content/shared/site/zmi/container.py --- 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 = ''.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 ''.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 @@ ' ' \ '   {title}' \ ''.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 @@ ' ' \ '   {title}' \ ''.format( - padding='' * 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='' * 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"""