Skip to content

decorators

django_spire.core.decorators

P = ParamSpec('P') module-attribute

T = TypeVar('T') module-attribute

access_key_required

Source code in django_spire/core/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/core/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/core/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