From 023fbc931d61ab5f0d69066f9d97067be4e56fc3 Mon Sep 17 00:00:00 2001 From: Ryan Petrello Date: Mon, 11 Mar 2019 21:24:43 -0400 Subject: [PATCH] generate Swagger schemas as if view permissions didn't matter this fixes several scenarios where certain POST endpoints don't show up in our generated Swagger doc; /api/swagger is only discoverable/accessible in the development environment where we generate the schema --- awx/api/swagger.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/awx/api/swagger.py b/awx/api/swagger.py index b67f2d4a26..ae774e78f0 100644 --- a/awx/api/swagger.py +++ b/awx/api/swagger.py @@ -13,6 +13,17 @@ from rest_framework.views import APIView from rest_framework_swagger import renderers +class SuperUserSchemaGenerator(SchemaGenerator): + + def has_view_permissions(self, path, method, view): + # + # Generate the Swagger schema as if you were a superuser and + # permissions didn't matter; this short-circuits the schema path + # discovery to include _all_ potential paths in the API. + # + return True + + class AutoSchema(DRFAuthSchema): def get_link(self, path, method, base_url): @@ -59,7 +70,7 @@ class SwaggerSchemaView(APIView): ] def get(self, request): - generator = SchemaGenerator( + generator = SuperUserSchemaGenerator( title='Ansible Tower API', patterns=None, urlconf=None