diff --git a/core/views.py b/core/views.py index b6a82b6d..18a9c7af 100644 --- a/core/views.py +++ b/core/views.py @@ -10,6 +10,7 @@ from django.core.cache import cache from django.core.exceptions import BadRequest from django.http import FileResponse, Http404, JsonResponse from django.shortcuts import redirect +from django.utils.decorators import method_decorator from django.utils.http import urlsafe_base64_decode from django.utils.translation import gettext_lazy as _ from django.views.decorators.cache import cache_page @@ -315,7 +316,7 @@ class ContactUsView(APIView): YAMLRenderer, ] - @ratelimit(key="ip", rate="2/h") + @method_decorator(ratelimit(key="ip", rate="2/h", method="POST", block=True)) def post(self, request, *args, **kwargs): serializer = self.serializer_class(data=request.data) serializer.is_valid(raise_exception=True) @@ -351,7 +352,7 @@ class RequestCursedURLView(APIView): YAMLRenderer, ] - @ratelimit(key="ip", rate="10/h") + @method_decorator(ratelimit(key="ip", rate="10/h")) def post(self, request, *args, **kwargs): url = request.data.get("url") if not is_url_safe(url): @@ -427,7 +428,7 @@ class BuyAsBusinessView(APIView): Handles the "POST" request to process a business purchase. """ - @ratelimit(key="ip", rate="2/h", block=True) + @method_decorator(ratelimit(key="ip", rate="2/h", block=True)) def post(self, request, *_args, **kwargs): serializer = BuyAsBusinessOrderSerializer(data=request.data) serializer.is_valid(raise_exception=True)