Skip to content
This repository was archived by the owner on Apr 22, 2020. It is now read-only.

Commit cd28c39

Browse files
author
trik
committed
improve versioning schemes support
close #98 close #71
1 parent c0b773d commit cd28c39

3 files changed

Lines changed: 7 additions & 4 deletions

File tree

drf_openapi/utils.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ def decorator(view_method):
1313
view_method.response_serializer = response_serializer
1414

1515
@wraps(view_method)
16-
def wrapper(instance, request, version=None, *args, **kwargs):
16+
def wrapper(instance, request, *args, **kwargs):
17+
version, _ = instance.determine_version(request, *args, **kwargs)
18+
1719
if request_serializer and issubclass(request_serializer, VersionedSerializers):
1820
instance.request_serializer = request_serializer.get(version)
1921
else:
@@ -24,7 +26,7 @@ def wrapper(instance, request, version=None, *args, **kwargs):
2426
else:
2527
instance.response_serializer = response_serializer
2628

27-
response = view_method(instance, request, version=version, *args, **kwargs)
29+
response = view_method(instance, request, *args, **kwargs)
2830
if validate_response:
2931
response_validator = instance.response_serializer(data=response.data)
3032
response_validator.is_valid(raise_exception=True)

drf_openapi/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ class SchemaView(APIView):
1313
url = ''
1414
title = 'API Documentation'
1515

16-
def get(self, request, version):
16+
def get(self, request, *args, **kwargs):
17+
version, _ = self.determine_version(request, *args, **kwargs)
1718
generator = OpenApiSchemaGenerator(
1819
version=version,
1920
url=self.url,

examples/snippets/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class SnippetList(APIView):
2828
"""
2929

3030
@view_config(response_serializer=SnippetSerializer)
31-
def get(self, request, version, format=None):
31+
def get(self, request, version=None, format=None):
3232
res = self.response_serializer(data=_FAKE_SNIPPETS, many=True)
3333
res.is_valid(raise_exception=True)
3434
return Response(res.validated_data)

0 commit comments

Comments
 (0)