28 lines
858 B
Python
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
|