From bba2149b5e07976576e9c74950091b770bbe5ec3 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 15 Apr 2020 11:57:33 +0000 Subject: [PATCH] Added exception handling in the require_api_key() decorator for AttributeError raised by the decorated function. - Legacy-Id: 17629 --- ietf/utils/decorators.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ietf/utils/decorators.py b/ietf/utils/decorators.py index 6d01dc409..6ff46a47c 100644 --- a/ietf/utils/decorators.py +++ b/ietf/utils/decorators.py @@ -16,6 +16,7 @@ import debug # pyflakes:ignore from ietf.utils.test_runner import set_coverage_checking from ietf.person.models import Person, PersonalApiKey, PersonApiKeyEvent +from ietf.utils import log @decorator def skip_coverage(f, *args, **kwargs): @@ -76,7 +77,12 @@ def require_api_key(f, request, *args, **kwargs): key.save() PersonApiKeyEvent.objects.create(person=person, type='apikey_login', key=key, desc="Logged in with key ID %s, endpoint %s" % (key.id, key.endpoint)) # Execute decorated function - return f(request, *args, **kwargs) + try: + ret = f(request, *args, **kwargs) + except AttributeError as e: + log.log("Bad API call: args: %s, kwargs: %s, exception: %s" % (args, kwargs, e)) + return err(400, "Bad or missing parameters") + return ret def _memoize(func, self, *args, **kwargs):