Re-add test for DELETE form param
parent
bebcc982e6
commit
7ce62616d2
|
|
@ -1,10 +1,10 @@
|
||||||
import datetime
|
import datetime
|
||||||
|
import functools
|
||||||
|
|
||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
from django_filters.rest_framework import DjangoFilterBackend
|
from django_filters.rest_framework import DjangoFilterBackend
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
# noinspection PyDeprecation
|
# noinspection PyDeprecation
|
||||||
from rest_framework.decorators import detail_route, list_route
|
|
||||||
from rest_framework.filters import OrderingFilter
|
from rest_framework.filters import OrderingFilter
|
||||||
from rest_framework.pagination import LimitOffsetPagination
|
from rest_framework.pagination import LimitOffsetPagination
|
||||||
from rest_framework.parsers import MultiPartParser
|
from rest_framework.parsers import MultiPartParser
|
||||||
|
|
@ -62,7 +62,7 @@ class ArticlePagination(LimitOffsetPagination):
|
||||||
|
|
||||||
@method_decorator(name='list', decorator=swagger_auto_schema(
|
@method_decorator(name='list', decorator=swagger_auto_schema(
|
||||||
operation_description="description from swagger_auto_schema via method_decorator",
|
operation_description="description from swagger_auto_schema via method_decorator",
|
||||||
filter_inspectors=[DjangoFilterDescriptionInspector]
|
filter_inspectors=[DjangoFilterDescriptionInspector],
|
||||||
))
|
))
|
||||||
class ArticleViewSet(viewsets.ModelViewSet):
|
class ArticleViewSet(viewsets.ModelViewSet):
|
||||||
"""
|
"""
|
||||||
|
|
@ -95,46 +95,35 @@ class ArticleViewSet(viewsets.ModelViewSet):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
|
list_route = functools.partial(action, detail=False)
|
||||||
@swagger_auto_schema(auto_schema=NoPagingAutoSchema, filter_inspectors=[DjangoFilterDescriptionInspector])
|
detail_route = functools.partial(action, detail=True)
|
||||||
@action(detail=False, methods=['get'])
|
|
||||||
def today(self, request):
|
|
||||||
today_min = datetime.datetime.combine(datetime.date.today(), datetime.time.min)
|
|
||||||
today_max = datetime.datetime.combine(datetime.date.today(), datetime.time.max)
|
|
||||||
articles = self.get_queryset().filter(date_created__range=(today_min, today_max)).all()
|
|
||||||
serializer = self.serializer_class(articles, many=True)
|
|
||||||
return Response(serializer.data)
|
|
||||||
|
|
||||||
@swagger_auto_schema(method='get', operation_description="image GET description override")
|
|
||||||
@swagger_auto_schema(method='post', request_body=serializers.ImageUploadSerializer)
|
|
||||||
@action(detail=True, methods=['get', 'post'], parser_classes=(MultiPartParser,))
|
|
||||||
def image(self, request, slug=None):
|
|
||||||
"""
|
|
||||||
image method docstring
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
# TODO: remove when dropping support for DRF 3.7
|
||||||
action = None
|
action = None
|
||||||
|
from rest_framework.decorators import list_route, detail_route
|
||||||
|
|
||||||
# noinspection PyDeprecation
|
@swagger_auto_schema(auto_schema=NoPagingAutoSchema, filter_inspectors=[DjangoFilterDescriptionInspector])
|
||||||
@swagger_auto_schema(auto_schema=NoPagingAutoSchema, filter_inspectors=[DjangoFilterDescriptionInspector])
|
@list_route(methods=['get'])
|
||||||
@list_route(methods=['get'])
|
def today(self, request):
|
||||||
def today(self, request):
|
today_min = datetime.datetime.combine(datetime.date.today(), datetime.time.min)
|
||||||
today_min = datetime.datetime.combine(datetime.date.today(), datetime.time.min)
|
today_max = datetime.datetime.combine(datetime.date.today(), datetime.time.max)
|
||||||
today_max = datetime.datetime.combine(datetime.date.today(), datetime.time.max)
|
articles = self.get_queryset().filter(date_created__range=(today_min, today_max)).all()
|
||||||
articles = self.get_queryset().filter(date_created__range=(today_min, today_max)).all()
|
serializer = self.serializer_class(articles, many=True)
|
||||||
serializer = self.serializer_class(articles, many=True)
|
return Response(serializer.data)
|
||||||
return Response(serializer.data)
|
|
||||||
|
|
||||||
# noinspection PyDeprecation
|
@swagger_auto_schema(method='get', operation_description="image GET description override")
|
||||||
@swagger_auto_schema(method='get', operation_description="image GET description override")
|
@swagger_auto_schema(method='post', request_body=serializers.ImageUploadSerializer)
|
||||||
@swagger_auto_schema(method='post', request_body=serializers.ImageUploadSerializer)
|
@swagger_auto_schema(method='delete', manual_parameters=[openapi.Parameter(
|
||||||
@detail_route(methods=['get', 'post'], parser_classes=(MultiPartParser,))
|
name='delete_form_param', in_=openapi.IN_FORM,
|
||||||
def image(self, request, slug=None):
|
type=openapi.TYPE_INTEGER,
|
||||||
"""
|
description="this should not crash (form parameter on DELETE method)"
|
||||||
image method docstring
|
)])
|
||||||
"""
|
@detail_route(methods=['get', 'post', 'delete'], parser_classes=(MultiPartParser,))
|
||||||
pass
|
def image(self, request, slug=None):
|
||||||
|
"""
|
||||||
|
image method docstring
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
@swagger_auto_schema(request_body=no_body, operation_id='no_body_test')
|
@swagger_auto_schema(request_body=no_body, operation_id='no_body_test')
|
||||||
def update(self, request, *args, **kwargs):
|
def update(self, request, *args, **kwargs):
|
||||||
|
|
|
||||||
|
|
@ -249,6 +249,21 @@ paths:
|
||||||
- multipart/form-data
|
- multipart/form-data
|
||||||
tags:
|
tags:
|
||||||
- articles
|
- articles
|
||||||
|
delete:
|
||||||
|
operationId: articles_image_delete
|
||||||
|
description: image method docstring
|
||||||
|
parameters:
|
||||||
|
- name: delete_form_param
|
||||||
|
in: formData
|
||||||
|
description: this should not crash (form parameter on DELETE method)
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
'204':
|
||||||
|
description: ''
|
||||||
|
consumes:
|
||||||
|
- multipart/form-data
|
||||||
|
tags:
|
||||||
|
- articles
|
||||||
parameters:
|
parameters:
|
||||||
- name: slug
|
- name: slug
|
||||||
in: path
|
in: path
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue