From 10ee97b9028f172003f12b7d5a6fbb42b0af3f83 Mon Sep 17 00:00:00 2001 From: Rafiq Hilali Date: Thu, 7 Feb 2019 16:27:18 +0000 Subject: [PATCH] cached the sizes of avatars that have been added to the cache, and then used these cached sizes to clear the cache in invalidate_cache --- avatar/utils.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/avatar/utils.py b/avatar/utils.py index 38db5b3..9978cfc 100644 --- a/avatar/utils.py +++ b/avatar/utils.py @@ -65,6 +65,11 @@ def cache_result(default_size=settings.AVATAR_DEFAULT_SIZE): if result is None: result = func(user, size or default_size, **kwargs) cache_set(key, result) + # add image size to set of cached sizes so we can invalidate them later + sizes_key = get_cache_key(user, '', prefix='cached_sizes') + sizes = cache.get(sizes_key, set()) + sizes.add(size) + cache_set(sizes_key, sizes) return result return cached_func return decorator @@ -74,7 +79,8 @@ def invalidate_cache(user, size=None): """ Function to be called when saving or changing an user's avatars. """ - sizes = set(settings.AVATAR_AUTO_GENERATE_SIZES) + sizes_key = get_cache_key(user, '', prefix='cached_sizes') + sizes = cache.get(sizes_key, set()) if size is not None: sizes.add(size) for prefix in cached_funcs: