src/pyams_security/zmi/plugin/group.py
changeset 42 07229ac2497b
parent 17 fb914030a05b
child 54 59683c264d94
equal deleted inserted replaced
41:905e30f5467b 42:07229ac2497b
    16 # import standard library
    16 # import standard library
    17 
    17 
    18 # import interfaces
    18 # import interfaces
    19 from pyams_security.interfaces import IGroupsFolderPlugin, ISecurityManager, ILocalGroup
    19 from pyams_security.interfaces import IGroupsFolderPlugin, ISecurityManager, ILocalGroup
    20 from pyams_skin.interfaces import IPageHeader, IInnerPage
    20 from pyams_skin.interfaces import IPageHeader, IInnerPage
    21 from pyams_skin.interfaces.viewlet import IToolbarViewletManager, IToolbarAddingMenu
    21 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager
    22 from pyams_skin.layer import IPyAMSLayer
    22 from pyams_skin.layer import IPyAMSLayer
    23 from pyams_zmi.layer import IAdminLayer
    23 from pyams_zmi.layer import IAdminLayer
    24 from z3c.form.interfaces import DISPLAY_MODE, IDataExtractedEvent
    24 from z3c.form.interfaces import DISPLAY_MODE, IDataExtractedEvent
    25 from z3c.table.interfaces import IColumn, IValues
    25 from z3c.table.interfaces import IColumn, IValues
    26 from zope.component.interfaces import ISite
    26 from zope.component.interfaces import ISite
    29 from pyams_form.form import AJAXAddForm, AJAXEditForm
    29 from pyams_form.form import AJAXAddForm, AJAXEditForm
    30 from pyams_pagelet.pagelet import pagelet_config
    30 from pyams_pagelet.pagelet import pagelet_config
    31 from pyams_security.plugin.group import GroupsFolder, Group
    31 from pyams_security.plugin.group import GroupsFolder, Group
    32 from pyams_security.zmi.utility import SecurityManagerPluginsTable
    32 from pyams_security.zmi.utility import SecurityManagerPluginsTable
    33 from pyams_skin.container import ContainerView
    33 from pyams_skin.container import ContainerView
       
    34 from pyams_skin.page import DefaultPageHeaderAdapter
    34 from pyams_skin.table import BaseTable, I18nColumn
    35 from pyams_skin.table import BaseTable, I18nColumn
    35 from pyams_skin.viewlet.toolbar import ToolbarMenuItem, ToolbarAction
    36 from pyams_skin.viewlet.toolbar import ToolbarMenuItem, ToolbarAction
    36 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
    37 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
    37 from pyams_utils.registry import query_utility
    38 from pyams_utils.registry import query_utility
    38 from pyams_utils.url import absolute_url
    39 from pyams_utils.url import absolute_url
   136 
   137 
   137 class GroupsFolderContentsTable(BaseTable):
   138 class GroupsFolderContentsTable(BaseTable):
   138     """Groups folder contents table"""
   139     """Groups folder contents table"""
   139 
   140 
   140     id = 'groups_folder_table'
   141     id = 'groups_folder_table'
   141     title = _("Local groups")
   142     title = _("Local groups list")
   142     cssClasses = {'table': 'table table-bordered table-striped table-hover table-tight datatable'}
   143     cssClasses = {'table': 'table table-bordered table-striped table-hover table-tight datatable'}
   143 
   144 
   144 
   145 
   145 @adapter_config(context=(IGroupsFolderPlugin, IAdminLayer, GroupsFolderContentsTable), provides=IValues)
   146 @adapter_config(context=(IGroupsFolderPlugin, IAdminLayer, GroupsFolderContentsTable), provides=IValues)
   146 class GroupsFolderContentsValuesAdapter(ContextRequestViewAdapter):
   147 class GroupsFolderContentsValuesAdapter(ContextRequestViewAdapter):
   184     def __init__(self, context, request):
   185     def __init__(self, context, request):
   185         super(GroupsFolderSearchView, self).__init__(context, request)
   186         super(GroupsFolderSearchView, self).__init__(context, request)
   186 
   187 
   187 
   188 
   188 @adapter_config(context=(IGroupsFolderPlugin, IAdminLayer, GroupsFolderSearchView), provides=IPageHeader)
   189 @adapter_config(context=(IGroupsFolderPlugin, IAdminLayer, GroupsFolderSearchView), provides=IPageHeader)
   189 class GroupsFolderSearchViewHeaderAdapter(ContextRequestViewAdapter):
   190 class GroupsFolderSearchViewHeaderAdapter(DefaultPageHeaderAdapter):
   190     """Groups folder search view header adapter"""
   191     """Groups folder search view header adapter"""
   191 
   192 
   192     back_url = '#security-manager.html'
   193     back_url = '#security-manager.html'
   193     icon_class = 'fa fa-fw fa-users'
   194     icon_class = 'fa fa-fw fa-users'
   194 
   195     title = _("Security manager")
   195     @property
   196 
   196     def title(self):
   197     @property
       
   198     def subtitle(self):
   197         return self.context.title
   199         return self.context.title
   198 
       
   199     subtitle = _("Groups list")
       
   200 
   200 
   201 
   201 
   202 #
   202 #
   203 # Groups views
   203 # Groups views
   204 #
   204 #
   205 
   205 
   206 @viewlet_config(name='groups-folder.toolbar.adding', context=IGroupsFolderPlugin,
   206 @viewlet_config(name='groups-folder.toolbar.adding', context=IGroupsFolderPlugin,
   207                 view=GroupsFolderContentsTable, layer=IAdminLayer,
   207                 view=GroupsFolderContentsTable, layer=IAdminLayer,
   208                 manager=IToolbarViewletManager, permission='system.manage')
   208                 manager=IWidgetTitleViewletManager, permission='system.manage')
   209 class LocalGroupAddAction(ToolbarAction):
   209 class LocalGroupAddAction(ToolbarAction):
   210     """Groups folder adding action"""
   210     """Groups folder adding action"""
   211 
   211 
   212     label = _("Add group")
   212     label = _("Add group")
   213     url = 'add-group.html'
   213     url = 'add-group.html'