src/pyams_content/shared/site/zmi/manager.py
changeset 1394 ed31bfceddda
parent 1070 ea0c7ac589c4
child 1420 f2cc8872bcc1
equal deleted inserted replaced
1393:9479901b53a5 1394:ed31bfceddda
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
    12 
    12 
    13 __docformat__ = 'restructuredtext'
       
    14 
       
    15 from pyramid.events import subscriber
    13 from pyramid.events import subscriber
    16 from pyramid.path import DottedNameResolver
    14 from pyramid.path import DottedNameResolver
    17 from z3c.form import field
    15 from z3c.form import field
    18 from z3c.form.interfaces import IDataExtractedEvent
    16 from z3c.form.interfaces import IDataExtractedEvent
    19 from zope.interface import Interface, Invalid
    17 from zope.interface import Interface, Invalid
    20 
    18 
    21 from pyams_content import _
       
    22 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_TOOL_PERMISSION
    19 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_TOOL_PERMISSION
    23 from pyams_content.root.interfaces import ISiteRoot
    20 from pyams_content.root.interfaces import ISiteRoot
    24 from pyams_content.shared.common import IBaseSharedTool
    21 from pyams_content.shared.common import IBaseSharedTool, IDashboardTypeColumnValue
       
    22 from pyams_content.shared.common.interfaces.zmi import IDashboardTable
    25 from pyams_content.shared.common.zmi.manager import SharedToolPropertiesEditForm
    23 from pyams_content.shared.common.zmi.manager import SharedToolPropertiesEditForm
    26 from pyams_content.shared.site import WfSiteTopic
    24 from pyams_content.shared.site import WfSiteTopic
    27 from pyams_content.shared.site.interfaces import ISiteManager, ISiteManagerFactory
    25 from pyams_content.shared.site.interfaces import ISiteManager, ISiteManagerFactory
    28 from pyams_content.shared.site.manager import SiteManager
    26 from pyams_content.shared.site.manager import SiteManager
    29 from pyams_content.zmi.interfaces import ISiteTreeTable, IUserAddingsMenuLabel
    27 from pyams_content.zmi.interfaces import ISiteTreeTable, IUserAddingsMenuLabel
    42 from pyams_utils.url import absolute_url
    40 from pyams_utils.url import absolute_url
    43 from pyams_viewlet.viewlet import viewlet_config
    41 from pyams_viewlet.viewlet import viewlet_config
    44 from pyams_zmi.form import AdminDialogAddForm
    42 from pyams_zmi.form import AdminDialogAddForm
    45 from pyams_zmi.interfaces.menu import ISiteManagementMenu
    43 from pyams_zmi.interfaces.menu import ISiteManagementMenu
    46 from pyams_zmi.layer import IAdminLayer
    44 from pyams_zmi.layer import IAdminLayer
       
    45 
       
    46 
       
    47 __docformat__ = 'restructuredtext'
       
    48 
       
    49 from pyams_content import _
       
    50 
       
    51 
       
    52 @adapter_config(context=(ISiteManager, IPyAMSLayer, IDashboardTable),
       
    53                 provides=IDashboardTypeColumnValue)
       
    54 def site_manager_dashboard_type(context, request, view):
       
    55     """Site manager dashboard type column adapter"""
       
    56     return request.localizer.translate(context.content_name)
    47 
    57 
    48 
    58 
    49 @adapter_config(context=(ISiteManager, ISiteManagementMenu), provides=IMenuHeader)
    59 @adapter_config(context=(ISiteManager, ISiteManagementMenu), provides=IMenuHeader)
    50 class SiteManagerSiteManagementMenuHeader(ContextRequestAdapter):
    60 class SiteManagerSiteManagementMenuHeader(ContextRequestAdapter):
    51     """Site manager site management menu header adapter"""
    61     """Site manager site management menu header adapter"""
    79 
    89 
    80     view_name = 'admin#site-tree.html'
    90     view_name = 'admin#site-tree.html'
    81     modal_target = False
    91     modal_target = False
    82 
    92 
    83 
    93 
    84 @adapter_config(context=(ISiteManager, IAdminLayer, ISiteTreeTable), provides=ITableElementEditor)
    94 @adapter_config(context=(ISiteManager, IAdminLayer, ISiteTreeTable),
       
    95                 provides=ITableElementEditor)
    85 class SiteManagerTableElementEditor(DefaultElementEditorAdapter):
    96 class SiteManagerTableElementEditor(DefaultElementEditorAdapter):
    86     """Site tree table element editor"""
    97     """Site tree table element editor"""
    87 
    98 
    88     view_name = 'admin#site-tree.html'
    99     view_name = 'admin#site-tree.html'
    89     modal_target = False
   100     modal_target = False
    99             content=self.request.localizer.translate(WfSiteTopic.content_name),
   110             content=self.request.localizer.translate(WfSiteTopic.content_name),
   100             site=II18n(self.context).query_attribute('title', request=self.request))
   111             site=II18n(self.context).query_attribute('title', request=self.request))
   101 
   112 
   102 
   113 
   103 @viewlet_config(name='add-site-manager.menu', context=ISiteRoot, layer=IAdminLayer,
   114 @viewlet_config(name='add-site-manager.menu', context=ISiteRoot, layer=IAdminLayer,
   104                 view=ISiteTreeTable, manager=IToolbarAddingMenu, permission=MANAGE_SITE_ROOT_PERMISSION)
   115                 view=ISiteTreeTable, manager=IToolbarAddingMenu,
       
   116                 permission=MANAGE_SITE_ROOT_PERMISSION)
   105 class SiteManagerAddMenu(ToolbarMenuItem):
   117 class SiteManagerAddMenu(ToolbarMenuItem):
   106     """Site manager add menu"""
   118     """Site manager add menu"""
   107 
   119 
   108     label = _("Add site manager")
   120     label = _("Add site manager")
   109     label_css_class = 'fa fa-fw fa-sitemap'
   121     label_css_class = 'fa fa-fw fa-sitemap'
   140 
   152 
   141     def nextURL(self):
   153     def nextURL(self):
   142         return absolute_url(self.context, self.request, 'site-tree.html')
   154         return absolute_url(self.context, self.request, 'site-tree.html')
   143 
   155 
   144 
   156 
   145 @pagelet_config(name='properties.html', context=ISiteManager, layer=IPyAMSLayer, permission=MANAGE_TOOL_PERMISSION)
   157 @pagelet_config(name='properties.html', context=ISiteManager, layer=IPyAMSLayer,
       
   158                 permission=MANAGE_TOOL_PERMISSION)
   146 @ajax_config(name='properties.json', context=ISiteManager, layer=IPyAMSLayer)
   159 @ajax_config(name='properties.json', context=ISiteManager, layer=IPyAMSLayer)
   147 class SiteManagerPropertiesEditForm(SharedToolPropertiesEditForm):
   160 class SiteManagerPropertiesEditForm(SharedToolPropertiesEditForm):
   148     """Site manager properties edit form"""
   161     """Site manager properties edit form"""
   149 
   162 
   150     legend = _("Site folder properties")
   163     legend = _("Site folder properties")
   158     """Handle new site manager data extraction"""
   171     """Handle new site manager data extraction"""
   159     container = event.form.context
   172     container = event.form.context
   160     negotiator = query_utility(INegotiator)
   173     negotiator = query_utility(INegotiator)
   161     short_name = event.data.get('short_name', {}).get(negotiator.server_language)
   174     short_name = event.data.get('short_name', {}).get(negotiator.server_language)
   162     if not short_name:
   175     if not short_name:
   163         event.form.widgets.errors += (Invalid(_("You must provide a short name for default server language!")),)
   176         event.form.widgets.errors += (Invalid(_("You must provide a short name for default "
       
   177                                                 "server language!")),)
   164         return
   178         return
   165     name = translate_string(short_name, force_lower=True, spaces='-')
   179     name = translate_string(short_name, force_lower=True, spaces='-')
   166     if name in container:
   180     if name in container:
   167         event.form.widgets.errors += (Invalid(_("Specified site manager name is already used!")),)
   181         event.form.widgets.errors += (Invalid(_("Specified site manager name is already used!")),)
   168         return
   182         return
   169     site = query_utility(ISiteManager, name=short_name)
   183     site = query_utility(ISiteManager, name=short_name)
   170     if site is not None:
   184     if site is not None:
   171         event.form.widgets.errors += (Invalid(_("A site manager is already registered with this name!!")),)
   185         event.form.widgets.errors += (Invalid(_("A site manager is already registered with "
       
   186                                                 "this name!!")),)