File tree Expand file tree Collapse file tree 3 files changed +38
-0
lines changed Expand file tree Collapse file tree 3 files changed +38
-0
lines changed Original file line number Diff line number Diff line change 8
8
9
9
- Fix `@api.expect(..., validate=False) ` decorators for an :class: `Api ` where `validate=True ` is set on the constructor
10
10
- Ensure `basePath ` is always a path
11
+ - Hide Namespaces with all hidden Resources from Swagger documentation
11
12
12
13
0.12.1 (2018-09-28)
13
14
-------------------
Original file line number Diff line number Diff line change @@ -132,6 +132,14 @@ def parse_docstring(obj):
132
132
return parsed
133
133
134
134
135
+ def is_hidden (resource ):
136
+ '''
137
+ Determine whether a Resource has been hidden from Swagger documentation
138
+ i.e. by using Api.doc(False) decorator
139
+ '''
140
+ return hasattr (resource , "__apidoc__" ) and resource .__apidoc__ is False
141
+
142
+
135
143
class Swagger (object ):
136
144
'''
137
145
A Swagger documentation wrapper for an API instance.
@@ -224,8 +232,13 @@ def extract_tags(self, api):
224
232
tags .append (tag )
225
233
by_name [tag ['name' ]] = tag
226
234
for ns in api .namespaces :
235
+ # hide namespaces without any Resources
227
236
if not ns .resources :
228
237
continue
238
+ # hide namespaces with all Resources hidden from Swagger documentation
239
+ resources = (resource for resource , urls , kwargs in ns .resources )
240
+ if all (is_hidden (r ) for r in resources ):
241
+ continue
229
242
if ns .name not in by_name :
230
243
tags .append ({
231
244
'name' : ns .name ,
Original file line number Diff line number Diff line change @@ -297,6 +297,30 @@ def get(self):
297
297
data = client .get_specs ('' )
298
298
assert data ['tags' ] == [{'name' : 'ns' }]
299
299
300
+ def test_specs_endpoint_namespace_all_resources_hidden (self , app , client ):
301
+ api = restplus .Api (app )
302
+ ns = api .namespace ('ns' )
303
+
304
+ @ns .route ('/test' , endpoint = 'test' , doc = False )
305
+ class TestResource (restplus .Resource ):
306
+ def get (self ):
307
+ return {}
308
+
309
+ @ns .route ('/test2' , endpoint = 'test2' )
310
+ @ns .hide
311
+ class TestResource2 (restplus .Resource ):
312
+ def get (self ):
313
+ return {}
314
+
315
+ @ns .route ('/test3' , endpoint = 'test3' )
316
+ @ns .doc (False )
317
+ class TestResource3 (restplus .Resource ):
318
+ def get (self ):
319
+ return {}
320
+
321
+ data = client .get_specs ('' )
322
+ assert data ['tags' ] == []
323
+
300
324
def test_specs_authorizations (self , app , client ):
301
325
authorizations = {
302
326
'apikey' : {
You can’t perform that action at this time.
0 commit comments