From a76575ca83eeecdd7a1c234448337a0925ea0e6f Mon Sep 17 00:00:00 2001 From: vitor-amartins Date: Wed, 11 Oct 2017 20:04:56 -0300 Subject: [PATCH] Improved (un)favorite messages action in the app --- api/views.py | 52 +++++++++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/api/views.py b/api/views.py index 52e58f4..693fb5f 100644 --- a/api/views.py +++ b/api/views.py @@ -480,44 +480,42 @@ class ChatViewset(viewsets.ModelViewSet, LogMixin): def favorite_messages(self, request): username = request.data['email'] favor = request.data['favor'] - message_id = int(request.data['id']) + list_size = int(request.data['list_size']) user = User.objects.get(email = username) - message = get_object_or_404(TalkMessages, id = message_id) + entries = [] + array_ids = [] - response = "" + for i in range(0, list_size): - if favor == "true": - if not ChatFavorites.objects.filter(Q(user = user) & Q(message__id = message_id)).exists(): - #Insert on table - ChatFavorites.objects.create(message = message, user = user) + message_id = int(request.data[str(i)]) - info = {} + message = get_object_or_404(TalkMessages, id = message_id) - info["message"] = "" - info["type"] = "" - info["title"] = "" - info["success"] = True - info["number"] = 1 - info['extra'] = 0 - - response = json.dumps(info) + if favor == "true": + if not ChatFavorites.objects.filter(Q(user = user) & Q(message__id = message_id)).exists(): + entries.append(ChatFavorites(message = message, user = user)) + elif favor == "false": + if ChatFavorites.objects.filter(Q(user = user) & Q(message__id = message_id)).exists(): + array_ids.append(message_id) + if favor == "true": + ChatFavorites.objects.bulk_create(entries) elif favor == "false": - if ChatFavorites.objects.filter(Q(user = user) & Q(message__id = message_id)).exists(): - #Delete row - ChatFavorites.objects.filter(message = message, user = user).delete() + ChatFavorites.objects.filter(message__id__in = (array_ids)).delete() + + response = "" - info = {} + info = {} - info["message"] = "" - info["type"] = "" - info["title"] = "" - info["success"] = True - info["number"] = 1 - info['extra'] = 0 + info["message"] = "" + info["type"] = "" + info["title"] = "" + info["success"] = True + info["number"] = 1 + info['extra'] = 0 - response = json.dumps(info) + response = json.dumps(info) return HttpResponse(response) \ No newline at end of file -- libgit2 0.21.2