/usr/lib/python3/dist-packages/ratelimit/decorators.py is in python3-django-ratelimit 0.4.0+8+gd58c489-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | from functools import wraps
from ratelimit.exceptions import Ratelimited
from ratelimit.helpers import is_ratelimited
__all__ = ['ratelimit']
def ratelimit(ip=True, block=False, method=['POST'], field=None, rate='5/m',
skip_if=None, keys=None):
def decorator(fn):
@wraps(fn)
def _wrapped(request, *args, **kw):
request.limited = getattr(request, 'limited', False)
if skip_if is None or not skip_if(request):
ratelimited = is_ratelimited(request=request, increment=True,
ip=ip, method=method, field=field,
rate=rate, keys=keys)
if ratelimited and block:
raise Ratelimited()
return fn(request, *args, **kw)
return _wrapped
return decorator
|