staff users can access all projects

This commit is contained in:
Élie Bouttier 2014-08-07 19:54:56 -07:00
parent f0087a8c06
commit d0f1908a6a

View file

@ -29,18 +29,21 @@ class ProjectMiddleware:
if request.user.is_authenticated():
user = User.objects.get(username=request.user)
query = Q(public=True)
if user:
# access granted through a team
query |= Q(permissions__grantee_type=PermissionModel.GRANTEE_TEAM,
permissions__grantee_name__in=user.teams.values_list('name'))
# access granted through a group
query |= Q(permissions__grantee_type=PermissionModel.GRANTEE_GROUP,
permissions__grantee_name__in=user.groups.values_list('name'))
# access granted by specific permission
query |= Q(permissions__grantee_type=PermissionModel.GRANTEE_USER,
permissions__grantee_name=user.username)
projects = Project.objects.filter(query)
if user and user.is_staff:
projects = Project.objects.all()
else:
query = Q(public=True)
if user:
# access granted through a team
query |= Q(permissions__grantee_type=PermissionModel.GRANTEE_TEAM,
permissions__grantee_name__in=user.teams.values_list('name'))
# access granted through a group
query |= Q(permissions__grantee_type=PermissionModel.GRANTEE_GROUP,
permissions__grantee_name__in=user.groups.values_list('name'))
# access granted by specific permission
query |= Q(permissions__grantee_type=PermissionModel.GRANTEE_USER,
permissions__grantee_name=user.username)
projects = Project.objects.filter(query)
request.projects = projects
project = view_kwargs.get('project')