58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
""" PcfAnnuaire Class """
|
|
|
|
import os
|
|
import time
|
|
import calendar
|
|
import ldap
|
|
|
|
from interfaces import IPcfAnnuaire
|
|
from zope.interface import implements
|
|
from Products.Archetypes.public import *
|
|
from Products.CMFCore.utils import getToolByName
|
|
from Acquisition import aq_base
|
|
|
|
schema = BaseSchema
|
|
|
|
|
|
class PcfAnnuaireEntry:
|
|
def __init__(self, ldap_entry):
|
|
self.cn = ldap_entry.get('cn')[0]
|
|
|
|
class PcfAnnuaire(BaseContent):
|
|
|
|
implements(IPcfAnnuaire)
|
|
|
|
schema = schema
|
|
_at_rename_after_creation = True
|
|
|
|
def get_ldap_conn(self):
|
|
portal = getToolByName(self, 'portal_url').getPortalObject()
|
|
ldapdir = aq_base(portal.acl_users.ldap)
|
|
luf = ldapdir._getLDAPUserFolder()
|
|
server = luf._delegate.getServers()[0]
|
|
ldap_conn = ldap.initialize('%(protocol)s://%(host)s:%(port)s' % server)
|
|
ldap_conn.simple_bind_s(luf._binduid, luf._bindpwd)
|
|
return ldap_conn
|
|
|
|
def get_users_base(self):
|
|
portal = getToolByName(self, 'portal_url').getPortalObject()
|
|
ldapdir = aq_base(portal.acl_users.ldap)
|
|
luf = ldapdir._getLDAPUserFolder()
|
|
users_base = luf.users_base
|
|
return users_base
|
|
|
|
def getContent(self):
|
|
ldap_conn = self.get_ldap_conn()
|
|
result = ldap_conn.search_s(self.get_users_base(),
|
|
ldap.SCOPE_SUBTREE, 'objectClass=person')
|
|
return [PcfAnnuaireEntry(x[1]) for x in result]
|
|
|
|
def plop(self):
|
|
portal = getToolByName(self, 'portal_url').getPortalObject()
|
|
ldapdir = aq_base(portal.acl_users.ldap)
|
|
luf = ldapdir._getLDAPUserFolder()
|
|
users_base = luf.users_base
|
|
return repr((luf._delegate.getServers(), users_base))
|
|
|
|
registerType(PcfAnnuaire)
|