Browse Source

Merge pull request #1455 from hbrunn/8.0-auth_dynamic_groups-fix_no_groups_login

[FIX][auth_dynamic_groups] don't break when there are no dynamic groups
pull/1469/head
Pedro M. Baeza 6 years ago
committed by GitHub
parent
commit
a89ca5d9f1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      auth_dynamic_groups/__openerp__.py
  2. 2
      auth_dynamic_groups/model/res_groups.py
  3. 13
      auth_dynamic_groups/model/res_users.py

1
auth_dynamic_groups/__openerp__.py

@ -22,6 +22,7 @@
"name": "Dynamic groups", "name": "Dynamic groups",
"version": "8.0.1.0.0", "version": "8.0.1.0.0",
"author": "Therp BV", "author": "Therp BV",
"license": "AGPL-3",
"complexity": "normal", "complexity": "normal",
'summary': 'Have membership conditions for certain groups', 'summary': 'Have membership conditions for certain groups',
"category": "Tools", "category": "Tools",

2
auth_dynamic_groups/model/res_groups.py

@ -23,7 +23,7 @@ from openerp.tools.safe_eval import safe_eval
from openerp import _ from openerp import _
class res_groups(models.Model):
class ResGroups(models.Model):
_inherit = 'res.groups' _inherit = 'res.groups'
is_dynamic = fields.Boolean('Dynamic') is_dynamic = fields.Boolean('Dynamic')

13
auth_dynamic_groups/model/res_users.py

@ -22,11 +22,11 @@ from openerp.models import Model
from openerp import SUPERUSER_ID from openerp import SUPERUSER_ID
class res_users(Model):
class ResUsers(Model):
_inherit = 'res.users' _inherit = 'res.users'
def _login(self, db, login, password): def _login(self, db, login, password):
uid = super(res_users, self)._login(db, login, password)
uid = super(ResUsers, self)._login(db, login, password)
if uid and uid != SUPERUSER_ID: if uid and uid != SUPERUSER_ID:
self.update_dynamic_groups(uid, db) self.update_dynamic_groups(uid, db)
@ -40,9 +40,12 @@ class res_users(Model):
dynamic_groups = groups_obj.browse( dynamic_groups = groups_obj.browse(
cr, SUPERUSER_ID, groups_obj.search( cr, SUPERUSER_ID, groups_obj.search(
cr, SUPERUSER_ID, [('is_dynamic', '=', True)])) cr, SUPERUSER_ID, [('is_dynamic', '=', True)]))
if dynamic_groups:
cr.execute( cr.execute(
'delete from res_groups_users_rel where uid=%s and gid in %s',
(uid, tuple(dynamic_groups.ids)))
'delete from res_groups_users_rel '
'where uid=%s and gid in %s',
(uid, tuple(dynamic_groups.ids))
)
for dynamic_group in dynamic_groups: for dynamic_group in dynamic_groups:
if dynamic_group.eval_dynamic_group_condition(uid=uid): if dynamic_group.eval_dynamic_group_condition(uid=uid):
cr.execute( cr.execute(
@ -50,6 +53,8 @@ class res_users(Model):
'(%s, %s)', '(%s, %s)',
(uid, dynamic_group.id)) (uid, dynamic_group.id))
self.invalidate_cache(cr, uid, ['groups_id'], [uid]) self.invalidate_cache(cr, uid, ['groups_id'], [uid])
# we really need a new transaction
# pylint: disable=invalid-commit
cr.commit() cr.commit()
finally: finally:
cr.close() cr.close()
Loading…
Cancel
Save