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