Browse Source

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 link
pull/682/head
Stephan 8 years ago
committed by Daniel Reis
parent
commit
e1b1b3254e
  1. 67
      users_ldap_mail/README.rst
  2. 24
      users_ldap_mail/__init__.py
  3. 27
      users_ldap_mail/__manifest__.py
  4. 6
      users_ldap_mail/models/__init__.py
  5. 44
      users_ldap_mail/models/users_ldap_model.py
  6. 77
      users_ldap_mail/users_ldap_model.py
  7. 18
      users_ldap_mail/users_ldap_view.xml
  8. 14
      users_ldap_mail/views/users_ldap_view.xml

67
users_ldap_mail/README.rst

@ -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.

24
users_ldap_mail/__init__.py

@ -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

27
users_ldap_mail/__manifest__.py

@ -1,27 +1,10 @@
# -*- coding: utf-8 -*- # -*- 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/>.
#
##############################################################################
# © Daniel Reis (https://launchpad.com/~dreis-pt)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/gpl.html).
{ {
'name': "LDAP mapping for user name and e-mail", 'name': "LDAP mapping for user name and e-mail",
'version': "9.0.1.0.0",
'version': "10.0.1.0.0",
'depends': ["auth_ldap"], 'depends': ["auth_ldap"],
'author': "Daniel Reis (https://launchpad.com/~dreis-pt)," 'author': "Daniel Reis (https://launchpad.com/~dreis-pt),"
"Odoo Community Association (OCA)", "Odoo Community Association (OCA)",
@ -36,7 +19,7 @@ AD also supports the "mail" attribute, so it can be mapped into OpenERP.
""", """,
'category': "Tools", 'category': "Tools",
'data': [ 'data': [
'users_ldap_view.xml',
'views/users_ldap_view.xml',
], ],
'installable': False,
'installable': True,
} }

6
users_ldap_mail/models/__init__.py

@ -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

44
users_ldap_mail/models/users_ldap_model.py

@ -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

77
users_ldap_mail/users_ldap_model.py

@ -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

18
users_ldap_mail/users_ldap_view.xml

@ -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>

14
users_ldap_mail/views/users_ldap_view.xml

@ -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>
Loading…
Cancel
Save