Fix get access against nullable active group

The group table is in a left join so group.active can be NULL for model/field
access without group. On such case the access values must still be selected.

issue7023
This commit is contained in:
Cédric Krier committed 2018-10-31 20:21:04 +01:00
1 parent 39ea946edd
commit a97f889228
1 file changed
+6 -4
+6 -4
View File
@@ -501,9 +501,10 @@ class ModelAccess(DeactivableMixin, ModelSQL, ModelView):
Max(Case((model_access.perm_create == True, 1), else_=0)),
Max(Case((model_access.perm_delete == True, 1), else_=0)),
where=ir_model.model.in_(models)
& ((user_group.user == user) | (model_access.group == Null))
& (model_access.active == True)
& (group.active == True),
& (((user_group.user == user)
& (group.active == True))
| (model_access.group == Null)),
group_by=ir_model.model))
access.update(dict(
(m, {'read': r, 'write': w, 'create': c, 'delete': d})
@@ -686,9 +687,10 @@ class ModelFieldAccess(DeactivableMixin, ModelSQL, ModelView):
Max(Case((field_access.perm_create == True, 1), else_=0)),
Max(Case((field_access.perm_delete == True, 1), else_=0)),
where=ir_model.model.in_(models)
& ((user_group.user == user) | (field_access.group == Null))
& (field_access.active == True)
& (group.active == True),
& (((user_group.user == user)
& (group.active == True))
| (field_access.group == Null)),
group_by=[ir_model.model, model_field.name]))
for m, f, r, w, c, d in cursor.fetchall():
accesses[m][f] = {'read': r, 'write': w, 'create': c, 'delete': d}