src/pyams_content/shared/blog/zmi/manager.py
changeset 1394 ed31bfceddda
parent 1070 ea0c7ac589c4
child 1429 9b93fdd5ba30
--- a/src/pyams_content/shared/blog/zmi/manager.py	Wed Jul 01 14:10:50 2020 +0200
+++ b/src/pyams_content/shared/blog/zmi/manager.py	Wed Jul 01 18:05:38 2020 +0200
@@ -10,8 +10,6 @@
 # FOR A PARTICULAR PURPOSE.
 #
 
-__docformat__ = 'restructuredtext'
-
 from datetime import datetime
 
 from pyramid.events import subscriber
@@ -20,23 +18,26 @@
 from z3c.form.interfaces import IDataExtractedEvent
 from zope.interface import Invalid
 
-from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_SITE_PERMISSION, MANAGE_TOOL_PERMISSION
+from pyams_content.interfaces import MANAGE_SITE_PERMISSION, MANAGE_SITE_ROOT_PERMISSION, \
+    MANAGE_TOOL_PERMISSION
 from pyams_content.root.interfaces import ISiteRoot
 from pyams_content.shared.blog.interfaces import IBlogManager, IBlogManagerFactory
 from pyams_content.shared.blog.manager import BlogManager
-from pyams_content.shared.common import IBaseSharedTool
+from pyams_content.shared.common import IBaseSharedTool, IDashboardTypeColumnValue
+from pyams_content.shared.common.interfaces.zmi import IDashboardTable
 from pyams_content.shared.common.zmi.manager import SharedToolPropertiesEditForm
 from pyams_content.zmi.interfaces import ISiteTreeTable, IUserAddingsMenuLabel
 from pyams_form.form import AJAXAddForm, ajax_config
 from pyams_i18n.interfaces import II18n, INegotiator
 from pyams_pagelet.pagelet import pagelet_config
 from pyams_skin.interfaces.container import ITableElementEditor
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, ITableItemColumnActionsMenu, IMenuHeader
+from pyams_skin.interfaces.viewlet import IMenuHeader, ITableItemColumnActionsMenu, \
+    IToolbarAddingMenu
 from pyams_skin.layer import IPyAMSLayer
 from pyams_skin.table import DefaultElementEditorAdapter
 from pyams_skin.viewlet.menu import MenuItem
 from pyams_skin.viewlet.toolbar import ToolbarMenuItem
-from pyams_utils.adapter import adapter_config, ContextRequestAdapter
+from pyams_utils.adapter import ContextRequestAdapter, adapter_config
 from pyams_utils.registry import query_utility
 from pyams_utils.timezone import tztime
 from pyams_utils.unicode import translate_string
@@ -47,9 +48,19 @@
 from pyams_zmi.interfaces.menu import IPropertiesMenu, ISiteManagementMenu
 from pyams_zmi.layer import IAdminLayer
 
+
+__docformat__ = 'restructuredtext'
+
 from pyams_content import _
 
 
+@adapter_config(context=(IDashboardTable, IPyAMSLayer, IBlogManager),
+                provides=IDashboardTypeColumnValue)
+def blog_manager_dashboard_type(context, request):
+    """Blog manager dashboard type column adapter"""
+    return request.localizer.translate(context.content_name)
+
+
 @adapter_config(context=(IBlogManager, ISiteManagementMenu), provides=IMenuHeader)
 class BlogManagerSiteManagementMenuHeader(ContextRequestAdapter):
     """Blog manager site management menu header adapter"""
@@ -68,12 +79,14 @@
     @property
     def label(self):
         return '{content} ({blog})'.format(
-            content=self.request.localizer.translate(self.context.shared_content_factory.content_class.content_name),
+            content=self.request.localizer.translate(
+                self.context.shared_content_factory.content_class.content_name),
             blog=II18n(self.context).query_attribute('title', request=self.request))
 
 
 @viewlet_config(name='add-blog-manager.menu', context=ISiteRoot, layer=IAdminLayer,
-                view=ISiteTreeTable, manager=IToolbarAddingMenu, permission=MANAGE_SITE_ROOT_PERMISSION)
+                view=ISiteTreeTable, manager=IToolbarAddingMenu,
+                permission=MANAGE_SITE_ROOT_PERMISSION)
 class BlogManagerAddMenu(ToolbarMenuItem):
     """Blog manager add menu"""
 
@@ -121,18 +134,22 @@
     negotiator = query_utility(INegotiator)
     short_name = event.data['short_name'].get(negotiator.server_language)
     if not short_name:
