ponytracker/issue/middleware.py

28 lines
858 B
Python

from django.core.exceptions import ObjectDoesNotExist
from django.http import HttpResponseForbidden
from django.contrib.auth.decorators import login_required
from issue.models import *
class ProjectMiddleware:
def process_view(self, request, view, view_args, view_kwargs):
if view.__module__ != 'issue.views':
return
projects = Project.objects.filter(public=True)
request.projects = projects
project = view_kwargs.get('project')
if not project:
return
try:
project = projects.get(name=project)
except ObjectDoesNotExist:
if request.user.is_authenticated():
return HttpResponseForbidden()
else:
return login_required(view)(request, *view_args, **view_kwargs)
view_kwargs['project'] = project