You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

44 lines
1.6 KiB

# -*- coding: utf-8 -*-
# © Daniel Reis (https://launchpad.com/~dreis-pt)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/gpl.html).
from odoo import models, fields
import logging
_log = logging.getLogger(__name__)
class CompanyLDAP(models.Model):
_inherit = 'res.company.ldap'
name_attribute = fields.Char(
'Name Attribute', _defaults='cn',
help="By default 'cn' is used. "
"For ActiveDirectory you might use 'displayName' instead.")
mail_attribute = fields.Char(
'E-mail attribute', _defaults='mail',
help="LDAP attribute to use to retrieve em-mail address.")
def get_ldap_dicts(self):
"""
Copy of auth_ldap's funtion, changing only the SQL, so that it returns
all fields in the table.
"""
return self.sudo().search([('ldap_server', '!=', False)],
order='sequence').read([])
def map_ldap_attributes(self, conf, login, ldap_entry):
values = super(CompanyLDAP, self).map_ldap_attributes(conf, login,
ldap_entry)
mapping = [
('name', 'name_attribute'),
('email', 'mail_attribute'),
]
for value_key, conf_name in mapping:
try:
if conf[conf_name]:
values[value_key] = ldap_entry[1][conf[conf_name]][0]
except KeyError:
_log.warning('No LDAP attribute "%s" found for login "%s"' % (
conf.get(conf_name), values.get('login')))
return values