diff --git a/flasgger/base.py b/flasgger/base.py index 4faca7d8..5390a854 100644 --- a/flasgger/base.py +++ b/flasgger/base.py @@ -17,7 +17,10 @@ from functools import wraps, partial from collections import defaultdict from flask import Blueprint -from flask import Markup +try: + from flask import Markup +except ImportError: + from markupsafe import Markup from flask import current_app from flask import jsonify, Response from flask import redirect @@ -25,7 +28,10 @@ from flask import request, url_for from flask import abort from flask.views import MethodView -from flask.json import JSONEncoder +try: + from flask.json import JSONEncoder +except ImportError: + from json import JSONEncoder try: from flask_restful.reqparse import RequestParser except ImportError: diff --git a/flasgger/utils.py b/flasgger/utils.py index d0f43f9a..2c47c4cd 100644 --- a/flasgger/utils.py +++ b/flasgger/utils.py @@ -165,17 +165,26 @@ def get_specs(rules, ignore_verbs, optional_fields, sanitizer, swagged = True if doc_dir: + endpoint_name = rule.endpoint + if "." in endpoint_name: + endpoint_name = endpoint_name.split(".")[-1] + if view_class: file_path = os.path.join( - doc_dir, endpoint.__name__, method.__name__ + '.yml') + doc_dir, endpoint_name, method.__name__ + '.yml') else: file_path = os.path.join( - doc_dir, endpoint.__name__ + '.yml') + doc_dir, endpoint_name + '.yml') + func = method.__func__ \ + if hasattr(method, '__func__') else method if os.path.isfile(file_path): - func = method.__func__ \ - if hasattr(method, '__func__') else method setattr(func, 'swag_type', 'yml') setattr(func, 'swag_path', file_path) + else: + # Reset in case of inheritance. + setattr(func, 'swag_type', None) + setattr(func, 'swag_path', None) + doc_summary, doc_description, doc_swag = parse_docstring( method, sanitizer, endpoint=rule.endpoint, verb=verb)