Source code for ska.contrib.django.ska.utils

from datetime import datetime
from typing import Dict, Optional, Union

from ....defaults import DEFAULT_PROVIDER_PARAM
from .models import Signature
from .settings import PROVIDERS, SECRET_KEY

__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
__copyright__ = "2013-2023 Artur Barseghyan"
__license__ = "GPL-2.0-only OR LGPL-2.1-or-later"
__all__ = (
    "get_provider_data",
    "get_secret_key",
    "purge_signature_data",
)


[docs] def purge_signature_data() -> None: """Purge old signature data (valid_until < now).""" Signature._default_manager.filter(valid_until__lt=datetime.now()).delete()
[docs] def get_secret_key( data: Optional[Dict[str, Union[bytes, str, float, int]]], default: str = SECRET_KEY, ) -> str: """Obtain the secret key from request data given. This happens by looking up the secret key by `provider` param from the request data in the dictionary of ``PROVIDERS`` defined in settings module. If not found, fall back to the ``default`` value given, which is by default the globally set secret key. :param dict data: :param string default: Secret key value to be used as default. By default, the globally set secret key is used. """ provider = data.get(DEFAULT_PROVIDER_PARAM, None) if provider: provider_data = PROVIDERS.get(provider, None) if provider_data: return provider_data.get("SECRET_KEY", default) return default
[docs] def get_provider_data( data: Dict[str, Union[bytes, str, float, int]], settings: Optional[Dict[str, Dict[str, str]]] = None, ) -> Optional[Dict[str, str]]: """Obtain the secret key from request data given. This happens by looking up the secret key by `provider` param from the request data in the dictionary of ``PROVIDERS`` defined in settings module. If not found, fall back to the ``default`` value given, which is by default the globally set secret key. :param dict data: :param dict settings: Settings dict. """ if not settings or not isinstance(settings, dict): settings = PROVIDERS provider = data.get(DEFAULT_PROVIDER_PARAM, None) if provider: return settings.get(provider, None) return {}