33 lines
858 B
Python
33 lines
858 B
Python
# Create your views here.
|
|
from django.http import JsonResponse, HttpResponse
|
|
from django.shortcuts import render
|
|
from ratelimit.decorators import ratelimit
|
|
|
|
from vbv_lernwelt.core.middleware.auth import django_view_authentication_exempt
|
|
|
|
|
|
def permission_denied_view(request, exception):
|
|
return render(request, "403.html", status=403)
|
|
|
|
|
|
def rate_limit_exceeded_view(request, exception):
|
|
return render(request, "429.html", status=429)
|
|
|
|
|
|
@django_view_authentication_exempt
|
|
def server_json_error(request, *args, **kwargs):
|
|
"""
|
|
Generic 500 error handler.
|
|
"""
|
|
data = {
|
|
"detail": "Server Error (500)",
|
|
"status_code": 500,
|
|
}
|
|
return JsonResponse(data, status=500)
|
|
|
|
|
|
@ratelimit(key="ip", rate="5/m", block=True)
|
|
@django_view_authentication_exempt
|
|
def check_rate_limit(request):
|
|
return HttpResponse(content=b"Hello")
|