From 28f8687ed8df33b4dbdec23e77f4deeb7e4201b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Antoine=20Dupr=C3=A9?= Date: Tue, 7 May 2024 18:17:16 +0200 Subject: [PATCH] Fix new internal user cache The `get_internal_user` function was broken: - on first use when the key for the internal user pk is not in the cache => the get_or_create would not work because there is no user with ID 0 (get fails) and the unique username is already in use (create fails). --- CHANGES.md | 4 ++++ mapentity/middleware.py | 29 +++++++++++++++-------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 069ebde1..d8ceb041 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,6 +4,10 @@ CHANGELOG 8.8.0+dev (XXXX-XX-XX) ----------------------- +**Hotfix** + +- Fix new internal user cache + 8.8.0 (2024-04-10) ----------------------- diff --git a/mapentity/middleware.py b/mapentity/middleware.py index 4b19a489..2d8b3fdf 100644 --- a/mapentity/middleware.py +++ b/mapentity/middleware.py @@ -11,25 +11,26 @@ def get_internal_user(): + + print("HELLO WORLD") + User = get_user_model() cache_key = sha256(app_settings['INTERNAL_USER'].encode()).hexdigest() - id = 0 - if cache_key in cache: id = int(cache.get(cache_key)) - - internal_user, created = User.objects.get_or_create( - id=int(id), - defaults={ - 'username': app_settings['INTERNAL_USER'], - 'password': '', - 'is_active': True - } - ) - if created: - cache.set(cache_key, internal_user.pk) - return internal_user + foo_user = User.objects.get(pk=id) + else: + foo_user, created = User.objects.get_or_create( + username=app_settings['INTERNAL_USER'], + defaults={ + 'password': '', + 'is_active': True + } + ) + if created: + cache.set(cache_key, foo_user.pk) + return foo_user class AutoLoginMiddleware: