decorator.py 497 Bytes
from django.core.exceptions import PermissionDenied
from functools import wraps
from django.http import HttpResponseForbidden


def level_required(level=0):
    def wrapper(view_func):
        def _decorator(request, *args, **kwargs):
            if (request.user.user_level.priority < level):
                return HttpResponseForbidden()
            response = view_func(request, *args, **kwargs)
            return response
        return wraps(view_func)(_decorator)
    return wrapper