Fix schema warnings and errors for Webhooks (#5232)

- Removed extra update methods from schema
- Fixed Webhooks endpoints
- Fixed Webhooks enum names
main
Maxim Zhiltsov 3 years ago committed by GitHub
parent 760f40d3d8
commit 051f9a9ed8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -319,8 +319,6 @@ class ProjectViewSet(viewsets.GenericViewSet, mixins.ListModelMixin,
iam_organization_field = 'organization'
def get_serializer_class(self):
# TODO: fix separation into read and write serializers for requests and responses
# probably with drf-rw-serializers
if self.request.path.endswith('tasks'):
return TaskReadSerializer
else:

@ -31,11 +31,6 @@ from .serializers import (
responses={
'200': OrganizationReadSerializer(many=True),
}),
update=extend_schema(
summary='Method updates an organization by id',
responses={
'200': OrganizationWriteSerializer,
}),
partial_update=extend_schema(
summary='Methods does a partial update of chosen fields in an organization',
responses={
@ -102,11 +97,6 @@ class OrganizationViewSet(viewsets.GenericViewSet,
responses={
'200': MembershipReadSerializer(many=True),
}),
update=extend_schema(
summary='Method updates a membership by id',
responses={
'200': MembershipWriteSerializer,
}),
partial_update=extend_schema(
summary='Methods does a partial update of chosen fields in a membership',
responses={
@ -201,7 +191,7 @@ class InvitationViewSet(viewsets.GenericViewSet,
permission = InvitationPermission.create_scope_list(self.request)
return permission.filter(queryset)
def perform_create(self, serializer):
def perform_create(self, serializer, **kwargs):
extra_kwargs = {
'owner': self.request.user,
'key': get_random_string(length=64),

@ -39,14 +39,18 @@ from .signals import signal_ping, signal_redelivery
),
update=extend_schema(
summary="Method updates a webhook by id",
responses={"200": WebhookWriteSerializer},
request=WebhookWriteSerializer,
responses={"200": WebhookReadSerializer}, # check WebhookWriteSerializer.to_representation
),
partial_update=extend_schema(
summary="Methods does a partial update of chosen fields in a webhook",
responses={"200": WebhookWriteSerializer},
request=WebhookWriteSerializer,
responses={"200": WebhookReadSerializer}, # check WebhookWriteSerializer.to_representation
),
create=extend_schema(
summary="Method creates a webhook", responses={"201": WebhookWriteSerializer}
request=WebhookWriteSerializer,
summary="Method creates a webhook",
responses={"201": WebhookReadSerializer} # check WebhookWriteSerializer.to_representation
),
destroy=extend_schema(
summary="Method deletes a webhook",
@ -65,9 +69,11 @@ class WebhookViewSet(viewsets.ModelViewSet):
iam_organization_field = "organization"
def get_serializer_class(self):
if self.request.path.endswith("redelivery") or self.request.path.endswith(
"ping"
):
# Early exit for drf-spectacular compatibility
if getattr(self, 'swagger_fake_view', False):
return WebhookReadSerializer
if self.request.path.endswith("redelivery") or self.request.path.endswith("ping"):
return None
else:
if self.request.method in SAFE_METHODS:
@ -164,11 +170,15 @@ class WebhookViewSet(viewsets.ModelViewSet):
)
return Response(serializer.data)
@extend_schema(summary="Method redeliver a specific webhook delivery")
@extend_schema(summary="Method redeliver a specific webhook delivery",
request=None,
responses={200: None}
)
@action(
detail=True,
methods=["POST"],
url_path=r"deliveries/(?P<delivery_id>\d+)/redelivery",
serializer_class=None
)
def redelivery(self, request, pk, delivery_id):
delivery = WebhookDelivery.objects.get(webhook_id=pk, id=delivery_id)
@ -179,6 +189,7 @@ class WebhookViewSet(viewsets.ModelViewSet):
@extend_schema(
summary="Method send ping webhook",
request=None,
responses={"200": WebhookDeliveryReadSerializer},
)
@action(

@ -577,6 +577,8 @@ SPECTACULAR_SETTINGS = {
'JobStage': 'cvat.apps.engine.models.StageChoice',
'StorageType': 'cvat.apps.engine.models.StorageChoice',
'SortingMethod': 'cvat.apps.engine.models.SortingMethod',
'WebhookType': 'cvat.apps.webhooks.models.WebhookTypeChoice',
'WebhookContentType': 'cvat.apps.webhooks.models.WebhookContentTypeChoice',
},
# Coercion of {pk} to {id} is controlled by SCHEMA_COERCE_PATH_PK. Additionally,

Loading…
Cancel
Save