add support for building swagger/OpenAPI JSON

to build, run `make swagger`; a file named `swagger.json` will be
written to the current working directory
This commit is contained in:
Ryan Petrello
2018-02-01 10:52:14 -05:00
parent c61efc0af8
commit 57c22c20b2
35 changed files with 379 additions and 29 deletions

View File

@@ -28,6 +28,7 @@ from rest_framework import status
from rest_framework import views
# AWX
from awx.api.swagger import AutoSchema
from awx.api.filters import FieldLookupBackend
from awx.main.models import * # noqa
from awx.main.access import access_registry
@@ -93,6 +94,7 @@ def get_view_description(cls, request, html=False):
class APIView(views.APIView):
schema = AutoSchema()
versioning_class = URLPathVersioning
def initialize_request(self, request, *args, **kwargs):
@@ -176,7 +178,7 @@ class APIView(views.APIView):
and in the browsable API.
"""
func = self.settings.VIEW_DESCRIPTION_FUNCTION
return func(self.__class__, self._request, html)
return func(self.__class__, getattr(self, '_request', None), html)
def get_description_context(self):
return {
@@ -197,6 +199,7 @@ class APIView(views.APIView):
'new_in_330': getattr(self, 'new_in_330', False),
'new_in_api_v2': getattr(self, 'new_in_api_v2', False),
'deprecated': getattr(self, 'deprecated', False),
'swagger_method': getattr(self.request, 'swagger_method', None),
}
def get_description(self, request, html=False):