diff options
Diffstat (limited to 'chat_api/serializers.py')
-rw-r--r-- | chat_api/serializers.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/chat_api/serializers.py b/chat_api/serializers.py index 585bb36..15828be 100644 --- a/chat_api/serializers.py +++ b/chat_api/serializers.py | |||
@@ -15,3 +15,41 @@ class GroupSerializer(serializers.ModelSerializer): | |||
15 | model = Group | 15 | model = Group |
16 | fields = '__all__' | 16 | fields = '__all__' |
17 | extra_fields = ('is_mine', ) | 17 | extra_fields = ('is_mine', ) |
18 | |||
19 | class DmSerializer(serializers.ModelSerializer): | ||
20 | is_mine = serializers.SerializerMethodField('_is_mine') | ||
21 | |||
22 | def _is_mine(self, obj): | ||
23 | request = self.context.get('request') | ||
24 | if request: | ||
25 | return request.user == obj.sender | ||
26 | return False | ||
27 | class Meta: | ||
28 | model = Dm | ||
29 | fields = '__all__' | ||
30 | |||
31 | class GmSerializer(serializers.ModelSerializer): | ||
32 | is_mine = serializers.SerializerMethodField('_is_mine') | ||
33 | |||
34 | def _is_mine(self, obj): | ||
35 | request = self.context.get('request') | ||
36 | if request: | ||
37 | return request.user == obj.sender | ||
38 | return False | ||
39 | class Meta: | ||
40 | model = Gm | ||
41 | fields = '__all__' | ||
42 | |||
43 | class GroupMessagesSerializer(serializers.ModelSerializer): | ||
44 | messages = serializers.SerializerMethodField('_messages') | ||
45 | |||
46 | def _messages(self, obj): | ||
47 | request = self.context.get('request') | ||
48 | if request: | ||
49 | gms = GmSerializer(obj.receiver_gm.all(), many=True, read_only=True, context={"request": request}) | ||
50 | return gms.data | ||
51 | return [] | ||
52 | |||
53 | class Meta: | ||
54 | model=Group | ||
55 | fields=('messages', ) | ||