src/pyams_security/zmi/plugin/admin.py
changeset 8 67acb59f115e
parent 0 f04e1d0a0723
child 17 fb914030a05b
equal deleted inserted replaced
7:7920b5e679ec 8:67acb59f115e
    17 # import interfaces
    17 # import interfaces
    18 from pyams_security.interfaces import IAdminAuthenticationPlugin, ISecurityManager
    18 from pyams_security.interfaces import IAdminAuthenticationPlugin, ISecurityManager
    19 from pyams_security.zmi.interfaces import ISecurityManagerToolbarAddingMenu
    19 from pyams_security.zmi.interfaces import ISecurityManagerToolbarAddingMenu
    20 from pyams_skin.interfaces import IContentHelp
    20 from pyams_skin.interfaces import IContentHelp
    21 from pyams_skin.layer import IPyAMSLayer
    21 from pyams_skin.layer import IPyAMSLayer
    22 from z3c.form.interfaces import DISPLAY_MODE
    22 from z3c.form.interfaces import DISPLAY_MODE, IDataExtractedEvent
    23 from zope.component.interfaces import ISite
    23 from zope.component.interfaces import ISite
    24 
    24 
    25 # import packages
    25 # import packages
    26 from pyams_form.form import AJAXAddForm, AJAXEditForm
    26 from pyams_form.form import AJAXAddForm, AJAXEditForm
    27 from pyams_pagelet.pagelet import pagelet_config
    27 from pyams_pagelet.pagelet import pagelet_config
    32 from pyams_utils.adapter import adapter_config
    32 from pyams_utils.adapter import adapter_config
    33 from pyams_utils.registry import query_utility
    33 from pyams_utils.registry import query_utility
    34 from pyams_viewlet.viewlet import viewlet_config
    34 from pyams_viewlet.viewlet import viewlet_config
    35 from pyams_zmi.form import AdminDialogEditForm, AdminDialogAddForm
    35 from pyams_zmi.form import AdminDialogEditForm, AdminDialogAddForm
    36 from pyams_zmi.layer import IAdminLayer
    36 from pyams_zmi.layer import IAdminLayer
       
    37 from pyramid.events import subscriber
    37 from pyramid.url import resource_url
    38 from pyramid.url import resource_url
    38 from pyramid.view import view_config
    39 from pyramid.view import view_config
    39 from z3c.form import field
    40 from z3c.form import field
       
    41 from zope.interface import Invalid
    40 
    42 
    41 from pyams_security import _
    43 from pyams_security import _
    42 
    44 
    43 
    45 
    44 @viewlet_config(name='add-admin-authentication.menu', context=ISite, layer=IAdminLayer,
    46 @viewlet_config(name='add-admin-authentication.menu', context=ISite, layer=IAdminLayer,
    73         context = query_utility(ISecurityManager)
    75         context = query_utility(ISecurityManager)
    74         context[plugin.prefix] = plugin
    76         context[plugin.prefix] = plugin
    75 
    77 
    76     def nextURL(self):
    78     def nextURL(self):
    77         return resource_url(self.context, self.request, 'security-manager.html')
    79         return resource_url(self.context, self.request, 'security-manager.html')
       
    80 
       
    81 
       
    82 @subscriber(IDataExtractedEvent, form_selector=AdminAuthenticationAddForm)
       
    83 def handle_new_admin_folder_data_extraction(event):
       
    84     """Handle new admin authentication plug-in form data extraction"""
       
    85     manager = query_utility(ISecurityManager)
       
    86     prefix = event.data.get('prefix')
       
    87     if prefix in manager:
       
    88         event.form.widgets.errors += (Invalid(_("Specified prefix is already used!")),)
    78 
    89 
    79 
    90 
    80 @view_config(name='add_admin_authentication.json', context=ISite, request_type=IPyAMSLayer,
    91 @view_config(name='add_admin_authentication.json', context=ISite, request_type=IPyAMSLayer,
    81              permission='system.manage', renderer='json', xhr=True)
    92              permission='system.manage', renderer='json', xhr=True)
    82 class AdminAuthenticationAJAXAddForm(AJAXAddForm, AdminAuthenticationAddForm):
    93 class AdminAuthenticationAJAXAddForm(AJAXAddForm, AdminAuthenticationAddForm):