Added exception handling in the require_api_key() decorator for AttributeError raised by the decorated function.

- Legacy-Id: 17629
This commit is contained in:
Henrik Levkowetz 2020-04-15 11:57:33 +00:00
parent b53846557e
commit bba2149b5e

View file

@ -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):