Skip to content

Commit

Permalink
add blueprint (closes #448), fix test misnomer
Browse files Browse the repository at this point in the history
  • Loading branch information
tfranzel committed Oct 17, 2021
1 parent bdea0c2 commit 43ddcc2
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 9 deletions.
14 changes: 14 additions & 0 deletions docs/blueprints.rst
Original file line number Diff line number Diff line change
Expand Up @@ -90,3 +90,17 @@ __ https://mrin9.github.io/RapiDoc/
.. literalinclude:: blueprints/rapidoc.py

.. literalinclude:: blueprints/rapidoc.html


drf-rw-serializers
------------------

`drf-rw-serializers`__ provides generic views, viewsets and mixins that extend the Django REST
Framework ones adding separated serializers for read and write operations.

`drf-spectacular` requires just a small ``AutoSchema`` augmentation to make it aware of
``drf-rw-serializers``. Remember to replace the ``AutoSchema`` in ``DEFAULT_SCHEMA_CLASS``.

__ https://github.com/vintasoftware/drf-rw-serializers

.. literalinclude:: blueprints/drf_rw_serializers.py
17 changes: 17 additions & 0 deletions docs/blueprints/drf_rw_serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from drf_rw_serializers.generics import GenericAPIView as RWGenericAPIView

from drf_spectacular.openapi import AutoSchema


class CustomAutoSchema(AutoSchema):
""" Utilize custom drf_rw_serializers methods for directional serializers """

def get_request_serializer(self):
if isinstance(self.view, RWGenericAPIView):
return self.view.get_write_serializer_class()()
return self._get_serializer()

def get_response_serializers(self):
if isinstance(self.view, RWGenericAPIView):
return self.view.get_read_serializer_class()()
return self._get_serializer()
2 changes: 1 addition & 1 deletion tests/test_extend_schema_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ class ZViewSet(XViewSet):
@extend_schema(tags=['child-tag'])
@action(detail=False, methods=['GET'])
def raw_action(self, request):
return Response('2019-03-01')
return Response('2019-03-01') # pragma: no cover


router = routers.SimpleRouter()
Expand Down
16 changes: 8 additions & 8 deletions tests/test_regressions.py
Original file line number Diff line number Diff line change
Expand Up @@ -1141,14 +1141,14 @@ class XViewset(viewsets.ReadOnlyModelViewSet):

schema = generate_schema('x', XViewset)

retrieve_parameters = schema['paths']['/x/']['get']['parameters']
assert len(retrieve_parameters) == 2
assert retrieve_parameters[0]['name'] == 'ordering'
assert retrieve_parameters[1]['name'] == 'search'

list_parameters = schema['paths']['/x/{id}/']['get']['parameters']
assert len(list_parameters) == 1
assert list_parameters[0]['name'] == 'id'
list_parameters = schema['paths']['/x/']['get']['parameters']
assert len(list_parameters) == 2
assert list_parameters[0]['name'] == 'ordering'
assert list_parameters[1]['name'] == 'search'

retrieve_parameters = schema['paths']['/x/{id}/']['get']['parameters']
assert len(retrieve_parameters) == 1
assert retrieve_parameters[0]['name'] == 'id'


def test_pagination(no_warnings):
Expand Down

0 comments on commit 43ddcc2

Please sign in to comment.