From ee08b6dcc0176f46c33c69ff090880d161eec548 Mon Sep 17 00:00:00 2001 From: Daan Sprenkels Date: Thu, 16 Aug 2018 23:40:04 +0200 Subject: [PATCH] Cache end-response when searching songs --- marietje/api/views.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/marietje/api/views.py b/marietje/api/views.py index 36bbe8b..2e1fb42 100644 --- a/marietje/api/views.py +++ b/marietje/api/views.py @@ -111,17 +111,16 @@ def songs(request): except EmptyPage: songs = paginator.page(paginator.num_pages) - return [song_to_dict(song, user=True) for song in songs.object_list], paginator + songs_dict = [song_to_dict(song, user=True) for song in songs.object_list] + return JsonResponse({ + 'per_page': pagesize, + 'current_page': page, + 'last_page': paginator.num_pages, + 'data': songs_dict, + }) - cache_key = '|'.join(request.POST.get(k) for k in ('all', 'uploader', 'pagesize', 'page')) - songs_dict, paginator = caches['song_search'].get_or_set(cache_key, search_songs, 60*60*2) - - return JsonResponse({ - 'per_page': pagesize, - 'current_page': page, - 'last_page': paginator.num_pages, - 'data': songs_dict - }) + cache_key = '|'.join(request.POST.get(k, '') for k in ('all', 'uploader', 'pagesize', 'page')) + return caches['song_search'].get_or_set(cache_key, search_songs, 60*60*2) @api_auth_required @@ -277,6 +276,9 @@ def upload(request): song = Song(user=request.user, artist=artists[i], title=titles[i], hash=hash, duration=duration) song.save() + # Clear the search cache + caches['song_search'].clear() + upload_counter.inc() return JsonResponse({'success': True})