From 6b00fad92cd912b2a0010fafd8f2c466c2d38215 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Tue, 8 Sep 2015 14:50:44 +0200 Subject: [PATCH 1/6] [FIX] use a nonserialized cursor for updating user groups --- auth_dynamic_groups/model/res_users.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/auth_dynamic_groups/model/res_users.py b/auth_dynamic_groups/model/res_users.py index ee96be56b..01233d6b2 100644 --- a/auth_dynamic_groups/model/res_users.py +++ b/auth_dynamic_groups/model/res_users.py @@ -35,10 +35,9 @@ class res_users(Model): return uid def update_dynamic_groups(self, uid, db): - pool = RegistryManager.get(db) - cr = pool._db.cursor() - user = pool.get('res.users').browse(cr, SUPERUSER_ID, uid) - groups_obj = pool.get('res.groups') + cr = self.pool._db.cursor(serialized=True) + user = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid) + groups_obj = self.pool.get('res.groups') user.write( { 'groups_id': [ From 3f2e12d416c1a294b3757e60aa6659fec4710f96 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Tue, 8 Sep 2015 14:56:58 +0200 Subject: [PATCH 2/6] [FIX] actually use a nonserialized cursor --- auth_dynamic_groups/model/res_users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auth_dynamic_groups/model/res_users.py b/auth_dynamic_groups/model/res_users.py index 01233d6b2..69d0447ce 100644 --- a/auth_dynamic_groups/model/res_users.py +++ b/auth_dynamic_groups/model/res_users.py @@ -35,7 +35,7 @@ class res_users(Model): return uid def update_dynamic_groups(self, uid, db): - cr = self.pool._db.cursor(serialized=True) + cr = self.pool._db.cursor(serialized=False) user = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid) groups_obj = self.pool.get('res.groups') user.write( From cf9509cb9a807707e662eac11b8119bc22fa833d Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Tue, 8 Sep 2015 15:32:44 +0200 Subject: [PATCH 3/6] [FIX] update groups with sql --- auth_dynamic_groups/model/res_users.py | 33 +++++++++++++------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/auth_dynamic_groups/model/res_users.py b/auth_dynamic_groups/model/res_users.py index 69d0447ce..f6d89fbb3 100644 --- a/auth_dynamic_groups/model/res_users.py +++ b/auth_dynamic_groups/model/res_users.py @@ -19,7 +19,6 @@ # ############################################################################## from openerp.models import Model -from openerp.modules.registry import RegistryManager from openerp import SUPERUSER_ID @@ -36,19 +35,21 @@ class res_users(Model): def update_dynamic_groups(self, uid, db): cr = self.pool._db.cursor(serialized=False) - user = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid) groups_obj = self.pool.get('res.groups') - user.write( - { - 'groups_id': [ - (4, dynamic_group.id) - if dynamic_group.eval_dynamic_group_condition(uid=uid) - else (3, dynamic_group.id) - for dynamic_group in groups_obj.browse( - cr, SUPERUSER_ID, - groups_obj.search(cr, SUPERUSER_ID, - [('is_dynamic', '=', True)])) - ], - }) - cr.commit() - cr.close() + try: + dynamic_groups = groups_obj.browse( + cr, SUPERUSER_ID, groups_obj.search( + cr, SUPERUSER_ID, [('is_dynamic', '=', True)])) + cr.execute( + 'delete from res_groups_users_rel where uid=%s and gid in %s', + (uid, tuple(dynamic_groups.ids))) + for dynamic_group in dynamic_groups: + if dynamic_group.eval_dynamic_group_condition(uid=uid): + cr.execute( + 'insert into res_groups_users_rel (uid, gid) values ' + '(%s, %s)', + (uid, dynamic_group.id)) + self.invalidate_cache(cr, uid, ['groups_id'], [uid]) + cr.commit() + finally: + cr.close() From 3db7523d7f88c1fac0b842376dd447d7c20c48b0 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Tue, 8 Sep 2015 15:34:14 +0200 Subject: [PATCH 4/6] [FIX] don't do anything for admin --- auth_dynamic_groups/model/res_users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auth_dynamic_groups/model/res_users.py b/auth_dynamic_groups/model/res_users.py index f6d89fbb3..8ce916e19 100644 --- a/auth_dynamic_groups/model/res_users.py +++ b/auth_dynamic_groups/model/res_users.py @@ -28,7 +28,7 @@ class res_users(Model): def _login(self, db, login, password): uid = super(res_users, self)._login(db, login, password) - if uid: + if uid and uid != SUPERUSER_ID: self.update_dynamic_groups(uid, db) return uid From a219268105d09e7ca60a83c34f2d7ad0e813caa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Fri, 30 Oct 2015 23:16:32 +0100 Subject: [PATCH 5/6] [UPD] addons table in README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e987b39ce..531829137 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ addon | version | summary [auth_admin_passkey](auth_admin_passkey/) | 8.0.2.1.1 | Authentification - Admin Passkey [auth_dynamic_groups](auth_dynamic_groups/) | 8.0.1.0.0 | Have membership conditions for certain groups [auth_from_http_remote_user](auth_from_http_remote_user/) | 8.0.1.0.0 | Authenticate via HTTP Remote User +[auth_supplier](auth_supplier/) | 8.0.1.0.0 | Auth Supplier [base_concurrency](base_concurrency/) | 8.0.1.0.0 | Base Concurrency [base_debug4all](base_debug4all/) | 8.0.1.0.0 | Shows full debug options for all users [base_external_dbsource](base_external_dbsource/) | 8.0.1.3.0 | External Database Sources @@ -39,6 +40,7 @@ addon | version | summary [fetchmail_notify_error_to_sender](fetchmail_notify_error_to_sender/) | 8.0.1.0.0 | If fetching mails gives error, send an email to sender [inactive_session_timeout](inactive_session_timeout/) | 8.0.1.0.0 | This module disable all inactive sessions since a given delay [language_path_mixin](language_path_mixin/) | 8.0.1.0.0 | Setting the partner's language in RML reports +[log_forwarded_for_ip](log_forwarded_for_ip/) | 8.0.1.0.0 | Displays source IPs in log when behind a reverse proxy [mail_environment](mail_environment/) | 8.0.0.1.0 | Server env config for mail + fetchmail [mass_editing](mass_editing/) | 8.0.1.3.0 | Mass Editing [module_prototyper](module_prototyper/) | 8.0.0.3.0 | Prototype your module. From 66a5a7f1d3e75711ec9fae06e1be2c4e87ad5ae8 Mon Sep 17 00:00:00 2001 From: sergio-incaser Date: Fri, 6 Nov 2015 17:14:52 +0100 Subject: [PATCH 6/6] [FIX] auth_supplier: Change author order. --- auth_supplier/__openerp__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/auth_supplier/__openerp__.py b/auth_supplier/__openerp__.py index 9b7fd4bf1..5b7cc4a42 100644 --- a/auth_supplier/__openerp__.py +++ b/auth_supplier/__openerp__.py @@ -14,8 +14,8 @@ 'security/auth_supplier_security.xml', 'views/auth_supplier_view.xml', ], - 'author': 'Incaser Informatica S.L., ' - 'Antiun IngenierĂ­a S.L., ' + 'author': 'Antiun IngenierĂ­a S.L., ' + 'Incaser Informatica S.L., ' 'Odoo Community Association (OCA)', 'website': 'http://www.incaser.es', 'license': 'AGPL-3',