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. diff --git a/auth_dynamic_groups/model/res_users.py b/auth_dynamic_groups/model/res_users.py index ee96be56b..8ce916e19 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 @@ -29,27 +28,28 @@ 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 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') - 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() + cr = self.pool._db.cursor(serialized=False) + groups_obj = self.pool.get('res.groups') + 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() 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',