Clean ProjectMiddleware
This commit is contained in:
parent
81f5a4fdeb
commit
e3e87b6f51
1 changed files with 10 additions and 11 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue