From 8faf86c0bada6f1256d0c636d1a22ce72f3eb754 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Sun, 18 Oct 2020 15:45:56 +0200
Subject: [PATCH] Make tags user-specific (DRF does not filter nested
 serializers)

---
 apimail/api/serializers.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/apimail/api/serializers.py b/apimail/api/serializers.py
index c3c7a9cba..115a3dc09 100644
--- a/apimail/api/serializers.py
+++ b/apimail/api/serializers.py
@@ -118,7 +118,7 @@ class UserTagSerializer(serializers.ModelSerializer):
         fields = ['pk', 'user', 'label', 'unicode_symbol', 'variant']
 
     def get_queryset(self):
-        user = self.request.user
+        user = self.context['request'].user
         return UserTag.objects.filter(user=user)
 
 
@@ -126,11 +126,17 @@ class StoredMessageSerializer(serializers.ModelSerializer):
     attachment_files = AttachmentFileSerializer(many=True)
     event_set = EventSerializer(many=True)
     read = serializers.SerializerMethodField()
-    tags = UserTagSerializer(many=True)
+    tags = serializers.SerializerMethodField()
 
     def get_read(self, obj):
         return self.context['request'].user in obj.read_by.all()
 
+    def get_tags(self, obj):
+        return UserTagSerializer(
+            obj.tags.filter(user=self.context['request'].user),
+            many=True
+        ).data
+
     class Meta:
         model = StoredMessage
         fields = ['uuid', 'data', 'datetimestamp', 'attachment_files', 'event_set', 'read', 'tags']
-- 
GitLab