1234567891011121314151617181920212223242526272829303132333435363738 |
- from django.core.cache import cache
- from .models import CacheVersion
- from .utils import generate_version_string
- CACHE_NAME = "cache_versions"
- 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}
- def invalidate_cache(cache_name):
- CacheVersion.objects.filter(cache=cache_name).update(
- version=generate_version_string()
- )
- cache.delete(CACHE_NAME)
- def invalidate_all_caches():
- for cache_name in get_cache_versions_from_db().keys():
- CacheVersion.objects.filter(cache=cache_name).update(
- version=generate_version_string()
- )
- cache.delete(CACHE_NAME)
|