12345678910111213141516171819202122232425262728293031 |
- from django.core.cache import cache
- from django.utils.functional import SimpleLazyObject
- from . import CACHE_NAME
- from .models import CacheVersion
- def cache_versions_middleware(get_response):
- """Sets request.cache_versions attribute with dict of cache versions."""
- def middleware(request):
- request.cache_versions = SimpleLazyObject(get_cache_versions)
- return get_response(request)
- return middleware
- def get_cache_versions():
- cache_versions = get_cache_versions_from_cache()
- if cache_versions is None:
- cache_versions = get_cache_versions_from_db()
- cache.set(CACHE_NAME, cache_versions)
- return cache_versions
- def get_cache_versions_from_cache():
- return cache.get(CACHE_NAME)
- def get_cache_versions_from_db():
- queryset = CacheVersion.objects.all()
- return {i.cache: i.version for i in queryset}
|