From a7bb2cee61878b006a0fc2050ff0405c0d417d7d Mon Sep 17 00:00:00 2001 From: wlorenzetti Date: Tue, 10 Oct 2023 14:52:54 +0200 Subject: [PATCH] Add user pk to cache key. --- g3w-admin/core/utils/decorators.py | 2 +- g3w-admin/qdjango/models/projects.py | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/g3w-admin/core/utils/decorators.py b/g3w-admin/core/utils/decorators.py index f868cb4db..7dd45654a 100644 --- a/g3w-admin/core/utils/decorators.py +++ b/g3w-admin/core/utils/decorators.py @@ -154,7 +154,7 @@ def cache_page(timeout, key_args, key_prefix="", cache_alias=None): def _decorator(view_func): @wraps(view_func) def _wrapped_view(request, *args, **kwargs): - key = f"{key_prefix}{'_'.join([str(kwargs[k]) for k in key_args])}" + key = f"{key_prefix}{'_'.join([str(kwargs[k]) for k in key_args] + [str(request.user.pk)])}" response = cache.get(key) if not response: response = view_func(request, *args, **kwargs) diff --git a/g3w-admin/qdjango/models/projects.py b/g3w-admin/qdjango/models/projects.py index 7b393dc4b..a115afbc5 100644 --- a/g3w-admin/qdjango/models/projects.py +++ b/g3w-admin/qdjango/models/projects.py @@ -519,12 +519,21 @@ def __getattr__(self, attr): return super(Project, self).__getattribute__(attr) - def invalidate_cache(self): + def invalidate_cache(self, user=None): """Method to invalidate(delete) API REST /api/config""" # invalidate project cache - key = f"{settings.QDJANGO_PRJ_CACHE_KEY}{self.group.pk}_{'qdjango'}_{self.pk}" - cache.delete(key) + pre_key = f"{settings.QDJANGO_PRJ_CACHE_KEY}{self.group.pk}_{'qdjango'}_{self.pk}" + if user == None: + + # Invalidate every cache for every user + users = User.objects.all() + for user in users: + cache.delete(f"{pre_key}_{str(user.pk)}") + else: + + # Invalidate only for user + cache.delete(f"{pre_key}_{str(user.pk)}") post_delete.connect(check_overviewmap_project, sender=Project)