diff --git a/PcfAnnuaire.py b/PcfAnnuaire.py index a2f87ce..99b802d 100644 --- a/PcfAnnuaire.py +++ b/PcfAnnuaire.py @@ -16,7 +16,28 @@ schema = BaseSchema class PcfAnnuaireEntry: def __init__(self, ldap_entry): - self.cn = ldap_entry.get('cn')[0] + def get_attr(x): + try: + return ldap_entry.get(x)[0] + except (IndexError, TypeError): + return None + self.cn = get_attr('cn') + self.sn = get_attr('sn') + self.telephoneNumbers = ldap_entry.get('telephoneNumber') + if self.telephoneNumbers: + self.shortTelephoneNumber = self.telephoneNumbers[0][-3:] + else: + self.shortTelephoneNumber = None + self.givenName = get_attr('givenName') + self.mobile = get_attr('mobile') + self.building = get_attr('location') + self.floor = get_attr('extensionAttribute1') + self.office = get_attr('physicalDeliveryOfficeName') + self.fax = get_attr('facsimileTelephoneNumber') + self.email = get_attr('mail') + self.division = get_attr('division') + self.title = get_attr('title') + self.company = get_attr('company') class PcfAnnuaire(BaseContent): @@ -41,17 +62,14 @@ class PcfAnnuaire(BaseContent): users_base = luf.users_base return users_base - def getContent(self): + def getEntries(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)) + def getEntriesWithPhone(self): + def get_sn(x): return getattr(x, 'sn') + return sorted([x for x in self.getEntries() if x.telephoneNumbers], key=get_sn) registerType(PcfAnnuaire) diff --git a/skins/pcfannuaire/pcfannuaire_view.pt b/skins/pcfannuaire/pcfannuaire_view.pt index d210836..75f0d7c 100644 --- a/skins/pcfannuaire/pcfannuaire_view.pt +++ b/skins/pcfannuaire/pcfannuaire_view.pt @@ -35,13 +35,18 @@ Description -
-
- - + + + + + +
+ givenName + sn + + 000 +
mobile
+