From 8a18aa393e94e095e15ff57b95d42f21dab34afb Mon Sep 17 00:00:00 2001 From: Gaston Avila Date: Thu, 13 Aug 2020 16:09:24 -0300 Subject: [PATCH] Make error handlers order of registration respected when handling errors --- flask_restx/api.py | 6 +++--- flask_restx/namespace.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flask_restx/api.py b/flask_restx/api.py index 75ec0954..0e561f86 100644 --- a/flask_restx/api.py +++ b/flask_restx/api.py @@ -144,10 +144,10 @@ def __init__( self._default_error_handler = None self.tags = tags or [] - self.error_handlers = { + self.error_handlers = OrderedDict({ ParseError: mask_parse_error_handler, MaskError: mask_error_handler, - } + }) self._schema = None self.models = {} self._refresolver = None @@ -559,7 +559,7 @@ def __schema__(self): @property def _own_and_child_error_handlers(self): - rv = {} + rv = OrderedDict() rv.update(self.error_handlers) for ns in self.namespaces: for exception, handler in six.iteritems(ns.error_handlers): diff --git a/flask_restx/namespace.py b/flask_restx/namespace.py index 49beec27..48067776 100644 --- a/flask_restx/namespace.py +++ b/flask_restx/namespace.py @@ -4,7 +4,7 @@ import inspect import warnings import logging -from collections import namedtuple +from collections import namedtuple, OrderedDict import six from flask import request @@ -57,7 +57,7 @@ def __init__( self.urls = {} self.decorators = decorators if decorators else [] self.resources = [] # List[ResourceRoute] - self.error_handlers = {} + self.error_handlers = OrderedDict() self.default_error_handler = None self.authorizations = authorizations self.ordered = ordered