From da7908ac2aeb9e7681421a9c25aa98ed37b42ff8 Mon Sep 17 00:00:00 2001 From: fasta Date: Tue, 3 Nov 2020 19:05:23 +0200 Subject: [PATCH] Add 'key', 'group' and 'rate' details to 'RateLimited' Exception, in order to allow proper differentiation and documentation in case of multiple rate limit decorators on the same django view. --- ratelimit/decorators.py | 2 +- ratelimit/exceptions.py | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ratelimit/decorators.py b/ratelimit/decorators.py index 7aaf19e..5010bde 100644 --- a/ratelimit/decorators.py +++ b/ratelimit/decorators.py @@ -20,7 +20,7 @@ def _wrapped(request, *args, **kw): increment=True) request.limited = ratelimited or old_limited if ratelimited and block: - raise Ratelimited() + raise Ratelimited(group=group, key=key, rate=rate) return fn(request, *args, **kw) return _wrapped return decorator diff --git a/ratelimit/exceptions.py b/ratelimit/exceptions.py index f39a0f4..31de192 100644 --- a/ratelimit/exceptions.py +++ b/ratelimit/exceptions.py @@ -2,4 +2,9 @@ class Ratelimited(PermissionDenied): - pass + + def __init__(self, group, key, rate): + super(Ratelimited, self).__init__() + self.group = group + self.key = key + self.rate = rate