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 -*- |
|||
############################################################################## |
|||
# |
|||
# 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