From dd39a45ee8ad36734ac4c0382698dd4b7d7d4ac8 Mon Sep 17 00:00:00 2001 From: wlorenzetti Date: Tue, 19 Dec 2023 09:14:42 +0100 Subject: [PATCH 1/2] Fix invalidation of caching for Anonymous user. --- g3w-admin/core/utils/decorators.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/g3w-admin/core/utils/decorators.py b/g3w-admin/core/utils/decorators.py index b5129bb22..fa1b44dc9 100644 --- a/g3w-admin/core/utils/decorators.py +++ b/g3w-admin/core/utils/decorators.py @@ -9,7 +9,7 @@ from django.apps import apps from django.contrib.auth import REDIRECT_FIELD_NAME from guardian.exceptions import GuardianError -from guardian.utils import get_40x_or_None +from guardian.utils import get_40x_or_None, get_anonymous_user import logging @@ -164,7 +164,12 @@ def _wrapped_view(request, *args, **kwargs): if not settings.QDJANGO_PRJ_CACHE: return view_func(request, *args, **kwargs) - key = f"{key_prefix}{'_'.join([str(kwargs[k]) for k in key_args] + [str(request.user.pk)])}" + if request.user.is_anonymous: + user_pk = get_anonymous_user().pk + else: + user_pk = request.user.pk + + key = f"{key_prefix}{'_'.join([str(kwargs[k]) for k in key_args] + [str(user_pk)])}" logger.debug(f"[CACHING /api/config]: Key {key}") response = cache.get(key) if not response: From 634de938cc9ca7301608ad5c25eda4d5c08496b2 Mon Sep 17 00:00:00 2001 From: wlorenzetti Date: Tue, 19 Dec 2023 15:11:41 +0100 Subject: [PATCH 2/2] Add migrations. --- .../migrations/0116_auto_20231204_1357.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 g3w-admin/qdjango/migrations/0116_auto_20231204_1357.py diff --git a/g3w-admin/qdjango/migrations/0116_auto_20231204_1357.py b/g3w-admin/qdjango/migrations/0116_auto_20231204_1357.py new file mode 100644 index 000000000..886d67993 --- /dev/null +++ b/g3w-admin/qdjango/migrations/0116_auto_20231204_1357.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.23 on 2023-12-04 13:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('qdjango', '0115_project_geocoding_providers'), + ] + + operations = [ + migrations.AlterField( + model_name='project', + name='toc_layers_init_status', + field=models.CharField(choices=[('collapsed', 'Collapsed'), ('not_collapsed', 'Not collapsed')], default='not_collapsed', help_text="Set tab's TOC layers initials state: 'Collapsed (close)' or 'Not collapsed (open)'", max_length=40, verbose_name="Tab's TOC layer initial status"), + ), + migrations.AlterField( + model_name='project', + name='toc_themes_init_status', + field=models.CharField(choices=[('collapsed', 'Collapsed'), ('not_collapsed', 'Not collapsed')], default='collapsed', help_text="Set map themes list initials state: 'Collapsed (close)' or 'Not collapsed (open)'", max_length=40, verbose_name='Map themes list initial status'), + ), + ]