deleting tokens
[wolnelektury.git] / src / push / api / views.py
1 from rest_framework import serializers
2 from rest_framework.generics import ListCreateAPIView
3 from rest_framework.permissions import IsAuthenticated
4 from api.utils import never_cache
5 from api.fields import AbsoluteURLField
6 from push import models
7
8
9 class DeviceTokenSerializer(serializers.ModelSerializer):
10     deleted = serializers.BooleanField(default=False, write_only=True)
11
12     class Meta:
13         model = models.DeviceToken
14         fields = ['token', 'created_at', 'updated_at', 'deleted']
15         read_only_fields = ['created_at', 'updated_at']
16
17     def save(self):
18         if self.validated_data['deleted']:
19             self.destroy(self.validated_data)
20         else:
21             return self.create(self.validated_data)
22
23     def create(self, validated_data):
24         return models.DeviceToken.objects.create(
25             user=self.context['request'].user,
26             token=validated_data['token'],
27         )
28
29     def destroy(self, validated_data):
30         models.DeviceToken.objects.filter(
31             user=self.context['request'].user,
32             token=validated_data['token']
33         ).delete()
34
35 @never_cache
36 class DeviceTokensView(ListCreateAPIView):
37     permission_classes = [IsAuthenticated]
38     serializer_class = DeviceTokenSerializer
39
40     def get_queryset(self):
41         return models.DeviceToken.objects.filter(user=self.request.user)