Browse Source
10.0 Migrate users_ldap_mail module (#651)
10.0 Migrate users_ldap_mail module (#651)
* [ADD] Add README.rst to users_ldap_mail * [MIG] Migrate users_ldap_mail to 10.0 * [FIX] Fixes in code style in module users_ldap_mail Changes in models/users_ldap_mail include: - remove unused imports - indentation of too long lines * [FIX] users_ldap_mail: Fix copyright notice * [FIX] users_ldap_mail: set UTF-8 encoding users_ldap_mail/models/__init__.py should be UTF-8 encoded * [FIX] users_ldap_mail: remove size argument from Char fields * [FIX] users_ldap_mail: return value can be combined in one line * [FIX] Update read me Fixes included: - Make module name human readable - Instead of numbering steps, use # - Update broken linkpull/682/head
Stephan
8 years ago
committed by
Daniel Reis
8 changed files with 140 additions and 137 deletions
-
67users_ldap_mail/README.rst
-
24users_ldap_mail/__init__.py
-
27users_ldap_mail/__manifest__.py
-
6users_ldap_mail/models/__init__.py
-
44users_ldap_mail/models/users_ldap_model.py
-
77users_ldap_mail/users_ldap_model.py
-
18users_ldap_mail/users_ldap_view.xml
-
14users_ldap_mail/views/users_ldap_view.xml
@ -0,0 +1,67 @@ |
|||||
|
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg |
||||
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html |
||||
|
:alt: License: AGPL-3 |
||||
|
|
||||
|
=============== |
||||
|
Users LDAP Mail |
||||
|
=============== |
||||
|
|
||||
|
This module extends the functionality of the auth_ldap module to support mail |
||||
|
from LDAP and to allow you to get an e-mail address from LDAP accounts to Odoo |
||||
|
users. |
||||
|
|
||||
|
Usage |
||||
|
===== |
||||
|
|
||||
|
To use this module, you need to: |
||||
|
|
||||
|
#. Open Odoo in your browser |
||||
|
#. Go to Settings |
||||
|
#. Go to General Settings |
||||
|
#. In The General Settings form go to LDAP Parameters |
||||
|
#. In a LDAP Parameters item there are two new fields: mail and name, the name |
||||
|
These items will correspond with a new user that is created, when a user |
||||
|
logs in via LDAP in Odoo. |
||||
|
|
||||
|
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas |
||||
|
:alt: Try me on Runbot |
||||
|
:target: https://runbot.odoo-community.org/runbot/repo/149 |
||||
|
|
||||
|
.. repo_id is available in https://github.com/OCA/maintainer-tools/blob/master/tools/repos_with_ids.txt |
||||
|
.. branch is "8.0" for example |
||||
|
|
||||
|
Bug Tracker |
||||
|
=========== |
||||
|
|
||||
|
Bugs are tracked on `GitHub Issues |
||||
|
<https://github.com/OCA/server-tools/issues>`_. In case of trouble, please |
||||
|
check there if your issue has already been reported. If you spotted it first, |
||||
|
help us smashing it by providing a detailed and welcomed feedback. |
||||
|
|
||||
|
Credits |
||||
|
======= |
||||
|
|
||||
|
Images |
||||
|
------ |
||||
|
|
||||
|
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_. |
||||
|
|
||||
|
Contributors |
||||
|
------------ |
||||
|
|
||||
|
* Daniel Reis (https://launchpad.com/~dreis-pt), |
||||
|
|
||||
|
Maintainer |
||||
|
---------- |
||||
|
|
||||
|
.. image:: https://odoo-community.org/logo.png |
||||
|
:alt: Odoo Community Association |
||||
|
:target: https://odoo-community.org |
||||
|
|
||||
|
This module is maintained by the OCA. |
||||
|
|
||||
|
OCA, or the Odoo Community Association, is a nonprofit organization whose |
||||
|
mission is to support the collaborative development of Odoo features and |
||||
|
promote its widespread use. |
||||
|
|
||||
|
To contribute to this module, please visit https://odoo-community.org. |
@ -1,22 +1,6 @@ |
|||||
# -*- coding: utf-8 -*- |
# -*- 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/>. |
|
||||
# |
|
||||
############################################################################## |
|
||||
|
# © Daniel Reis (https://launchpad.com/~dreis-pt) |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/gpl.html). |
||||
|
|
||||
|
from . import models |
||||
|
|
||||
from . import users_ldap_model |
|
@ -0,0 +1,6 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# © Daniel Reis (https://launchpad.com/~dreis-pt) |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/gpl.html). |
||||
|
|
||||
|
from . import users_ldap_model |
||||
|
|
@ -0,0 +1,44 @@ |
|||||
|
# -*- 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 |
@ -1,77 +0,0 @@ |
|||||
# -*- 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 |
|
@ -1,18 +0,0 @@ |
|||||
<?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> |
|
@ -0,0 +1,14 @@ |
|||||
|
<?xml version="1.0"?> |
||||
|
<odoo> |
||||
|
<record model="ir.ui.view" id="company_form_view"> |
||||
|
<field name="name">Add name and email attributes to ldap view</field> |
||||
|
<field name="model">base.config.settings</field> |
||||
|
<field name="inherit_id" ref="auth_ldap.view_general_configuration_form_inherit_auth_ldap"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//field[@name='ldap_filter']" position="after"> |
||||
|
<field name="name_attribute"/> |
||||
|
<field name="mail_attribute"/> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue