Clean ProjectMiddleware

This commit is contained in:
Maxime Arthaud 2014-08-21 23:46:32 -07:00
parent 81f5a4fdeb
commit e3e87b6f51

View file

@ -26,30 +26,28 @@ class ProjectMiddleware:
" 'django.contrib.auth.middleware.AuthenticationMiddleware'" " 'django.contrib.auth.middleware.AuthenticationMiddleware'"
" before the ProjectMiddleware class.") " before the ProjectMiddleware class.")
user = None if request.user.is_authenticated() and request.user.is_staff:
if request.user.is_authenticated():
user = User.objects.get(username=request.user)
if user and user.is_staff:
projects = Project.objects.all() projects = Project.objects.all()
else: else:
query = Q(public=True) query = Q(public=True)
if user: if request.user.is_authenticated():
# access granted through a team # access granted through a team
teams = user.teams.values_list('name') teams = request.user.teams.values_list('name')
query |= Q(permissions__grantee_type=PermModel.GRANTEE_TEAM, query |= Q(permissions__grantee_type=PermModel.GRANTEE_TEAM,
permissions__grantee_name__in=teams) permissions__grantee_name__in=teams)
# access granted through a group # access granted through a group
groups = user.groups.values_list('name') groups = request.user.groups.values_list('name')
query |= Q(permissions__grantee_type=PermModel.GRANTEE_GROUP, query |= Q(permissions__grantee_type=PermModel.GRANTEE_GROUP,
permissions__grantee_name__in=groups) permissions__grantee_name__in=groups)
# access granted by specific permission # access granted by specific permission
query |= Q(permissions__grantee_type=PermModel.GRANTEE_USER, query |= Q(permissions__grantee_type=PermModel.GRANTEE_USER,
permissions__grantee_name=user.username) permissions__grantee_name=request.user.username)
projects = Project.objects.filter(query).distinct() projects = Project.objects.filter(query).distinct()
request.projects = projects request.projects = projects
project = view_kwargs.get('project') project = view_kwargs.get('project')
if not project: if not project:
return return
try: try:
@ -59,5 +57,6 @@ class ProjectMiddleware:
raise PermissionDenied() raise PermissionDenied()
else: else:
return login_required(view)(request, *view_args, **view_kwargs) return login_required(view)(request, *view_args, **view_kwargs)
view_kwargs['project'] = project view_kwargs['project'] = project
request.project = project request.project = project