from django.core.cache import cache
from django.conf import settings
from apps.core.models.site_settings import SiteSettings
from apps.core.models.content_config import ContentConfig


class SettingsMiddleware:

    def __init__(self, get_response):  # 必须添加的初始化方法
        self.get_response = get_response  # 保存 get_response

    def __call__(self, request):
        # 从缓存获取或设置完整配置
        request.site_config = cache.get_or_set(
            'site_config',
            SiteSettings.get_solo,  # 注意：这里传递的是函数引用，不是函数调用
            version=settings.SITE_CONFIG_CACHE_VERSION)
        request.content_config = cache.get_or_set(
            'content_config',
            ContentConfig.get_solo,  # 注意：这里传递的是函数引用，不是函数调用
            version=settings.SITE_CONFIG_CACHE_VERSION)

        # 调用后续中间件和视图
        return self.get_response(request)
