diff --git a/redash/permissions.py b/redash/permissions.py index b69e21f4a9..7118a6b83d 100644 --- a/redash/permissions.py +++ b/redash/permissions.py @@ -15,17 +15,19 @@ def has_access(obj, user, need_view_only): + groups = obj.groups if hasattr(obj, 'groups') else obj + if 'admin' in user.permissions: return True - matching_groups = set(obj.groups.keys()).intersection(user.group_ids) + matching_groups = set(groups.keys()).intersection(user.group_ids) if not matching_groups: return False required_level = 1 if need_view_only else 2 - group_level = 1 if all(flatten([obj.groups[group] for group in matching_groups])) else 2 + group_level = 1 if all(flatten([groups[group] for group in matching_groups])) else 2 return required_level <= group_level