src/pyams_ldap/zmi/plugin.py
changeset 38 0cde6357775d
parent 34 2bab2a8e8853
child 39 148e16dfb86c
equal deleted inserted replaced
37:bf589bc39592 38:0cde6357775d
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
    12 
    12 
    13 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    14 
    14 
    15 
       
    16 # import standard library
       
    17 import base64
    15 import base64
       
    16 
    18 import ldap3
    17 import ldap3
    19 
    18 from pyramid.view import view_config
    20 # import interfaces
    19 from z3c.form import field
       
    20 from z3c.form.interfaces import DISPLAY_MODE
       
    21 from z3c.table.column import GetAttrColumn
       
    22 from z3c.table.interfaces import IColumn
       
    23 from zope.component.interfaces import ISite
       
    24 from zope.interface import Interface, implementer
       
    25 
       
    26 from pyams_form.form import AJAXAddForm, AJAXEditForm
    21 from pyams_form.interfaces.form import IInnerTabForm, IWidgetsSuffixViewletsManager
    27 from pyams_form.interfaces.form import IInnerTabForm, IWidgetsSuffixViewletsManager
       
    28 from pyams_form.search import SearchResultsView, SearchView
    22 from pyams_ldap.interfaces import ILDAPPlugin
    29 from pyams_ldap.interfaces import ILDAPPlugin
    23 from pyams_security.interfaces import ISecurityManager, IPlugin
    30 from pyams_ldap.plugin import LDAPPlugin
       
    31 from pyams_ldap.query import LDAPQuery
       
    32 from pyams_pagelet.pagelet import pagelet_config
       
    33 from pyams_security.interfaces import IPlugin, ISecurityManager
       
    34 from pyams_security.zmi.utility import SecurityManagerPluginsTable
    24 from pyams_skin.interfaces import IPageHeader
    35 from pyams_skin.interfaces import IPageHeader
    25 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
    36 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
    26 from pyams_skin.layer import IPyAMSLayer
    37 from pyams_skin.layer import IPyAMSLayer
    27 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION, MANAGE_SECURITY_PERMISSION
       
    28 from pyams_zmi.interfaces import IAdminView
       
    29 from pyams_zmi.layer import IAdminLayer
       
    30 from z3c.form.interfaces import DISPLAY_MODE
       
    31 from z3c.table.interfaces import IColumn
       
    32 from zope.component.interfaces import ISite
       
    33 
       
    34 # import packages
       
    35 from pyams_form.form import AJAXAddForm, AJAXEditForm
       
    36 from pyams_form.search import SearchView, SearchResultsView
       
    37 from pyams_ldap.plugin import LDAPPlugin
       
    38 from pyams_ldap.query import LDAPQuery
       
    39 from pyams_pagelet.pagelet import pagelet_config
       
    40 from pyams_security.zmi.utility import SecurityManagerPluginsTable
       
    41 from pyams_skin.page import DefaultPageHeaderAdapter
    38 from pyams_skin.page import DefaultPageHeaderAdapter
    42 from pyams_skin.skin import apply_skin
    39 from pyams_skin.skin import apply_skin
    43 from pyams_skin.table import I18nColumn
    40 from pyams_skin.table import I18nColumn
    44 from pyams_skin.viewlet.toolbar import ToolbarMenuItem
    41 from pyams_skin.viewlet.toolbar import ToolbarMenuItem
    45 from pyams_template.template import template_config
    42 from pyams_template.template import template_config
    46 from pyams_utils.adapter import adapter_config
    43 from pyams_utils.adapter import adapter_config
       
    44 from pyams_utils.interfaces import MANAGE_SECURITY_PERMISSION, VIEW_SYSTEM_PERMISSION
    47 from pyams_utils.registry import query_utility
    45 from pyams_utils.registry import query_utility
    48 from pyams_utils.url import absolute_url
    46 from pyams_utils.url import absolute_url
    49 from pyams_viewlet.viewlet import viewlet_config, Viewlet
    47 from pyams_viewlet.viewlet import Viewlet, viewlet_config
    50 from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm, AdminDialogDisplayForm, InnerAdminAddForm, \
    48 from pyams_zmi.form import AdminDialogAddForm, AdminDialogDisplayForm, AdminDialogEditForm, InnerAdminAddForm, \
    51     InnerAdminEditForm
    49     InnerAdminEditForm
       
    50 from pyams_zmi.interfaces import IAdminView
       
    51 from pyams_zmi.layer import IAdminLayer
    52 from pyams_zmi.view import AdminView
    52 from pyams_zmi.view import AdminView
    53 from pyramid.view import view_config
       
    54 from z3c.form import field
       
    55 from z3c.table.column import GetAttrColumn
       
    56 from zope.interface import implementer, Interface
       
    57 
    53 
    58 from pyams_ldap import _
    54 from pyams_ldap import _
    59 
    55 
    60 
    56 
    61 #
    57 #
   123 
   119 
   124     prefix = 'ldap_connection_form.'
   120     prefix = 'ldap_connection_form.'
   125 
   121 
   126     tab_label = _("Connection")
   122     tab_label = _("Connection")
   127     legend = None
   123     legend = None
   128     fields = field.Fields(ILDAPPlugin).select('server_uri', 'bind_dn', 'bind_password', 'use_tls',
   124     fields = field.Fields(ILDAPPlugin).select('server_uri', 'use_tls', 'bind_dn', 'bind_password')
   129                                               'use_pool', 'pool_size', 'pool_lifetime')
       
   130     weight = 1
   125     weight = 1
   131 
   126 
   132 
   127 
   133 @adapter_config(name='users', context=(ISite, IAdminLayer, ILDAPForm), provides=IInnerTabForm)
   128 @adapter_config(name='users', context=(ISite, IAdminLayer, ILDAPForm), provides=IInnerTabForm)
   134 class LDAPPluginUsersAddForm(InnerAdminAddForm):
   129 class LDAPPluginUsersAddForm(InnerAdminAddForm):
   235 
   230 
   236     prefix = 'ldap_connection_form.'
   231     prefix = 'ldap_connection_form.'
   237 
   232 
   238     tab_label = _("Connection")
   233     tab_label = _("Connection")
   239     legend = None
   234     legend = None
   240     fields = field.Fields(ILDAPPlugin).select('server_uri', 'bind_dn', 'bind_password', 'use_tls',
   235     fields = field.Fields(ILDAPPlugin).select('server_uri', 'use_tls', 'bind_dn', 'bind_password')
   241                                               'use_pool', 'pool_size', 'pool_lifetime')
       
   242     edit_permission = MANAGE_SECURITY_PERMISSION
   236     edit_permission = MANAGE_SECURITY_PERMISSION
   243 
   237 
   244     weight = 1
   238     weight = 1
   245 
   239 
   246 
   240 
   420         if not result or len(result) > 1:
   414         if not result or len(result) > 1:
   421             return ()
   415             return ()
   422         dn, attributes = result[0]
   416         dn, attributes = result[0]
   423         if 'jpegPhoto' in attributes:
   417         if 'jpegPhoto' in attributes:
   424             attributes['jpegPhoto'] = ['<img src="data:image/jpeg;base64,{0}" />'.
   418             attributes['jpegPhoto'] = ['<img src="data:image/jpeg;base64,{0}" />'.
   425                                        format(base64.encodebytes(attributes['jpegPhoto'][0]).decode()), ]
   419                                            format(base64.encodebytes(attributes['jpegPhoto'][0]).decode()), ]
   426         result = sorted(attributes.items(), key=lambda x: x[0])
   420         result = sorted(attributes.items(), key=lambda x: x[0])
   427         return result
   421         return result