Browse Source
[MRG] Adds to auth_ldap the ability to populate user's e-mail address. Also makes possible to specify the lDAP attribute to use to populate the user's name.
pull/2/head
[MRG] Adds to auth_ldap the ability to populate user's e-mail address. Also makes possible to specify the lDAP attribute to use to populate the user's name.
pull/2/head
unknown
11 years ago
committed by
Joel Grand-Guillaume
4 changed files with 154 additions and 0 deletions
-
22users_ldap_mail/__init__.py
-
40users_ldap_mail/__openerp__.py
-
74users_ldap_mail/users_ldap_model.py
-
18users_ldap_mail/users_ldap_view.xml
@ -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 <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
|
|||
import users_ldap_model |
@ -0,0 +1,40 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# OpenERP, Open Source Management Solution |
|||
# Copyright (C) 2013 Daniel Reis (https://launchpad.com/~dreis-pt) |
|||
# |
|||
# 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 <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
|
|||
{ |
|||
'name': "LDAP mapping for user name and e-mail", |
|||
'version': "1.0", |
|||
'depends': ["auth_ldap"], |
|||
'author': "Daniel Reis (https://launchpad.com/~dreis-pt)", |
|||
'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: |
@ -0,0 +1,74 @@ |
|||
# -*- 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 <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
|
|||
from openerp.osv import fields, orm |
|||
|
|||
import logging |
|||
_log = logging.getLogger(__name__) |
|||
|
|||
class CompanyLDAP(orm.Model): |
|||
_inherit = 'res.company.ldap' |
|||
_columns = { |
|||
'name_attribute': fields.char('Name Attribute', size=64, |
|||
help="By default 'cn' is used. " |
|||
"For ActiveDirectory you might use 'displayName' instead."), |
|||
'mail_attribute': fields.char('E-mail attribute', size=64, |
|||
help="LDAP attribute to use to retrieve em-mail address."), |
|||
} |
|||
_defaults = { |
|||
'name_attribute': 'cn', |
|||
'mail_attribute': 'mail', |
|||
} |
|||
|
|||
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) |
|||
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 |
|||
|
@ -0,0 +1,18 @@ |
|||
<?xml version="1.0"?> |
|||
<openerp> |
|||
<data> |
|||
<record model="ir.ui.view" id="company_form_view"> |
|||
<field name="name">res.company.form.inherit.users_ldap_mail</field> |
|||
<field name="model">res.company</field> |
|||
<field name="inherit_id" ref="auth_ldap.company_form_view"/> |
|||
<field name="arch" type="xml"> |
|||
|
|||
<field name="ldap_filter" position="after"> |
|||
<field name="name_attribute"/> |
|||
<field name="mail_attribute"/> |
|||
</field> |
|||
|
|||
</field> |
|||
</record> |
|||
</data> |
|||
</openerp> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue