Source code for core.context_processors

"""Inject this deployment's backend capabilities (Gate A) into every template."""

import logging

from django.conf import settings
from django.core.cache import cache

from api.client import BackendError, fetch_capabilities

logger = logging.getLogger(__name__)
_CACHE_KEY = "deployment_capabilities"
_CACHE_TTL = 300  # seconds; tier changes take effect within this window


[docs] def deployment_capabilities(request): """Return {"deployment_capabilities": {"permission": <int>, ...}}. Cached briefly so we don't hit the backend on every request. On failure we return a zero-permission stub so gated links simply don't render. """ caps = cache.get(_CACHE_KEY) if caps is None: try: caps = fetch_capabilities() except (BackendError, Exception): # noqa: BLE001 - never break rendering logger.warning("Could not fetch deployment capabilities", exc_info=True) caps = {"permission": 0} cache.set(_CACHE_KEY, caps, _CACHE_TTL) return {"deployment_capabilities": caps}
[docs] def global_constants(request): """Return collection of project's constants. :param request: HTTP request object :type request: :class:`django.http.HttpRequest` :return: dict """ return { "WEBSITE_NAME": settings.WEBSITE_NAME, "WEBSITE_SHORT_NAME": settings.WEBSITE_SHORT_NAME, "WEBSITE_URL": settings.WEBSITE_URL, "WEBSITE_DOMAIN": settings.WEBSITE_DOMAIN, "BASE_CDN_URL": settings.BASE_CDN_URL, "X_HANDLE": settings.X_HANDLE, "SUBREDDIT_NAME": settings.SUBREDDIT_NAME, "ANDROID_APP": settings.ANDROID_APP, "IOS_APP": settings.IOS_APP, "MEDIUM_NAME": settings.MEDIUM_NAME, "DISCORD_INVITE": settings.DISCORD_INVITE, "GITHUB_ORGANIZATION": settings.GITHUB_ORGANIZATION, }
[docs] def walletconnect(request): """Expose the WalletConnect project id to template context. :param request: current request (unused; signature required by Django) :type request: django.http.HttpRequest :return: mapping with the WalletConnect project id :rtype: dict """ return { "WALLET_CONNECT_PROJECT_ID": getattr(settings, "WALLET_CONNECT_PROJECT_ID", "") }