Add: description of endpoints to swagger

This commit is contained in:
Stepan Zhukovsky 2023-09-08 19:21:37 +09:00
parent f28b44b7fd
commit bfe13039a3
2 changed files with 45 additions and 6 deletions

View File

@ -16,7 +16,7 @@ from rest_framework import filters
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from drf_spectacular.utils import extend_schema from drf_spectacular.utils import extend_schema, extend_schema_view
from drf_spectacular.openapi import OpenApiParameter from drf_spectacular.openapi import OpenApiParameter
from collector.models import Archive, Ticket, Platform from collector.models import Archive, Ticket, Platform
@ -33,6 +33,17 @@ from .serializers import (
) )
@extend_schema_view(
list=extend_schema(
description='Archives that contains log files for checking',
summary='Show all archives'
),
create=extend_schema(summary='Create (upload) a new archive'),
retrieve=extend_schema(summary='Show archive by id'),
update=extend_schema(summary='Update archive'),
partial_update=extend_schema(summary='Update archive field'),
destroy=extend_schema(summary='Delete archive'),
)
class ArchiveViewSet(viewsets.ModelViewSet): class ArchiveViewSet(viewsets.ModelViewSet):
queryset = Archive.objects.order_by('-time_create') queryset = Archive.objects.order_by('-time_create')
serializer_class = ArchiveSerializer serializer_class = ArchiveSerializer
@ -56,10 +67,10 @@ class ArchiveViewSet(viewsets.ModelViewSet):
}, },
parameters=[ parameters=[
OpenApiParameter( OpenApiParameter(
name='Upload-Token', name='Upload-Token',
type=str, type=str,
location=OpenApiParameter.HEADER, location=OpenApiParameter.HEADER,
description="upload permission token", description="upload permission token",
), ),
] ]
) )
@ -108,6 +119,17 @@ class ArchiveViewSet(viewsets.ModelViewSet):
) )
@extend_schema_view(
list=extend_schema(
description='Platforms are needed to relative the ticket and software',
summary='Show all platforms'
),
create=extend_schema(summary='Create a new platform'),
retrieve=extend_schema(summary='Show platform by internal name'),
update=extend_schema(summary='Update platform'),
partial_update=extend_schema(summary='Update platform field'),
destroy=extend_schema(summary='Delete platform'),
)
class PlatformViewSet(viewsets.ModelViewSet): class PlatformViewSet(viewsets.ModelViewSet):
queryset = Platform.objects.all() queryset = Platform.objects.all()
lookup_field = 'name' lookup_field = 'name'
@ -115,6 +137,17 @@ class PlatformViewSet(viewsets.ModelViewSet):
permission_classes = (IsAuthenticated, ) permission_classes = (IsAuthenticated, )
@extend_schema_view(
list=extend_schema(
description='Tickets that will be related with the uploaded archive',
summary='Show all tickets'
),
create=extend_schema(summary='Create a new ticket'),
retrieve=extend_schema(summary='Show ticket by number'),
update=extend_schema(summary='Update ticket'),
partial_update=extend_schema(summary='Update ticket field'),
destroy=extend_schema(summary='Delete ticket'),
)
class TicketViewSet(viewsets.ModelViewSet): class TicketViewSet(viewsets.ModelViewSet):
queryset = Ticket.objects.order_by('-time_create') queryset = Ticket.objects.order_by('-time_create')
lookup_field = 'number' lookup_field = 'number'
@ -130,6 +163,9 @@ class TicketViewSet(viewsets.ModelViewSet):
class StorageInfo(views.APIView): class StorageInfo(views.APIView):
"""Info about storage total/used/free space""" """Info about storage total/used/free space"""
@extend_schema(responses=StorageInfoSerializer) @extend_schema(
responses=StorageInfoSerializer,
summary='Show storage space in bytes'
)
def get(self, request): def get(self, request):
return Response(get_mount_fs_info(settings.MEDIA_ROOT)) return Response(get_mount_fs_info(settings.MEDIA_ROOT))

View File

@ -203,6 +203,9 @@ SPECTACULAR_SETTINGS = {
'VERSION': VERSION, 'VERSION': VERSION,
'SERVE_INCLUDE_SCHEMA': True, 'SERVE_INCLUDE_SCHEMA': True,
'SERVE_PUBLIC': False, 'SERVE_PUBLIC': False,
"SWAGGER_UI_SETTINGS": {
"filter": True,
},
} }
# https://django-rest-framework-simplejwt.readthedocs.io/en/latest/ # https://django-rest-framework-simplejwt.readthedocs.io/en/latest/