from functools import wraps from django.http.response import HttpResponseForbidden def lesson_permission_test(view_func): @wraps(view_func) def _wrapped_view(request, lesson_id, *args, **kwargs): if not request.user.has_lesson(lesson_id): return HttpResponseForbidden() kwargs.update(lesson_id=lesson_id) return view_func(request, *args, **kwargs) return _wrapped_view