-        event.form.widgets.errors += (Invalid(_("You must provide a short name for default server language!")),)
+        event.form.widgets.errors += (Invalid(_("You must provide a short name for default "
+                                                "server language!")),)
         return
     name = translate_string(short_name, force_lower=True, spaces='-')
     if name in container:
-        event.form.widgets.errors += (Invalid(_("Specified blog manager name is already used!")),)
+        event.form.widgets.errors += (Invalid(_("Specified blog manager name is already "
+                                                "used!")),)
         return
     blog = query_utility(IBlogManager, name=short_name)
     if blog is not None:
-        event.form.widgets.errors += (Invalid(_("A blog manager is already registered with this name!!")),)
+        event.form.widgets.errors += (Invalid(_("A blog manager is already registered with "
+                                                "this name!!")),)
 
 
-@adapter_config(context=(IBlogManager, IAdminLayer, ISiteTreeTable), provides=ITableElementEditor)
+@adapter_config(context=(IBlogManager, IAdminLayer, ISiteTreeTable),
+                provides=ITableElementEditor)
 class BlogManagerTableElementEditor(DefaultElementEditorAdapter):
     """Blog manager table element editor"""
 
@@ -140,14 +157,16 @@
     modal_target = False
 
 
-@pagelet_config(name='properties.html', context=IBlogManager, layer=IPyAMSLayer, permission=MANAGE_TOOL_PERMISSION)
+@pagelet_config(name='properties.html', context=IBlogManager, layer=IPyAMSLayer,
+                permission=MANAGE_TOOL_PERMISSION)
 @ajax_config(name='properties.json', context=IBlogManager, layer=IPyAMSLayer)
 class BlogManagerPropertiesEditForm(SharedToolPropertiesEditForm):
     """Site folder properties edit form"""
 
     legend = _("Blog properties")
 
-    fields = field.Fields(IBlogManager).select('title', 'short_name', 'description', 'notepad') + \
+    fields = field.Fields(IBlogManager).select('title', 'short_name', 'description',
+                                               'notepad') + \
         field.Fields(IBaseSharedTool).select('shared_content_workflow')
 
 
@@ -155,8 +174,9 @@
 # Blog manager publication views
 #
 
-@viewlet_config(name='workflow-publication.menu', context=IBlogManager, layer=IPyAMSLayer, view=ISiteTreeTable,
-                manager=ITableItemColumnActionsMenu, permission=MANAGE_SITE_PERMISSION, weight=210)
+@viewlet_config(name='workflow-publication.menu', context=IBlogManager, layer=IPyAMSLayer,
+                view=ISiteTreeTable, manager=ITableItemColumnActionsMenu,
+                permission=MANAGE_SITE_PERMISSION, weight=210)
 class BlogManagerTableItemWorkflowPublicationMenu(ToolbarMenuItem):
     """Blog manager tree item workflow publication menu"""
 
@@ -167,8 +187,8 @@
     stop_propagation = True
 
 
-@viewlet_config(name='workflow-publication.menu', context=IBlogManager, layer=IAdminLayer, manager=IPropertiesMenu,
-                permission=MANAGE_SITE_PERMISSION, weight=210)
+@viewlet_config(name='workflow-publication.menu', context=IBlogManager, layer=IAdminLayer,
+                manager=IPropertiesMenu, permission=MANAGE_SITE_PERMISSION, weight=210)
 class BlogManagerWorkflowPublicationMenu(MenuItem):
     """Blog manager workflow publication menu"""
 
@@ -188,7 +208,8 @@
 
     legend = _("Update publication dates")
 
-    fields = field.Fields(IWorkflowPublicationInfo).select('publication_effective_date', 'publication_expiration_date')
+    fields = field.Fields(IWorkflowPublicationInfo).select('publication_effective_date',
+                                                           'publication_expiration_date')
     edit_permission = MANAGE_SITE_PERMISSION
 
     def updateWidgets(self, prefix=None):
@@ -196,4 +217,5 @@
         if 'publication_effective_date' in self.widgets:
             pub_info = IWorkflowPublicationInfo(self.context)
             if pub_info.publication_effective_date is None:
-                self.widgets['publication_effective_date'].value = tztime(datetime.utcnow()).strftime('%d/%m/%y %H:%M')
+                self.widgets['publication_effective_date'].value = \
+                    tztime(datetime.utcnow()).strftime('%d/%m/%y %H:%M')