From f7ac5cf999187f13ebe116f685d8bf502f37af2c Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Fri, 26 Jul 2013 14:36:58 +0100 Subject: [PATCH] ADD Module to use email from LDAP records --- users_ldap_mail/__init__.py | 22 ++++++++++ users_ldap_mail/__openerp__.py | 40 ++++++++++++++++++ users_ldap_mail/users_ldap_model.py | 63 +++++++++++++++++++++++++++++ users_ldap_mail/users_ldap_view.xml | 18 +++++++++ 4 files changed, 143 insertions(+) create mode 100644 users_ldap_mail/__init__.py create mode 100644 users_ldap_mail/__openerp__.py create mode 100644 users_ldap_mail/users_ldap_model.py create mode 100644 users_ldap_mail/users_ldap_view.xml diff --git a/users_ldap_mail/__init__.py b/users_ldap_mail/__init__.py new file mode 100644 index 000000000..a6d454183 --- /dev/null +++ b/users_ldap_mail/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2013 Daniel Reis. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +import users_ldap_model diff --git a/users_ldap_mail/__openerp__.py b/users_ldap_mail/__openerp__.py new file mode 100644 index 000000000..97709502d --- /dev/null +++ b/users_ldap_mail/__openerp__.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2013 Daniel Reis. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ +"name" : "LDAP mapping for user name and e-mail", +"version" : "1.0", +"depends" : ["auth_ldap"], +"author" : "Daniel Reis", +"description": """\ +Allows to define the LDAP attributes to use to retrieve user name and e-mail address. + +The default attribute used for the name is "cn". +For Active Directory, you might prefer to use "displayName" instead. +AD also supports the "mail" attribute, so it can be mapped into OpenERP. +""", +"category" : "Tools", +"data" : [ + 'users_ldap_view.xml', +], +"installable": True, +} +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/users_ldap_mail/users_ldap_model.py b/users_ldap_mail/users_ldap_model.py new file mode 100644 index 000000000..52b3899e8 --- /dev/null +++ b/users_ldap_mail/users_ldap_model.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2013 Daniel Reis +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp.osv import fields, orm + + +class CompanyLDAP(orm.Model): + _inherit='res.company.ldap' + _columns={ + 'name_attribute': fields.char('Name Attribute', size=64, + help="Default in 'cn'. For an AD you could use 'displayName' instead."), + 'mail_attribute': fields.char('E-mail attribute', size=64, + help="Active Directory uses the 'mail' attribute."), + } + + + def get_ldap_dicts(self, cr, ids=None): + """ + Copy of auth_ldap's funtion, changing only the SQL, so that it returns + all fields in the table. + """ + + if ids: + id_clause = 'AND id IN (%s)' + args = [tuple(ids)] + else: + id_clause = '' + args = [] + cr.execute(""" + SELECT * + FROM res_company_ldap + WHERE ldap_server != '' """ + id_clause + """ ORDER BY sequence + """, args) + return cr.dictfetchall() + + + def map_ldap_attributes(self, cr, uid, conf, login, ldap_entry): + values = super(CompanyLDAP, self).map_ldap_attributes(cr, uid, conf, + login, ldap_entry) + if conf.get('name_attribute'): + values['name'] = ldap_entry[1][conf['name_attribute']][0] + if conf.get('mail_attribute'): + values['email'] = ldap_entry[1][conf['mail_attribute']][0] + return values + diff --git a/users_ldap_mail/users_ldap_view.xml b/users_ldap_mail/users_ldap_view.xml new file mode 100644 index 000000000..9395e602f --- /dev/null +++ b/users_ldap_mail/users_ldap_view.xml @@ -0,0 +1,18 @@ + + + + + res.company.form.inherit.users_ldap_mail + res.company + + + + + + + + + + + +