Browse Source

[FIX] update groups with sql

pull/250/head
Holger Brunn 9 years ago
parent
commit
cf9509cb9a
  1. 29
      auth_dynamic_groups/model/res_users.py

29
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)]))
],
})
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()
Loading…
Cancel
Save