Skip to content

decorators

django_spire.contrib.decorators

P = ParamSpec('P') module-attribute

T = TypeVar('T') module-attribute

access_key_required

Source code in django_spire/contrib/decorators.py
def access_key_required(setting_name: str, param_name: str = 'access_key') -> Callable[P, T]:
    def decorator(view: Callable[P, T]) -> Callable[P, T]:
        @wraps(view)
        def wrapper(request: WSGIRequest, *args, **kwargs) -> HttpResponse:
            key = getattr(settings, setting_name, None)

            if not key or str(kwargs.get(param_name)) != str(key):
                raise Http404

            return view(request, *args, **kwargs)

        return wrapper

    return decorator

close_db_connections

Source code in django_spire/contrib/decorators.py
def close_db_connections(func: Callable[P, T]) -> Callable[P, T]:
    @wraps(func)
    def inner(*args: P.args, **kwargs: P.kwargs) -> T:
        try:
            return func(*args, **kwargs)
        finally:
            connections.close_all()

    return inner

valid_ajax_request_required

Source code in django_spire/contrib/decorators.py
def valid_ajax_request_required(method: Callable[..., HttpResponse]) -> Callable[..., HttpResponse]:
    @wraps(method)
    def wrapper(request: HttpRequest, *args, **kwargs) -> HttpResponse:
        if request.method != 'POST' and request.content_type != 'application/json':
            return JsonResponse({'type': 'error', 'message': 'Invalid Request'})

        return method(request, *args, **kwargs)

    return wrapper