From 367b8a3914811be14dce14a19836fc0cdea4377b Mon Sep 17 00:00:00 2001 From: Chneemann Date: Tue, 25 Mar 2025 09:47:02 +0100 Subject: [PATCH] feat: adjusted user cache data to match the Serializer structure --- user_app/caching.py | 27 ++++++++++++--------------- user_app/serializers.py | 1 + user_app/views.py | 3 ++- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/user_app/caching.py b/user_app/caching.py index d60cbc7..68701c2 100644 --- a/user_app/caching.py +++ b/user_app/caching.py @@ -2,33 +2,30 @@ import json from django.core.cache import cache from .models import User from django.core.exceptions import ObjectDoesNotExist -from django.core import serializers +from .serializers import UserSerializer def get_cached_user(user_id): cache_key = f"user_{user_id}" - cached_user_json = cache.get(cache_key) - - if cached_user_json is not None: - return json.loads(cached_user_json) - + cached_user = cache.get(cache_key) + + if cached_user is not None: + return cached_user try: user = User.objects.get(id=user_id) except ObjectDoesNotExist: return None - if user: - user_data = serializers.serialize('json', [user]) - cache.set(cache_key, user_data, timeout=3600) + serializer = UserSerializer(user) + user_data = serializer.data + + cache.set(cache_key, user_data, timeout=3600) - return json.loads(user_data)[0]['fields'] - else: - return None + return user_data def cache_user(user_id, user_data, timeout=3600): """ Saves user data in the cache. """ - cache_key = f"user_{user_id}" - user_json = json.dumps(user_data) - cache.set(cache_key, user_json, timeout) \ No newline at end of file + cache_key = f"user_{user_id}" + cache.set(cache_key, user_data, timeout) \ No newline at end of file diff --git a/user_app/serializers.py b/user_app/serializers.py index 8dfdb58..162cb2b 100644 --- a/user_app/serializers.py +++ b/user_app/serializers.py @@ -11,5 +11,6 @@ class UserSerializer(serializers.ModelSerializer): class UserViewSet(viewsets.ModelViewSet): serializer_class = UserSerializer queryset = User.objects.all() + parser_classes = [CamelCaseJSONParser] renderer_classes = [CamelCaseJSONRenderer] \ No newline at end of file diff --git a/user_app/views.py b/user_app/views.py index 2bb34b9..c1a348a 100644 --- a/user_app/views.py +++ b/user_app/views.py @@ -9,7 +9,7 @@ class UserViewSet(viewsets.ModelViewSet): serializer_class = UserSerializer def retrieve(self, request, *args, **kwargs): - user_id = kwargs.get("pk") + user_id = kwargs.get("pk") cached_user = get_cached_user(user_id) if cached_user: @@ -17,6 +17,7 @@ class UserViewSet(viewsets.ModelViewSet): user = self.get_object() serialized_user = UserSerializer(user).data + cache_user(user_id, serialized_user) return Response(serialized_user) \ No newline at end of file