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
9 class DeviceTokenSerializer(serializers.ModelSerializer):
10 deleted = serializers.BooleanField(default=False, write_only=True)
13 model = models.DeviceToken
14 fields = ['token', 'created_at', 'updated_at', 'deleted']
15 read_only_fields = ['created_at', 'updated_at']
18 if self.validated_data['deleted']:
19 self.destroy(self.validated_data)
21 return self.create(self.validated_data)
23 def create(self, validated_data):
24 obj, created = models.DeviceToken.objects.get_or_create(
25 user=self.context['request'].user,
26 token=validated_data['token'],
30 def destroy(self, validated_data):
31 models.DeviceToken.objects.filter(
32 user=self.context['request'].user,
33 token=validated_data['token']
37 class DeviceTokensView(ListCreateAPIView):
38 permission_classes = [IsAuthenticated]
39 serializer_class = DeviceTokenSerializer
41 def get_queryset(self):
42 return models.DeviceToken.objects.filter(user=self.request.user)